Heim >Backend-Entwicklung >C++ >Wie stellt man fest, ob sich zwei Rechtecke überlappen?
Bestimmen der Überlappung zwischen Rechtecken:
Ihr erster Ansatz zur Bestimmung der Überlappung zwischen Rechtecken scheint auf einem anderen Algorithmus als dem hier verlinkten zu basieren die Frage. Der bereitgestellte Algorithmus verwendet einen einfacheren Vergleich von Rechteckkoordinaten, wie unten gezeigt:
if (RectA.Left < RectB.Right && RectA.Right > RectB.Left && RectA.Top > RectB.Bottom && RectA.Bottom < RectB.Top) // Assuming Left, Right, Top and Bottom are the coordinates of the rectangles along the X and Y axis
In kartesischen Koordinaten kann diese Bedingung ausgedrückt werden als:
if (RectA.X1 < RectB.X2 && RectA.X2 > RectB.X1 && RectA.Y1 > RectB.Y2 && RectA.Y2 < RectB.Y1)
Beweis durch Widerspruch:
Diese Bedingung basiert auf dem Prinzip des Widerspruchsbeweises. Wenn eine der folgenden Bedingungen zutrifft, können sich die Rechtecke nicht überlappen:
Daher ist die Bedingung für eine Überlappung das Gegenteil davon Bedingungen:
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonWie stellt man fest, ob sich zwei Rechtecke überlappen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!