avoid index out of bounds in getGridIndexes; make optimization use its own boundary

This commit is contained in:
d036654 committed 2012-06-12 11:00:19 +02:00
1 parent d97e4e3b45
commit 60d38ddbb7
2 files changed
+8 -7

No files matched your search

@@ -210,13 +210,13 @@ public class RectangularBoundary implements Boundary {
System.out.println(); System.out.println();
} }
System.out.println("Grid Index Test:"); /*System.out.println("Grid Index Test:");
for (int i =0; i<vPoints; i++) { for (int i =0; i<vPoints; i++) {
for (int j=0; j<hPoints; j++) { for (int j=0; j<hPoints; j++) {
System.out.print(""+this.getGridIndex(grid[i][j])+", "); System.out.print(""+this.getGridIndex(grid[i][j])+", ");
} }
System.out.println(); System.out.println();
} }*/
return grid; return grid;
} }
@@ -229,9 +229,10 @@ public class RectangularBoundary implements Boundary {
double sPrd = scX[0]*nvHor[0]+scX[1]*nvHor[1]; double sPrd = scX[0]*nvHor[0]+scX[1]*nvHor[1];
int vIdx = (int) Math.round(scX[0]*nvVrt[0]+scX[1]*nvVrt[1]); int vIdx = Math.min(Math.max(0, (int) Math.round(scX[0]*nvVrt[0]+scX[1]*nvVrt[1])), vPoints-1);
int hIdx = (int) Math.round(sPrd+(hPoints-1)/2.); int hIdx = Math.min(Math.max(0, (int) Math.round(sPrd+(hPoints-1)/2.)), hPoints-1);
//System.out.println("getGridIndex: "+vIdx+","+hIdx+"("+vPoints+","+hPoints+")");
return new Pair<Integer, Integer>(vIdx,hIdx); return new Pair<Integer, Integer>(vIdx,hIdx);
} }
@@ -194,7 +194,7 @@ public class SailingSimulatorImpl implements SailingSimulator {
private Path createDjikstra() { private Path createDjikstra() {
//retrieve simulation parameters //retrieve simulation parameters
Boundary boundary = simulationParameters.getBoundaries(); Boundary boundary = new RectangularBoundary(simulationParameters.getCourse().get(0),simulationParameters.getCourse().get(1));//simulationParameters.getBoundaries();
WindField windField = simulationParameters.getWindField(); WindField windField = simulationParameters.getWindField();
PolarDiagram polarDiagram = simulationParameters.getBoatPolarDiagram(); PolarDiagram polarDiagram = simulationParameters.getBoatPolarDiagram();
Position start = simulationParameters.getCourse().get(0); Position start = simulationParameters.getCourse().get(0);
@@ -318,8 +318,8 @@ public class SailingSimulatorImpl implements SailingSimulator {
@Override @Override
public Map<String, Path> getAllPaths() { public Map<String, Path> getAllPaths() {
Map<String, Path> allPaths = new HashMap<String, Path>(); Map<String, Path> allPaths = new HashMap<String, Path>();
allPaths.put("Dummy", createDummy()); //allPaths.put("Dummy", createDummy());
allPaths.put("Heuristic", createHeuristic()); //allPaths.put("Heuristic", createHeuristic());
allPaths.put("Djikstra", createDjikstra()); allPaths.put("Djikstra", createDjikstra());
return allPaths; return allPaths;
} }