diff --git a/src/main/java/org/orekit/rugged/intersection/duvenhage/MinMaxTreeTile.java b/src/main/java/org/orekit/rugged/intersection/duvenhage/MinMaxTreeTile.java index cc44b6e028a2e273f9dc0397782d6458e7bb5fcd..1cda5b8bb4af0a45d9f0f72c0b3564b0ac6ec300 100644 --- a/src/main/java/org/orekit/rugged/intersection/duvenhage/MinMaxTreeTile.java +++ b/src/main/java/org/orekit/rugged/intersection/duvenhage/MinMaxTreeTile.java @@ -178,9 +178,15 @@ public class MinMaxTreeTile extends SimpleTile { final int[] min = locateMin(i, j, level); final int index = min[0] * getLongitudeColumns() + min[1]; DumpManager.dumpTileCell(this, min[0], min[1], raw[index]); - DumpManager.dumpTileCell(this, min[0] + 1, min[1], raw[index + getLongitudeColumns()]); - DumpManager.dumpTileCell(this, min[0], min[1] + 1, raw[index + 1]); - DumpManager.dumpTileCell(this, min[0] + 1, min[1] + 1, raw[index + getLongitudeColumns() + 1]); + if (index + getLongitudeColumns() < raw.length) { + DumpManager.dumpTileCell(this, min[0] + 1, min[1], raw[index + getLongitudeColumns()]); + } + if (index + 1 < raw.length) { + DumpManager.dumpTileCell(this, min[0], min[1] + 1, raw[index + 1]); + } + if (index + getLongitudeColumns() + 1 < raw.length) { + DumpManager.dumpTileCell(this, min[0] + 1, min[1] + 1, raw[index + getLongitudeColumns() + 1]); + } } return minTree[start[level] + levelI * levelC + levelJ]; @@ -232,9 +238,15 @@ public class MinMaxTreeTile extends SimpleTile { final int[] max = locateMax(i, j, level); final int index = max[0] * getLongitudeColumns() + max[1]; DumpManager.dumpTileCell(this, max[0], max[1], raw[index]); - DumpManager.dumpTileCell(this, max[0] + 1, max[1], raw[index + getLongitudeColumns()]); - DumpManager.dumpTileCell(this, max[0], max[1] + 1, raw[index + 1]); - DumpManager.dumpTileCell(this, max[0] + 1, max[1] + 1, raw[index + getLongitudeColumns() + 1]); + if (index + getLongitudeColumns() < raw.length) { + DumpManager.dumpTileCell(this, max[0] + 1, max[1], raw[index + getLongitudeColumns()]); + } + if (index + 1 < raw.length) { + DumpManager.dumpTileCell(this, max[0], max[1] + 1, raw[index + 1]); + } + if (index + getLongitudeColumns() + 1 < raw.length) { + DumpManager.dumpTileCell(this, max[0] + 1, max[1] + 1, raw[index + getLongitudeColumns() + 1]); + } } return maxTree[start[level] + levelI * levelC + levelJ];