Tatsächlich funktionieren die normalen Raytracing- und Wicklungsregelansätze mit einer kleinen Anpassung auf der Oberfläche einer Kugel gut.
Auf der Oberfläche einer Kugel ist eine "gerade Linie" ein großer Kreis und Entfernungen werden in Winkeleinheiten statt in Metern oder Zoll gemessen. Um einen Strahl von einem willkürlichen Punkt auf der Oberfläche der Kugel zu zeichnen, bilden Sie einfach einen großen Kreis durch diesen willkürlichen Punkt und irgendeinen anderen Punkt auf der Oberfläche der Kugel. Um die Mathematik sauber zu halten, wählen Sie einen zweiten Punkt über pi/2 weg von dem Punkt, an dem Sie gerade testen. Wenden Sie die übliche gerade-ungerade Regel auf den Großkreis und Ihr Testpolygon an.
Die Winderegel übersetzt sich auch direkt von geraden Linien in der Ebene zu (Segmenten von) Großkreisen auf einer Kugel.
Sie benötigen jetzt nur Java-Implementierungen von grundlegenden sphärischen Geometrieoperationen. Ich habe diesbezüglich keine Empfehlungen, aber ich denke, das Internet wird helfen. Für die Mathematik starten Sie mit Mathworld. Ein anderer Ansatz wäre, Ihre Punkte und Polygone von der Oberfläche der Kugel auf die Ebene zu projizieren - was die Kartenprojektionen tun - die topologische Beziehung der Innerlichkeit wird durch eine solche Transformation nicht beeinflusst.
Oh, und Sie haben zu entscheiden, was zu tun ist, wenn Ihr Polygon einen großen Kreis beschreibt
Ihre Frage nicht wirklich klar ist: Polygone können (per Definition) nicht gekrümmt sein, so sind Sie statt zu fragen, wie um zu bestimmen, ob ein Punkt auf der Oberfläche einer Kugel ist? Das ist eigentlich einfach: Es ist auf der Oberfläche, wenn der Abstand zum Mittelpunkt der Kugel == der Radius der Kugel ist. –
Ich glaube, er meint, wenn Sie eine Reihe von Punkten auf der Kugel nehmen und eine geschlossene Form zwischen ihnen bilden. Die feineren Punkte darüber, wie man Polygonpunkte in Kanten verbindet, erscheinen mehrdeutig (du kannst sie direkt verbinden und dann auf die Kugel projizieren, vielleicht?) – Akusete
richtig, ein Polygon in meiner Welt ist eine Reihe von Punkten auf der Kugel und ich konstruiere eine geschlossene Form zwischen ihnen – richard