Frage

Ich habe das folgende geometrische Problem in 2D:

Ich habe einen Punkt, aus dem ich einen unendlichen Winkel (2D-Kegel) gegossen habe, der durch eine Richtung und einen Winkel gegeben wird. (Der Punkt und die Richtung bilden einen Vektor und auf jede Seite der Hälfte des Winkels bildet das 2D-Kegel)

Jetzt möchte ich überprüfen, ob sich ein weiterer Punkt in 2D in diesem Kegel oder draußen befindet.

Wie kann das erreicht werden? Danke!

War es hilfreich?

Lösung

Berechnen Sie den Vektor vom Zentrum des Kegels zum Abfragestell. Normalisieren Sie den Vektor auf Länge 1, nehmen Sie den mittleren Vektor des Kegels und normalisieren Sie diese auch auf die Länge von 1.
Nehmen Sie nun das Punktprodukt zwischen den Vektoren. Das Punktprodukt zwischen zwei normalisierten Vektoren ist der Cosinus des Winkels zwischen ihnen. Nehmen Sie die Arccos (acos in den meisten Sprachen) des Punktprodukts und Sie erhalten den Winkel. Vergleichen Sie diesen Winkel mit dem Winkel des Kegels (halber Winkel in Ihrer Beschreibung). Wenn es niedriger ist, ist der fragliche Punkt im Kegel.

Dies funktioniert in 2D und 3D.

Andere Tipps

Berechnen Sie den Richtungswinkel unter Verwendung von ARCTG der Richtung. Substract den Ursprung aus dem geprüften Punkt. Berechnen Sie seinen Winkel (erneut über ARCTG eines normalisierten Vektors) und prüfen Sie, ob er innerhalb der Winkelgrenzen liegt.

Ich würde sagen, der beste Weg ist es, den Punkt auf die 2D -Oberfläche senkrecht zur Zapfenrichtung zu projizieren. Dann berechnen Sie den othogonalen Abstand zwischen derselben Ebene und dem Punkt. Schließlich kennen Sie die Breite des Kegels in dieser Höhe, sodass Sie sehen können, ob der Punkt außerhalb dieser Breite liegt.

Lassen Sie den Vektor vom Ursprungspunkt bis zum angegebenen Punkt einen Winkel A mit dem Normalwert machen, der durch das Zentrum verläuft. Wenn der Winkel A kleiner als der halbe Winkel des Kegels ist, liegt er draußen innen.

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