diff --git a/BUILDING.txt b/BUILDING.txt index 0b6934e5ef9256c574a9c412ac73077618a669d1..a7ed7280e2825630e3fa3a9318954d3338247672 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -25,13 +25,7 @@ Building with Eclipse: the source tab of the Configure Build Path dialog - set the external libraries to JRE system library (provided by Eclipse), Junit 4.x (provided by Eclipse) orekit (available at Orekit website - https://www.orekit.org/) and Apache Commons Math (available at - Apache Software Foundation commons-math - http://commons.apache.org/proper/commons-math/download_math.cgi + https://www.orekit.org/) and Hipparchus (available at + Hipparchus project downloads page https://www.hipparchus.org/downloads.html) in the libraries tab of the Configure Build Path dialog - - if you want to also build the optional geotiff module, you should - add rugged/geotiff/src/main/java, rugged/geotiff/src/main/resources, - rugged/geotiff/src/test/java, rugged/geotiff/src/test/resources in - the source tab of the Configure Build Path dialog and add the - Apache Commons Imaging library to the external libraries diff --git a/pom.xml b/pom.xml index 11322ced9e1650893162099abeee0307f43f2b0e..4a0be1dd39a7ab58f500a0dd1bdf68b79da689ed 100644 --- a/pom.xml +++ b/pom.xml @@ -37,8 +37,8 @@ <rugged.maven-surefire-report-plugin.version>2.18.1</rugged.maven-surefire-report-plugin.version> <rugged.jgit.buildnumber.version>1.2.8</rugged.jgit.buildnumber.version> <rugged.plantuml.version>7999</rugged.plantuml.version> - <rugged.orekit.version>8.0-SNAPSHOT</rugged.orekit.version> - <rugged.hipparchus.version>1.0-SNAPSHOT</rugged.hipparchus.version> + <rugged.orekit.version>8.0</rugged.orekit.version> + <rugged.hipparchus.version>1.0</rugged.hipparchus.version> <rugged.compiler.source>1.8</rugged.compiler.source> <rugged.compiler.target>1.8</rugged.compiler.target> <rugged.maven-resources-plugin.version>2.7</rugged.maven-resources-plugin.version> @@ -143,20 +143,26 @@ <type>jar</type> <optional>false</optional> </dependency> - <dependency> - <groupId>org.hipparchus</groupId> - <artifactId>hipparchus-core</artifactId> - <version>${rugged.hipparchus.version}</version> - <type>jar</type> - <optional>false</optional> + <groupId>org.hipparchus</groupId> + <artifactId>hipparchus-core</artifactId> + <version>${rugged.hipparchus.version}</version> + <type>jar</type> + <optional>false</optional> </dependency> <dependency> - <groupId>org.hipparchus</groupId> - <artifactId>hipparchus-geometry</artifactId> - <version>${rugged.hipparchus.version}</version> - <type>jar</type> - <optional>false</optional> + <groupId>org.hipparchus</groupId> + <artifactId>hipparchus-geometry</artifactId> + <version>${rugged.hipparchus.version}</version> + <type>jar</type> + <optional>false</optional> + </dependency> + <dependency> + <groupId>org.hipparchus</groupId> + <artifactId>hipparchus-stat</artifactId> + <version>${rugged.hipparchus.version}</version> + <type>jar</type> + <optional>false</optional> </dependency> <dependency> @@ -428,8 +434,8 @@ <configuration> <overview>${basedir}/core/src/main/java/org/orekit/rugged/overview.html</overview> <links> - <link>http://docs.oracle.com/javase/6/docs/api/</link> - <link>http://commons.apache.org/math/javadocs/api-${rugged.apache-commons-math.version}</link> + <link>http://docs.oracle.com/javase/8/docs/api/</link> + <link>https://hipparchus.org/site-hipparchus-${rugged.hipparchus.version}/apidocs/</link> <link>https://www.orekit.org/site-orekit-${rugged.orekit.version}/apidocs/</link> </links> <charset>${project.reporting.outputEncoding}</charset> diff --git a/src/main/java/org/orekit/rugged/api/RuggedBuilder.java b/src/main/java/org/orekit/rugged/api/RuggedBuilder.java index 07cb65b1cb059d47740c85649eb1bd3e6205d0ff..af969352bbce1eab13819e6c3ac346c7d9a0c5a1 100644 --- a/src/main/java/org/orekit/rugged/api/RuggedBuilder.java +++ b/src/main/java/org/orekit/rugged/api/RuggedBuilder.java @@ -30,7 +30,6 @@ import java.util.List; import org.orekit.bodies.OneAxisEllipsoid; import org.orekit.errors.OrekitException; -import org.orekit.errors.PropagationException; import org.orekit.frames.Frame; import org.orekit.frames.FramesFactory; import org.orekit.propagation.Propagator; @@ -747,16 +746,12 @@ public class RuggedBuilder { /** {@inheritDoc} */ @Override public void handleStep(final SpacecraftState currentState, final boolean isLast) - throws PropagationException { - try { - final AbsoluteDate date = currentState.getDate(); - final PVCoordinates pv = currentState.getPVCoordinates(inertialFrame); - final Rotation q = currentState.getAttitude().getRotation(); - positionsVelocities.add(new TimeStampedPVCoordinates(date, pv.getPosition(), pv.getVelocity(), Vector3D.ZERO)); - quaternions.add(new TimeStampedAngularCoordinates(date, q, Vector3D.ZERO, Vector3D.ZERO)); - } catch (OrekitException oe) { - throw new PropagationException(oe); - } + throws OrekitException { + final AbsoluteDate date = currentState.getDate(); + final PVCoordinates pv = currentState.getPVCoordinates(inertialFrame); + final Rotation q = currentState.getAttitude().getRotation(); + positionsVelocities.add(new TimeStampedPVCoordinates(date, pv.getPosition(), pv.getVelocity(), Vector3D.ZERO)); + quaternions.add(new TimeStampedAngularCoordinates(date, q, Vector3D.ZERO, Vector3D.ZERO)); } }); @@ -769,7 +764,7 @@ public class RuggedBuilder { pvFilter, quaternions, interpolationNumber, aFilter); - } catch (PropagationException pe) { + } catch (OrekitException pe) { throw new RuggedException(pe, pe.getSpecifier(), pe.getParts()); } } diff --git a/src/main/java/org/orekit/rugged/errors/RuggedExceptionWrapper.java b/src/main/java/org/orekit/rugged/errors/RuggedExceptionWrapper.java index b8299f94c6638e764d92e7cf3681dace3443b05b..bf0552ea5e939f1eaca69408d7cac7aeae03caad 100644 --- a/src/main/java/org/orekit/rugged/errors/RuggedExceptionWrapper.java +++ b/src/main/java/org/orekit/rugged/errors/RuggedExceptionWrapper.java @@ -19,8 +19,8 @@ package org.orekit.rugged.errors; /** This class allows to wrap {@link RuggedException} instances in {@code RuntimeException}. * <p>Wrapping {@link RuggedException} instances is useful when a low level method throws * one such exception and this method must be called from another one which does not allow - * this exception. Typical examples are propagation methods that are used inside Apache - * Commons optimizers, integrators or solvers.</p> + * this exception. Typical examples are propagation methods that are used inside Hipparchus + * optimizers, integrators or solvers.</p> * <p> * This class is heavily based on Orekit {@link org.orekit.errors.OrekitException}, * which is distributed under the terms of the Apache License V2. diff --git a/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java b/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java index 6a7d884df2034e0be41f58c89cf6e818191c1b9d..5509bebe4edc949a87fc776cea9653bf01a5a0a3 100644 --- a/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java +++ b/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java @@ -192,7 +192,7 @@ public class SensorMeanPlaneCrossing { final SingularValueDecomposition svd = new SingularValueDecomposition(matrix); // extract the left singular vector corresponding to least singular value - // (i.e. last vector since Apache Commons Math returns the values + // (i.e. last vector since Hipparchus returns the values // in non-increasing order) final Vector3D singularVector = new Vector3D(svd.getU().getColumn(2)).normalize(); @@ -362,7 +362,7 @@ public class SensorMeanPlaneCrossing { final PVCoordinates targetPV = new PVCoordinates(target, Vector3D.ZERO); - // we don't use an Apache Commons Math solver here because we are more + // we don't use an Hipparchus solver here because we are more // interested in reducing the number of evaluations than being accurate, // as we know the solution is improved in the second stage of inverse location. // We expect two or three evaluations only. Each new evaluation shows up quickly in diff --git a/src/site/markdown/building.md b/src/site/markdown/building.md index d36d2888318e95c5c63b72fed0198fd32ec95d05..5357438586d73d93345b084ebc0378208d896e0e 100644 --- a/src/site/markdown/building.md +++ b/src/site/markdown/building.md @@ -87,9 +87,9 @@ The simplest way to use Rugged with Eclipse is to follow these steps: in the source tab of the Configure Build Path dialog * set the external libraries to JRE system library (provided by Eclipse), - Junit 4.x (provided by Eclipse), Apache Commons Math (available at - Apache Software Foundation Commons Math - [downloads page](http://commons.apache.org/proper/commons-math/download_math.cgi), + Junit 4.x (provided by Eclipse), Hipparchus (available at + Hipparchus project + [downloads page](https://www.hipparchus.org/downloads.html), and Orekit (available at Orekit [downloads page](https://www.orekit.org/forge/projects/orekit/files) in the libraries tab of the Configure Build Path dialog diff --git a/src/site/markdown/design/overview.md b/src/site/markdown/design/overview.md index a1669a350579b40ef72b5989c857e74bcb8f8342..667087b1f0b497a0a4c6f57ab331f7fb2b9089cd 100644 --- a/src/site/markdown/design/overview.md +++ b/src/site/markdown/design/overview.md @@ -16,14 +16,14 @@ Global architecture ------------------- Rugged is an intermediate level mission-independent library. It relies on -the Orekit library and on the Apache Commons Math library. It is itself +the Orekit library and on the Hipparchus library. It is itself intended to be used from a mission-specific interface by one or more image processing applications.  -The Java platform provides the runtime environment, the Apache Commons -Math library provides the mathematical algorithms (3D geometry, root +The Java platform provides the runtime environment, the Hipparchus +library provides the mathematical algorithms (3D geometry, root solvers ...), the Orekit library provides the space flight dynamics computation (frames transforms, orbits and attitude propagation and interpolation ...). The Rugged library itself provides the algorithms @@ -45,7 +45,7 @@ image processing application and the interface layer, and is limited to very few level functions with few primitive types (raw arrays for pixels or ground coordinates). The Rugged library is developed in the Java language and has full access to the Orekit and -Apache Commons Math libraries. It is designed and developed by space flight dynamics and +Hipparchus libraries. It is designed and developed by space flight dynamics and geometry specialists, with support from the image processing specialists for the API definition. Functional Breakdown diff --git a/src/site/markdown/design/preliminary-design.md b/src/site/markdown/design/preliminary-design.md index 2e26c11f946798eb51602c342d5cc7fab452d02e..06095201b150d3d94a04c6d188b7beecc900871a 100644 --- a/src/site/markdown/design/preliminary-design.md +++ b/src/site/markdown/design/preliminary-design.md @@ -16,7 +16,7 @@ Overview -------- The top level design describes the various libraries and their interactions. The lowest level -corresponding to the Apache Commons Math library is not shown here for clarity. +corresponding to the Hipparchus library is not shown here for clarity. The following sequence and class diagrams show the three most important functions: initialization of the libraries, direct location and inverse location. @@ -90,7 +90,7 @@ The computation is performed in several steps. The line to which the points belo solver taking advantage of the first time derivatives automatically included in Orekit transforms. It can therefore set up a model of the angle between the target point and the mean sensor plane, and therefore compute in only two or three iterations the exact crossing of this plane, and hence the corresponding line number. Then, the position of this -crossing along the line is searched using a general purpose solver available in Apache Commons Math. As all coordinates +crossing along the line is searched using a general purpose solver available in Hipparchus. As all coordinates are already known in spacecraft frame at this stage, no conversions are performed and this solver find the corresponding pixel very fast. The last two steps correspond to fixing accurately the previous results, which can be important when the various pixels in the line sensor do not really form an exact line and therefore when the previous computation which diff --git a/src/site/markdown/design/technical-choices.md b/src/site/markdown/design/technical-choices.md index 8953e5a4aedb31391bc4c03a961eacd73ab49323..75b0e0d7db44516c136903672096f2825d9efd37 100644 --- a/src/site/markdown/design/technical-choices.md +++ b/src/site/markdown/design/technical-choices.md @@ -15,7 +15,7 @@ Earth frames ------------ -As Rugged is built on top of Orekit and Apache Commons Math, all the flight dynamics and +As Rugged is built on top of Orekit and Hipparchus, all the flight dynamics and mathematical computation are delegated to these two libraries and the full accuracy available is used. This implies for example that when computing frames conversions between the inertial frame and the Earth frame, the complete set of IERS Earth Orientation Parameters (EOP) @@ -194,9 +194,9 @@ Both light-time correction and aberration of light correction are applied in the ignored (independently) at user choice. One use case for ignoring these important correction is for validation purposes and comparison with other libraries that do not take this correction into account. This use case is by definition restricted to validation phases and should not apply to operational systems. Another use case for ignoring light-time correction and aberration of light correction occurs -when the effect is explicitely expected to be compensated at a later stage in the image processing chain, most probably using a +when the effect is explicitly expected to be compensated at a later stage in the image processing chain, most probably using a posteriori polynomial models. This use case can occur in operational products. It seems however better to compensate these effects early -as they can be computed to full accuracy with a neglectible computation overhead. +as they can be computed to full accuracy with a negligible computation overhead. Arrival on ellipsoid -------------------- diff --git a/src/site/markdown/downloads.md b/src/site/markdown/downloads.md index 2fe495e8bc85ca36122fb818456cdf7fd1860a30..cf46772590b6526e0be5a7d8ae00a383a705489b 100644 --- a/src/site/markdown/downloads.md +++ b/src/site/markdown/downloads.md @@ -66,20 +66,22 @@ your program: This file contents is: - * leap seconds data up to early 2016, + * leap seconds data up to end of 2016, - * IERS Earth orientation parameters from 1973 to mid 2014 - with predicted date to end 2014 for some parameters (both IAU-1980 and IAU-2000), + * IERS Earth orientation parameters from 1973 to mid 2016 + with predicted date to fall 2016 for some parameters (both IAU-1980 and IAU-2000), - * Marshall Solar Activity Futur Estimation from 1999 to 2014, + * Marshall Solar Activity Futur Estimation from 1999 to mid 2016, * DE 430 planetary ephemerides from 1990 to 2069, - * Eigen 06S gravity field. + * Eigen 06S gravity field, + + * FES 2004 ocean tides model. There are no guarantees that this file will be available indefinitely or that its content will be updated. It should be considered as a simple configuration example. Users are encouraged to set up their own configuration data. -The file is available by following this link: [orekit-data.zip](https://www.orekit.org/forge/attachments/download/584/orekit-data.zip). +The file is available by following this link: [orekit-data.zip](https://www.orekit.org/forge/attachments/download/610/orekit-data.zip). diff --git a/src/site/markdown/faq.md b/src/site/markdown/faq.md index d667ba78111b8629518f973a06497c27e8694d6d..7799c9ac1c1269c411abb25235023f9cea737a51 100644 --- a/src/site/markdown/faq.md +++ b/src/site/markdown/faq.md @@ -44,15 +44,11 @@ Installation ### What are the dependencies for Rugged? -Rugged core relies on the Orekit space flight dynamics library and on -Apache Commons Math mathematical libraries. Both libraries are free +Rugged relies on the Orekit space flight dynamics library and on +Hipparchus mathematical libraries. Both libraries are free software libraries distributed under the terms of the Apache Software License version 2.0. -Rugged aster relies on Rugged core and on Apache Commons imaging libraries. -Both libraries are free software libraries distributed under the terms of -the Apache Software License version 2.0. - Runtime errors -------------- diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md index 1707ec5c4d9a8a5f4864c2f8bd86845c2d084a7b..2fea0defc6f0bc2e01ed90f367d4e4b9146d6e38 100644 --- a/src/site/markdown/index.md +++ b/src/site/markdown/index.md @@ -64,7 +64,7 @@ Features * aberration of light correction (about 20m) * line-of-sight curvature in geodetic coordinates, (0m at nadir, 10m at 30° dive angle, hundreds of meters for skimming los) - * refraction not available in early 2014, but expected to be added soon + * refraction not available in early 2016, but expected to be added soon * not limited to Earth diff --git a/src/site/markdown/tutorials/direct-location.md b/src/site/markdown/tutorials/direct-location.md index bb59fd84139f5deddcb16e764ee6e2ada1664789..8eca894b042d88b7c967706dc4c3b392a0c769e5 100644 --- a/src/site/markdown/tutorials/direct-location.md +++ b/src/site/markdown/tutorials/direct-location.md @@ -41,9 +41,9 @@ pointing towards the Earth and Y is such that X,Y,Z forms a right-handed coordin For this we need the following packages -import org.hipparchus.geometry.euclidean.threed.Rotation; -import org.hipparchus.geometry.euclidean.threed.Vector3D; -import org.hipparchus.util.FastMath; + import org.hipparchus.geometry.euclidean.threed.Rotation; + import org.hipparchus.geometry.euclidean.threed.Vector3D; + import org.hipparchus.util.FastMath; import java.util.ArrayList; import java.util.List; import org.orekit.rugged.los.LOSBuilder; diff --git a/src/site/resources/images/rugged-architecture.png b/src/site/resources/images/rugged-architecture.png index 14fb820aca1fb1fc238887d2093016f40005257a..c498c6cea924226ee93ede1292212fe3f311a598 100644 Binary files a/src/site/resources/images/rugged-architecture.png and b/src/site/resources/images/rugged-architecture.png differ diff --git a/src/site/xdoc/changes.xml b/src/site/xdoc/changes.xml index 6b5001b3bac926035729e54c097daa3b4a930574..5c40148f6ce4c57568620b677ec5dbe6d766c7d9 100644 --- a/src/site/xdoc/changes.xml +++ b/src/site/xdoc/changes.xml @@ -20,6 +20,14 @@ <title>Rugged Changes</title> </properties> <body> + <release version="2.0" date="TBD" description="TTBD"> + <action dev="luc" type="update"> + Updated dependencies to Orekit 8.0 and Hipparchus 1.0. + </action> + <action dev="guylaine" type="update"> + Converted Rugged to use the Hipparchus library. + </action> + </release> <release version="1.0" date="2016-02-10" description="This is the first official release of Rugged. It includes direct and inverse location for push-broom sensors.">