2009-07-22 12 views
6

Ich habe folgende geometrische Problem in 2D:2D-Geometrie: Wie überprüfen, ob sich ein Punkt innerhalb eines Winkels ist

i haben einen Punkt, von dem i gegossen unendlich Winkel (2D-cone), das durch ein gegeben Richtung und Winkel. (der Punkt und die Richtung bilden einen Vektor und zu jeder Seite die Hälfte des Winkels bildet den 2D-Kegel)

jetzt möchte ich prüfen, ob ein anderer Punkt in 2D innerhalb dieses Kegels oder außerhalb ist.

Wie kann dies erreicht werden? danke!

+1

in welcher Sprache? – erenon

+0

Ist kein Kegel 3d? –

+1

Sprache sollte nicht wichtig sein; Ich glaube, es ist der Algorithmus, nach dem das OP sucht. –

Antwort

9

Berechnen Sie den Vektor vom Mittelpunkt des Kegels zum Abfragepunkt. Normalisieren Sie den Vektor auf die Länge 1, nehmen Sie den Mittelvektor des Kegels und normalisieren Sie diesen ebenfalls auf die Länge 1.
Nehmen Sie nun das Skalarprodukt zwischen den Vektoren. Das Skalarprodukt zwischen zwei normalisierten Vektoren ist der Kosinus des Winkels zwischen ihnen. Nehmen Sie die Arccos (acos in den meisten Sprachen) des Punktprodukts und Sie erhalten den Winkel. vergleiche diesen Winkel mit dem Kegelwinkel (halber Winkel in deiner Beschreibung). Wenn es niedriger ist, dann ist der fragliche Punkt innerhalb des Kegels.

Dies funktioniert in 2D und 3D.

+0

danke, eigentlich ist das, was ich die ganze Zeit tat, aber ich dachte nur nicht, dass es fertig ist, denn ich erkannte nicht, wo die tatsächliche Position des Punktes berücksichtigt wird. Jetzt macht es Sinn. Vielen Dank! – clamp

1

Berechnen Sie den Winkel der Richtung mit Arcgtg der Richtung. Ziehe den Ursprung vom überprüften Punkt ab. Berechne seinen Winkel (wiederum über den Arkti eines normalisierten Vektors) und prüfe, ob er innerhalb der Winkelgrenzen liegt.

1

Ich würde sagen, der beste Weg ist, den Punkt auf die 2D-Oberfläche senkrecht zur Kegelrichtung 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.

1

Lassen Sie den Vektor vom Ausgangspunkt zum angegebenen Punkt einen Winkel A mit der Normalen, die durch das Zentrum verläuft. Wenn der Winkel A kleiner als der halbe Winkel des Konus ist, liegt er innen außerhalb.

Verwandte Themen