...
 
Commits (8)
......@@ -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>
......
......@@ -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)
......
......@@ -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
*/
......
......@@ -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.
......
......@@ -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) |
......
......@@ -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(),
......