From fd7c244d5f9b6bead74d5e0e325584462979b4cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaros=C5=82aw=20Rulka?= Date: Thu, 9 Apr 2026 14:02:40 +0200 Subject: [PATCH] =?UTF-8?q?Dodanie=20funkcji=20wyznaczania=20sektora=20wzg?= =?UTF-8?q?l=C4=99dnego=20po=C5=82o=C5=BCenia=20punktu=20w=20sieci=20kwadr?= =?UTF-8?q?at=C3=B3w.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/pl/wat/ms4ds/terrain/GeomUtils.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) 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);