diff --git a/rugged-core/src/main/java/org/orekit/rugged/core/dem/SimpleTile.java b/rugged-core/src/main/java/org/orekit/rugged/core/dem/SimpleTile.java index 1bf6f104edde66b5dd42b9a63ccb5ef7f99c5119..7030b1edabeb93903e49019c6e268198c15b16d5 100644 --- a/rugged-core/src/main/java/org/orekit/rugged/core/dem/SimpleTile.java +++ b/rugged-core/src/main/java/org/orekit/rugged/core/dem/SimpleTile.java @@ -183,11 +183,23 @@ public class SimpleTile implements Tile { return elevations[latitudeIndex * getLongitudeColumns() + longitudeIndex]; } + /** {@inheritDoc} */ + @Override + public int getLatitudeIndex(double latitude) { + return (int) FastMath.floor((latitude - minLatitude) / latitudeStep); + } + + /** {@inheritDoc} */ + @Override + public int getLontitudeIndex(double longitude) { + return (int) FastMath.floor((longitude - minLongitude) / longitudeStep); + } + /** {@inheritDoc} */ @Override public Location getLocation(final double latitude, final double longitude) { - final int latitudeIndex = (int) FastMath.floor((latitude - minLatitude) / latitudeStep); - final int longitudeIndex = (int) FastMath.floor((longitude - minLongitude) / longitudeStep); + final int latitudeIndex = getLatitudeIndex(latitude); + final int longitudeIndex = getLontitudeIndex(longitude); if (longitudeIndex < 0) { if (latitudeIndex < 0) { return Location.SOUTH_WEST; diff --git a/rugged-core/src/main/java/org/orekit/rugged/core/dem/Tile.java b/rugged-core/src/main/java/org/orekit/rugged/core/dem/Tile.java index 73972733752df672be1e85334a0af4022ecfba92..c0ab6dcd534b5f3679837df1a06a225eeaa05b10 100644 --- a/rugged-core/src/main/java/org/orekit/rugged/core/dem/Tile.java +++ b/rugged-core/src/main/java/org/orekit/rugged/core/dem/Tile.java @@ -83,6 +83,18 @@ public interface Tile extends UpdatableTile { */ int getLongitudeColumns(); + /** Get the latitude index of a point. + * @param latitude geodetic latitude + * @return latirute index (it may lie outside of the tile!) + */ + int getLatitudeIndex(double latitude); + + /** Get the longitude index of a point. + * @param longitude geodetic latitude + * @return longitude index (it may lie outside of the tile!) + */ + int getLontitudeIndex(double longitude); + /** Get the minimum elevation in the tile. * @return minimum elevation in the tile */