Nehmen wir an, wir haben eine gezackte Form:
Und zwei Kreaturen, die sich entlang der Umrisse bewegen.
Dann glätten wir die Form vollständig, indem wir die Ecken herausziehen.
Wir bekommen das:
Es ist jetzt leicht zu erkennen, dass sich Orange im Uhrzeigersinn und im grünen Uhrzeigersinn bewegt. Wie kann ich feststellen, in welche Richtung sie sich bewegen, ohne die Form zu glätten?
Neues Bild
Antworten:
Zeichne eine Linie bis ins Unendliche und zähle, wie oft du die Form überquerst (gerade oder ungerade), ohne das Segment zu zählen, in dem die Kreatur liegt. Dann überprüfe, ob die Kreatur sich links oder rechts von dieser Linie befindet.
In diesem Beispiel überqueren wir die Form zweimal (also gerade) und gehen nach links. Das Ergebnis ergibt sich unmittelbar aus dieser Tabelle:
Im Pseudocode:
quelle
Dies hängt davon ab, über welche Informationen Sie in Ihrer Formdatenstruktur verfügen. Bei einer Kreatur, die sich im Uhrzeigersinn entlang der Kontur einer Form bewegt, befindet sich das Innere der Form jedoch immer rechts und bei einer Kreatur, die sich im Uhrzeigersinn bewegt, befindet sich das Innere der Form es ist links.
quelle
quelle
Sie müssen wissen, in welche Richtung das Polygon definiert ist und in welche Richtung die Eckpunkte es umgeben.
Wenn Sie das nicht wissen, können Sie es durch Berechnen der Fläche des Polygons herausfinden:
Das Vorzeichen des Ergebnisses (positiv oder negativ) zeigt an, ob es im Uhrzeigersinn oder gegen den Uhrzeigersinn ist. Sie müssen dies versuchen, um herauszufinden, wie es für Sie ist, da es von Ihrem Koordinatensystem abhängt.
Wenn die Form im Uhrzeigersinn ist:
Wenn die Form gegen den Uhrzeigersinn ist:
quelle
Es scheint, dass Trevor diese Frage bereits behandelt hat, aber hier ist meine Lösung:
Berechnen Sie den Bereich, den Ihre Form abdeckt
Wenn Sie die wie oben berechnete Fläche verwenden, können Sie leicht feststellen, ob die Form selbst im Uhrzeigersinn ist oder nicht. Es ist nur im Uhrzeigersinn, wenn der Bereich unter Null liegt.
Überprüfen Sie, ob sich die Objekte auf die gleiche Weise wie die Scheitelpunkte in der Reihenfolge oder in der entgegengesetzten Richtung bewegen.
quelle