diff --git a/src/main/java/org/orekit/rugged/intersection/duvenhage/DuvenhageAlgorithm.java b/src/main/java/org/orekit/rugged/intersection/duvenhage/DuvenhageAlgorithm.java index 474dd5f33b4a7240e19115ce41f019898a6e80ed..33c13a4a6375fe1d3a66d3010918ada9849563bb 100644 --- a/src/main/java/org/orekit/rugged/intersection/duvenhage/DuvenhageAlgorithm.java +++ b/src/main/java/org/orekit/rugged/intersection/duvenhage/DuvenhageAlgorithm.java @@ -286,7 +286,10 @@ public class DuvenhageAlgorithm implements IntersectionAlgorithm { cN * entry.getAltitude() + cX * exit.getAltitude(), tile.getMinimumLongitude()); } - final int crossingLat = tile.getFloorLatitudeIndex(crossingGP.getLatitude()); + final int crossingLat = + FastMath.max(0, + FastMath.min(tile.getLatitudeRows() - 1, + tile.getFloorLatitudeIndex(crossingGP.getLatitude()))); // adjust indices as the crossing point is by definition between the sub-tiles final int crossingLonBefore = crossingLon - (entryLon <= exitLon ? 1 : 0); @@ -345,7 +348,10 @@ public class DuvenhageAlgorithm implements IntersectionAlgorithm { cN * entry.getAltitude() + cX * exit.getAltitude(), tile.getMinimumLongitude()); } - final int crossingLon = tile.getFloorLongitudeIndex(crossingGP.getLongitude()); + final int crossingLon = + FastMath.max(0, + FastMath.min(tile.getLongitudeColumns() - 1, + tile.getFloorLongitudeIndex(crossingGP.getLongitude()))); // adjust indices as the crossing point is by definition between the sub-tiles final int crossingLatBefore = crossingLat - (entryLat <= exitLat ? 1 : 0);