In effetti i normali approcci di tracciamento del raggio e di avvolgimento funzionano perfettamente sulla superficie di una sfera, con una piccola regolazione.
Sulla superficie di una sfera una "linea retta" è un grande cerchio e le distanze sono misurate in unità angolari anziché in metri o pollici. Disegnare un raggio da un punto arbitrario sulla superficie della sfera forma semplicemente un grande cerchio attraverso quel punto arbitrario e qualsiasi altro punto sulla superficie della sfera. Per mantenere la matematica pulita, scegli un secondo punto su pi/2 lontano dal punto di cui stai testando la posizione. Applica la solita regola pari-dispari al grande cerchio e al tuo poligono di prova.
La regola di avvolgimento si traduce anche direttamente da linee rette nel piano a (segmenti di) grandi cerchi su una sfera.
Tutto ciò che serve ora sono le implementazioni Java delle operazioni di base della geometria sferica. Non ho alcuna raccomandazione su questo fronte, ma suppongo che Internet ti aiuterà. Per i matematici iniziare con Mathworld.
Un altro approccio sarebbe quello di proiettare punti e poligoni dalla superficie della sfera al piano - che è ciò che fanno le proiezioni cartografiche - la relazione topologica di insidialità non sarà influenzata da tale trasformazione.
Oh, e si dovrà decidere cosa fare se il tuo poligono descrive un grande cerchio
fonte
2010-06-18 13:06:13
tua domanda non è molto chiaro: i poligoni non possono essere curvati (per definizione) in modo da siete invece chiedere come determinare se un punto è sulla superficie di una sfera? In realtà è facile: è in superficie se la distanza dal centro della sfera == il raggio della sfera. –
Credo che intenda se prendi una serie di punti sulla sfera e costruisci una forma chiusa tra loro. I punti più sottili su come connettere i punti poligonali ai bordi sembra ambiguo (puoi collegarli direttamente quindi proiettare sulla sfera, forse?) – Akusete
corretto, un poligono nel mio mondo è una serie di punti sulla sfera e costruisco una forma chiusa tra di loro – richard