Gegeben ein Rechteck und einen Punkt mit einer Vektorrichtung zum Rechteck. Wie finde ich den Punkt außerhalb des Rechtecks, der dem betreffenden Punkt am nächsten liegt?
mathematics
geometry
onedayitwillmake
quelle
quelle
Antworten:
Eine Technik, die Sie verwenden könnten, heißt "Ray Casting". Es wird häufig zum Rendern von Grafiken verwendet, verfügt jedoch über andere Anwendungen wie Sichtverbindung (wie Sie es möchten) und Pfadfindung. Im Allgemeinen funktioniert es, indem der Schnittpunkt eines Strahls und eines Objekts gefunden wird. In Ihrem Beispiel ist der Strahl der Vektor für die Richtung des Charakters.
Eine nützliche Referenz für Ray / Objekt-Schnittpunkte (und im Übrigen andere Objekt / Objekt-Schnittpunkte) ist www.realtimerendering.com/intersections.html (siehe unter den Referenzen für ray / aabb und ray / obb).
quelle
Das Rechteck hat vier Seiten. Jede Seite ist ein Liniensegment.
Testen Sie jede der vier Seiten auf Schnittpunkte mit dem Strahl. Verfolgen Sie den nächsten Treffer.
Hier ist ein Code, um herauszufinden, wo auf dem Segment der Strahl trifft:
quelle
Wenn Ihre Box achsenausgerichtet ist, müssen Sie nur jede Koordinatenachse an die Box klemmen, wenn sich der Punkt außerhalb der Box befindet.
Aus RTCD S. 130:
Wenn Sie dies für die x-, y- und z-Achse tun, wird die Achse
point
auf die nächste Wand der Box zugeschlagen, wenn sie sich zunächst außerhalb der Box befindet. Wenn es sich bereits in der Box befindet, wird es in Ruhe gelassen (wo es ist).quelle
Nun, Sie können nur lineare Algebra (genauer gesagt analytische Geometrie) verwenden, um dies zu lösen. Dies hängt davon ab, wie Sie das Rechteck modelliert haben.
Hier ist ein allgemeiner Fall: http://paulbourke.net/geometry/lineline2d/
quelle