Ich habe zwei objektausgerichtete Begrenzungsrahmen (dh nicht achsenausgerichtet, sie drehen sich mit dem Objekt). Ich würde gerne wissen, ob sich zwei objektausgerichtete Felder überlappen. ( Bearbeiten: Hinweis - Ich verwende einen achsenausgerichteten Begrenzungsrahmen-Test, um entfernte Objekte schnell zu verwerfen. Es spielt also keine Rolle, ob die Quad-Routine etwas langsamer ist. )
Meine Boxen werden als vier x, y Punkte gespeichert. Ich habe nach Antworten gesucht, aber ich kann die Variablennamen und Algorithmen in Beispielen nicht verstehen, um sie auf meinen speziellen Fall anzuwenden.
Kann mir jemand helfen, mir klar und einfach zu zeigen, wie das geht? Vielen Dank. (Die jeweilige Sprache ist nicht wichtig, Pseudocode im C-Stil ist in Ordnung.)
quelle
Der einfachere Weg ist wahrscheinlich, jeden Scheitelpunkt von Feld B gegen jede Seite von Feld A zu testen (berechnen Sie den vorzeichenbehafteten Abstand). Auf diese Weise können Sie jeden Scheitelpunkt als "vor" oder "hinter" dem Segment klassifizieren.
Wenn alle Scheitelpunkte von B als "vor" einem der Segmente von A klassifiziert sind, überlappen sich B und A nicht. sonst tun sie es.
Dies ist etwas kompliziert, so dass Sie möglicherweise einen Leistungsgewinn erzielen, indem Sie zuerst eine Kreis-Kreis-Prüfung durchführen und dabei die Begrenzungskreise der Quadrate verwenden (trivial zu berechnen).
quelle