+1 Daumen
1,7k Aufrufe

Aufgabe:

Punkt in sphärischem Polygon


Problem/Ansatz:

Ich habe ein Polygon, welches sich auf einer Kugeloberfläche befindet. Die Koordinaten der Eckpunkte des Polygons sind durch Winkel (Azimut, Elevation) bestimmt. Wie kann ich ermitteln, ob sich ein Punkt (die Sonne) innerhalb dieses Polygons befindet?

Der Ansatz mit dem PiP Test nach Jordan scheitert, da dieser ein Polygon in einer Ebene voraussetzt. Gibt es ein vergleichbares Verfahren auch für Polygone auf einer Kugeloberfläche?

Avatar von

1 Antwort

0 Daumen
 
Beste Antwort

Hallo,

Willkommen in der Mathelounge!

Wenn ein geschlossenes Polygon sich auf einer endlichen(!) Kugeloberfläche befindet, so teilt es diese endliche Fläche auch nur in zwei endliche Flächen. D.h. man muss zunächst definieren, welche von beiden innen und welche außen sein soll. Weiter beschränke ich mich auf ein Polygon, welches sich nicht selbst schneidet (oder berührt).

Mal angenommen, dass die Fläche, die mathematisch positiv umrundet wird, innen ist. Dann wähle einen beliebiegen Großkreis durch den zu prüfenden Punkt \(P\) und wähle eine beliebige Richtung auf diesem Großkreis. Dann berechne vom Punkt ausgehend in der gewählten Richtung den nächsten Schnittpunkt \(S\) mit dem Polygon.

Anschließend berechne das Kreuzprodukt aus der lokalen Richtung des Großkreises und der lokalen Richtung des Polygons in \(S\). Zeigt das Kreuzprodukt vom Mittelpunkt der Kugel weg, so liegt \(P\) innerhalb des Polygons.

Falls es keinen Schnittpunkt gibt oder unendlich viele, so wähle einen neuen Großkreis.

Falls Du dazu noch Fragen hast, so melde Dich bitte.

Gruß Werner

Avatar von 48 k

Bei der ersten Variante sollten die Punkte eigentlich so aussehen:

Screenshot at Jun 18 09-36-58.png
Ich schaue dabei direkt nach Osten aus dem Fenster. Die jeweils oberen Werte sind die aus dem Fenster heraus gemessenen Winkel (horizontal, vertikal) und in Klammern darunter umgerechnet in Azimut, Elevation.

Die Sonne sollte sich mit 109,44 doch aber innerhalb der (hier mit Geraden verbundenen) umrandeten Fläche befinden?


Bei der zweiten Variante sieht das Polygon so aus:

blob.pngHier schaue ich jetzt direkt nach Westen. Oben sind wieder die aus dem Fenster gemessenen Winkel (horizontal, vertikal) und darunter in Klammern die umgerechneten Punkte in Azimut, Elevation.

Auch hier sollte sich die Sonne mit 281, 21.5 doch gerade noch so in der umrandeten Fläche befinden?


Oder hab ich da schon wieder einen Denkfehler drin?

Die Sonne sollte sich mit 109,44 doch aber innerhalb der (hier mit Geraden verbundenen) umrandeten Fläche befinden?

Nein, tut sie nicht! Betrachte dazu den letzten und ersten Punkt im Polygon. Also (170,15) und (10,15). Beide Punkte werden durch einen Großkreis verbunden und nicht durch einen Breitenkreis. D.h. die Projektion dieses Kreissegments auf Deine Ebene (Blick nach Osten) ist keine Gerade, sondern wieder ein Kreis (oder so ähnlich). Und dieser liegt mit der Elevation mittig höher als der Sonnenvektor. Und somit ist letztere draußen.

Schau Dir den kürzesten Flugweg von Rom nach New York an, Er führt nicht(!) über den Breitenkreis von ca. 40° bis 42° sondern an Island vorbei.

Tipp: mehr Zwischenpunkte im Polygon definieren.

Stimmt, du hast Recht! Ich war nur auf die oberen Begrenzungen fixiert (welche als Kreise ja den Bereich noch größer machen) und hab die unteren völlig außer acht gelassen! Manchmal sieht man den Wald vor Bäumen nicht - vielen lieben Dank, dass du es dir noch mal angesehen hast! Da werde ich noch mehr Punkte definieren müssen - das hatte ich ohnehin „später“ vor. Aber jetzt bin ich erst mal eine Woche nicht da und kann erst danach zur Tat schreiten…

Hallo Werner,

Ich wollte mich noch einmal melden und mich recht herzlich bei dir bedanken. Das System funktioniert, ich habe es ja jetzt mehrere Monate getestet.

Danke noch einmal, dass du dich meinem Problem angenommen und mir mit deinem Wissen geholfen hast. Ich weiß das wirklich sehr zu schätzen!

Viele liebe Grüße!

Danke für das Feedback. Es hat mich sehr gefreut, dass Du Dich noch einmal gemeldet hast :-)

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community