diff --git a/pom.xml b/pom.xml index 986acccc1bd2731accc37191f02ded37fdc1cbbb..3e180a5ea172f27099d08ba365b80b77e643af31 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.orekit</groupId> <artifactId>rugged</artifactId> - <version>2.1-SNAPSHOT</version> + <version>2.2-SNAPSHOT</version> <packaging>jar</packaging> <name>Rugged</name> <url>https://www.orekit.org/rugged</url> @@ -19,7 +19,7 @@ <!-- COTS version --> - <rugged.orekit.version>9.3</rugged.orekit.version> + <rugged.orekit.version>9.3.1</rugged.orekit.version> <rugged.hipparchus.version>1.4</rugged.hipparchus.version> <rugged.junit.version>4.12</rugged.junit.version> diff --git a/src/changes/changes.xml b/src/changes/changes.xml index b7e3451fcbc4b74c6a0750b4aef18a01ef304c2a..47f72748b0928a4e73db0b7d82d8628517735c55 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -20,11 +20,15 @@ <title>Rugged Changes</title> </properties> <body> - <release version="2.1-SNAPSHOT" date="TBD" description="TTBD"> + <release version="2.2-SNAPSHOT" date="TBD" description="TBD"> + </release> + <release version="2.1" date="2019-03-14" description="This is a minor release. + It adds refraction in inverse location and fixes a few bugs. This version depends + on Orekit 9.3 and Hipparchus 1.4."> <action dev="guylaine" type="update"> Updated dependencies to Orekit 9.3 and Hipparchus 1.4. </action> - <action dev="guylaine" type="fix" issue="376"> + <action dev="luc" type="fix" issue="376"> Direct location may result to a null result in some very rugged region. In Duvenhage algorithm, in the refineIntersection method for the DEM, some rare cases led to no intersection (as a result from SimpleTile.cellIntersection) diff --git a/src/main/java/org/orekit/rugged/refraction/AtmosphericRefraction.java b/src/main/java/org/orekit/rugged/refraction/AtmosphericRefraction.java index b2bf1bc99b0305ff087095c1cdb8e5cecb97724c..16c3c9c42b4f9a903b00e9b02ce833d48dec9a6c 100644 --- a/src/main/java/org/orekit/rugged/refraction/AtmosphericRefraction.java +++ b/src/main/java/org/orekit/rugged/refraction/AtmosphericRefraction.java @@ -37,7 +37,7 @@ public abstract class AtmosphericRefraction { * By default: computation is set up. * @since 2.1 */ - private boolean mustBeComputed = true; + private boolean mustBeComputed; /** The current atmospheric parameters. * @since 2.1 @@ -47,12 +47,12 @@ public abstract class AtmosphericRefraction { /** Bilinear interpolating function for pixel (used by inverse location). * @since 2.1 */ - private BilinearInterpolatingFunction bifPixel = null; + private BilinearInterpolatingFunction bifPixel; /** Bilinear interpolating function of line (used by inverse location). * @since 2.1 */ - private BilinearInterpolatingFunction bifLine = null; + private BilinearInterpolatingFunction bifLine; /** * Default constructor. @@ -60,6 +60,9 @@ public abstract class AtmosphericRefraction { protected AtmosphericRefraction() { // Set up the atmospheric parameters ... with lazy evaluation of the grid (done only if necessary) this.atmosphericParams = new AtmosphericComputationParameters(); + this.mustBeComputed = true; + this.bifPixel = null; + this.bifLine = null; } /** Apply correction to the intersected point with an atmospheric refraction model. @@ -74,23 +77,6 @@ public abstract class AtmosphericRefraction { public abstract NormalizedGeodeticPoint applyCorrection(Vector3D satPos, Vector3D satLos, NormalizedGeodeticPoint rawIntersection, IntersectionAlgorithm algorithm); - /** Apply correction to the intersected point with an atmospheric refraction model, - * using a time optimized algorithm. - * @param lineSensor the line sensor - * @param sensorPixel the sensor pixel (must be defined) - * @param satPos satellite position, in <em>body frame</em> - * @param satLos sensor pixel line of sight, in <em>body frame</em> - * @param rawIntersection intersection point before refraction correction - * @param algorithm intersection algorithm - * @return corrected point with the effect of atmospheric refraction - * {@link org.orekit.rugged.utils.ExtendedEllipsoid#pointAtAltitude(Vector3D, Vector3D, double)} or see - * {@link org.orekit.rugged.intersection.IntersectionAlgorithm#refineIntersection(org.orekit.rugged.utils.ExtendedEllipsoid, Vector3D, Vector3D, NormalizedGeodeticPoint)} - * @since 2.1 - */ - public abstract NormalizedGeodeticPoint applyCorrection(LineSensor lineSensor, SensorPixel sensorPixel, - Vector3D satPos, Vector3D satLos, NormalizedGeodeticPoint rawIntersection, - IntersectionAlgorithm algorithm); - /** Deactivate computation (needed for the inverse location computation). * @since 2.1 */ diff --git a/src/main/java/org/orekit/rugged/refraction/MultiLayerModel.java b/src/main/java/org/orekit/rugged/refraction/MultiLayerModel.java index 547c8ec03d744defdb7144689bfc9e086b0ab88a..2c1f1918896c3c2e8f545848727254d3cb7d80bc 100644 --- a/src/main/java/org/orekit/rugged/refraction/MultiLayerModel.java +++ b/src/main/java/org/orekit/rugged/refraction/MultiLayerModel.java @@ -26,8 +26,6 @@ import org.orekit.bodies.GeodeticPoint; import org.orekit.rugged.errors.RuggedException; import org.orekit.rugged.errors.RuggedMessages; import org.orekit.rugged.intersection.IntersectionAlgorithm; -import org.orekit.rugged.linesensor.LineSensor; -import org.orekit.rugged.linesensor.SensorPixel; import org.orekit.rugged.utils.ExtendedEllipsoid; import org.orekit.rugged.utils.NormalizedGeodeticPoint; @@ -248,17 +246,6 @@ public class MultiLayerModel extends AtmosphericRefraction { return algorithm.refineIntersection(ellipsoid, pos, los, rawIntersection); } - /** {@inheritDoc} */ - @Override - public NormalizedGeodeticPoint applyCorrection(final LineSensor lineSensor, final SensorPixel sensorPixel, - final Vector3D satPos, final Vector3D satLos, - final NormalizedGeodeticPoint rawIntersection, - final IntersectionAlgorithm algorithm) { - - // TODO to be done - throw new RuggedException(RuggedMessages.UNINITIALIZED_CONTEXT, "Atmospheric optimization for direct loc"); - } - } // end of class MultiLayerModel /** Container for the (position, LOS) of the intersection with the lowest atmospheric layer. diff --git a/src/site/markdown/downloads.md b/src/site/markdown/downloads.md index 448dd956f826ba54fd028e860ff8b54621207032..d955d8430634d4a80134f6f1ae7f707d78bdaacc 100644 --- a/src/site/markdown/downloads.md +++ b/src/site/markdown/downloads.md @@ -44,6 +44,12 @@ internal mechanism will download automatically all artifacts and dependencies as required. +| package | link | +|----------|-----------------------------------------------------------------------------------------------------------| +| source | [`rugged-2.1-sources.zip`](https://gitlab.orekit.org/orekit/rugged/uploads/a8ed096b6e9b5d1088ad135ac29fce9d/rugged-2.1-sources.zip) | +| binary | [`rugged-2.1.jar`](https://gitlab.orekit.org/orekit/rugged/uploads/4b9041f962ed8cd3b55164873bb5c861/rugged-2.1.jar) | +version 2.1 downloads (release date: 2019-03-14) + | package | link | |----------|-----------------------------------------------------------------------------------------------------------| | source | [`rugged-2.0-sources.zip`](https://gitlab.orekit.org/orekit/rugged/uploads/f7f30111d4d3cef19636cb7c504530dd/rugged-2.0-sources.zip) | diff --git a/src/test/java/org/orekit/rugged/intersection/AbstractAlgorithmTest.java b/src/test/java/org/orekit/rugged/intersection/AbstractAlgorithmTest.java index 67eef7ba0960bc48d41b070fecd8eb13ce1c9dea..b7741d2e56195829ff2ecaada0fc60d155f7c846 100644 --- a/src/test/java/org/orekit/rugged/intersection/AbstractAlgorithmTest.java +++ b/src/test/java/org/orekit/rugged/intersection/AbstractAlgorithmTest.java @@ -130,6 +130,8 @@ public abstract class AbstractAlgorithmTest { Vector3D groundP = earth.transform(groundGP); final IntersectionAlgorithm algorithm = createAlgorithm(updater, 8); + Assert.assertEquals( 0.0, algorithm.getElevation(latitude, longitude - 2.0e-5), 1.0e-6); + Assert.assertEquals(120.0, algorithm.getElevation(latitude, longitude + 2.0e-5), 1.0e-6); // preliminary check: the point has been chosen in the spacecraft (YZ) plane Transform earthToSpacecraft = new Transform(state.getDate(),