Frage

Ich brauche die Überlappung (Menge oder ja / nein) zu berechnen, dass zwei Rechtecken machen auf einem speziellen x / y-Gitter. Das Gitter ist 500x500 aber die Seiten und Ecken verbinden (kontinuierlich sind). So ist der nächste Punkt nach 499 0 wird wieder.

In einer früheren Frage, die ich nach einer Möglichkeit gefragt, um den Abstand zwischen zwei Punkten in diesem Raster zu berechnen. Dies erwies sich als der euklidische Abstand sein:

sqrt(min(|x1 - x2|, gridwidth - |x1 - x2|)^2 + min(|y1 - y2|, gridheight - |y1-y2|)^2)

Was ist die gute mathematische Art und Weise der Berechnung, wenn zwei Rechtecken (durch einen Punkt definiert ist (x, y), die Breite und Höhe) in diesem Raster Überlappung?

Rechteck-1 ([x=0,y=0], w=20, h=20) und Rectangle-2 ([x=495,y=0], w=10, h=10) sollte Überlappung haben. Das überlappende Rechteck (nicht wirklich notwendig, aber) soll ([x=0,y=0], w=5, h=10)

War es hilfreich?

Lösung

Zuerst berechnet die X- und Y-Bereich für jedes Rechteck (Weil Sie haben einen Torus Geometrie haben mod es Gridsize).

So, da Ihr Rectangle-1, berechnen:

x1 = x = 0, x2 = x + w = 20
y1 = y = 0, y2 = y + h = 20

Das Gleiche gilt für Rechteck-2:

x3 = 495, x4 = 505 mod 500 = 5
y3 = 0,   y4 = 10

Erstellen Sie die x- und y "Regionen" für jedes Rechteck:

Reactangle-1: x-regions: (0, 20)
              y-regions: (0, 20)

Rectangle-2:  x-regions: (495, 500), (0, 5)
              y-regions: (0, 10)

Wenn eine (beide) x und y Bereiche zwischen den beiden Rechtecke einen Nicht-Nullschnittpunkt haben, dann überlappen Ihre Rechtecke. Hier ist die (0, 20) x-Region Rectangle-1 und die (0, 5) x-Region von Rechteck-2 hat eine Nicht-Null-Kreuzung und tut dies auch den (0, 20) und (0, 10) y -Bereiche.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top