Dodanie funkcji wyznaczania sektora względnego położenia punktu w sieci kwadratów.

This commit is contained in:
2026-04-09 14:02:40 +02:00
parent 3beea79a71
commit fd7c244d5f

View File

@@ -8,6 +8,40 @@ public class GeomUtils {
private static final Logger logger = LoggerFactory.getLogger(GeomUtils.class); 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;
}
/** /**
* <p> Wyznacznik macierzy (kwadratowej stopnia 3) * <p> Wyznacznik macierzy (kwadratowej stopnia 3)
* [[p.x, p.y, 1], * [[p.x, p.y, 1],
@@ -882,6 +916,24 @@ public class GeomUtils {
// ===================================================================== // =====================================================================
public static void main(String[] args) { 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]; // Coord.Grid[] segments = new Coord.Grid[4];
// segments[0] = new Coord.Grid(1, 1); // segments[0] = new Coord.Grid(1, 1);