diff --git a/core/src/main/java/org/orekit/rugged/api/Rugged.java b/core/src/main/java/org/orekit/rugged/api/Rugged.java index b4779345b6a29afbcbfd8c8fb53043affe0d2aff..74663b2936ae68bf7e930800136eaf5bee2bc7ce 100644 --- a/core/src/main/java/org/orekit/rugged/api/Rugged.java +++ b/core/src/main/java/org/orekit/rugged/api/Rugged.java @@ -67,7 +67,7 @@ public class Rugged { private static final int MAX_EVAL = 50; /** Time step for frames transforms interpolations. */ - private static final double FRAMES_TRANSFORMS_INTERPOLATION_STEP = 0.01; + private static final double FRAMES_TRANSFORMS_INTERPOLATION_STEP = 0.001; /** Reference ellipsoid. */ private final ExtendedEllipsoid ellipsoid; diff --git a/core/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java b/core/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java index 70fb4c3894bc67cfb71704aa1b8c3eb95fa8b319..ac18d6752884c3bcbe31fb87c75ef4ee1c11140d 100644 --- a/core/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java +++ b/core/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java @@ -134,7 +134,7 @@ public class SpacecraftToObservedBody { */ public Transform getScToInertial(final AbsoluteDate date) throws OrekitException { - return intepolate(date, scToInertial); + return interpolate(date, scToInertial); } /** Get transform from inertial frame to observed body frame. @@ -144,7 +144,7 @@ public class SpacecraftToObservedBody { */ public Transform getInertialToBody(final AbsoluteDate date) throws OrekitException { - return intepolate(date, inertialToBody); + return interpolate(date, inertialToBody); } /** Get transform from observed body frame to inertial frame. @@ -154,20 +154,21 @@ public class SpacecraftToObservedBody { */ public Transform getBodyToInertial(final AbsoluteDate date) throws OrekitException { - return intepolate(date, bodyToInertial); + return interpolate(date, bodyToInertial); } /** Interpolate transform. * @param date date of the transform * @param list transforms list to interpolate from - * @return interpolated + * @return interpolated transform * @exception OrekitException if frames cannot be computed at date */ - private Transform intepolate(final AbsoluteDate date, final List<Transform> list) + private Transform interpolate(final AbsoluteDate date, final List<Transform> list) throws OrekitException { - final double s = date.durationFrom(list.get(0).getDate()) / tStep; - final int inf = FastMath.max(0, FastMath.min(list.size() - 2, (int) FastMath.floor(s))); - return Transform.interpolate(date, false, false, list.subList(inf, inf + 2)); + final double s = date.durationFrom(list.get(0).getDate()) / tStep; + final int index = FastMath.max(0, FastMath.min(list.size() - 1, (int) FastMath.rint(s))); + final Transform close = list.get(index); + return close.shiftedBy(date.durationFrom(close.getDate())); } } diff --git a/core/src/test/java/org/orekit/rugged/api/RuggedTest.java b/core/src/test/java/org/orekit/rugged/api/RuggedTest.java index 95e434274d29b7d6ee17ee5aaf9912ac45a0d041..f5f7399b9c1b7f1c26df97e38b4880c604dd0cbc 100644 --- a/core/src/test/java/org/orekit/rugged/api/RuggedTest.java +++ b/core/src/test/java/org/orekit/rugged/api/RuggedTest.java @@ -525,8 +525,8 @@ public class RuggedTest { throws RuggedException, OrekitException, URISyntaxException { long t0 = System.currentTimeMillis(); - int dimension = 1000; - int nbSensors = 5; + int dimension = 2000; + int nbSensors = 3; String path = getClass().getClassLoader().getResource("orekit-data").toURI().getPath(); DataProvidersManager.getInstance().addProvider(new DirectoryCrawler(new File(path))); @@ -586,6 +586,9 @@ public class RuggedTest { for (final LineSensor lineSensor : sensors) { for (int i = 0; i < dimension; ++i) { double latitude = lat0 + (i * delta) / dimension; + if (i %100 == 0) { + System.out.println(lineSensor.getName() + " " + i); + } for (int j = 0; j < dimension; ++j) { double longitude = lon0 + (j * delta) / dimension; SensorPixel sp = rugged.inverseLocalization(lineSensor.getName(), latitude, longitude, 0, dimension);