diff --git a/src/main/java/pl/wat/ms4ds/terrain/GeomUtils.java b/src/main/java/pl/wat/ms4ds/terrain/GeomUtils.java index e9230bd..a9ae393 100644 --- a/src/main/java/pl/wat/ms4ds/terrain/GeomUtils.java +++ b/src/main/java/pl/wat/ms4ds/terrain/GeomUtils.java @@ -8,6 +8,40 @@ public class GeomUtils { private static final Logger logger = LoggerFactory.getLogger(GeomUtils.class); + + /** + * Wyznacza indeks sektora położenia badanego punktu o względnych współrzędnych (punkt odniesienia (0, 0)). + * + * @param dx względna współrzędna x badanego punktu + * @param dy względna współrzędna y badanego punktu + * @return indeks sektora z zakresu {0, 1, 2, ..., 7} + */ + public static int sector(int dx, int dy) { + if (0 <= dx && dx < dy) { + return 0; + } + if (0 < dy && dy <= dx) { + return 1; + } + if (-dx < dy && dy <= 0) { + return 2; + } + if (0 < dx && dx <= -dy) { + return 3; + } + if (dy < dx && dx <= 0) { + return 4; + } + if (dx <= dy && dy < 0) { + return 5; + } + if (0 <= dy && dy < -dx) { + return 6; + } + // (-dy <= dx && dx < 0) + return 7; + } + /** *
Wyznacznik macierzy (kwadratowej stopnia 3) * [[p.x, p.y, 1], @@ -882,6 +916,24 @@ public class GeomUtils { // ===================================================================== public static void main(String[] args) { + int se = sector(0, 0); + int sek = sector(0, 9); + sek = sector(2, 6); + sek = sector(4, 4); + sek = sector(5, 2); + sek = sector(7, 0); + sek = sector(5, -2); + sek = sector(5, -5); + sek = sector(2, -5); + sek = sector(0, -5); + sek = sector(-4, -6); + sek = sector(-3, -3); + sek = sector(-5, -1); + sek = sector(-4, 0); + sek = sector(-5, 3); + sek = sector(-4, 4); + sek = sector(-1, 4); + // Coord.Grid[] segments = new Coord.Grid[4]; // segments[0] = new Coord.Grid(1, 1);