2010-06-18 13 views
7

Come determinare se un punto si trova all'interno o all'esterno di un poligono che si trova sulla superficie della terra?È un punto all'interno o all'esterno di un poligono che si trova sulla superficie di un globo

L'interno del poligono può essere determinato tramite la regola della mano destra, vale a dire. l'interno del poligono si trova sulla tua destra quando cammini attorno al poligono.

Il poligono può

  1. Circle sia pole
  2. Croce del 180 longitudine
  3. coprono più del 50% del globo

Come il mondo è una sfera il normale passaggio dei raggi gli algoritmi non funzionano correttamente.

+0

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. –

+1

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

+0

corretto, un poligono nel mio mondo è una serie di punti sulla sfera e costruisco una forma chiusa tra di loro – richard

risposta

2

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

+1

Non devi decidere nulla se il tuo poligono descrive una grande circonferenza. C'è ancora un interno e un esterno. –

2

Utilizzare aerei anziché raggi. Una "linea" sulla superficie di una sfera definita da due punti è un arco di un grande cerchio (cerchio il cui centro è il centro della sfera) ed è anche contenuto in un piano che contiene quei due punti e il centro della sfera .

Verificare se il punto è "maggiore" o "minore" del piano corrispondente per ciascun lato del "poligono" per determinare su quale lato della "linea" si trova.

+0

Grazie, capisco la teoria di base. Sai di una API Java che fa questo? O da qualche parte posso trovare un algoritmo? – richard

+1

La NASA fornisce un SDK Java open source chiamato WorldWind per applicazioni geospaziali. Potrebbe essere eccessivo per quello che ti serve, ma potrebbe fornire più idee per la tua applicazione. http://worldwind.arc.nasa.gov/java/ – Tansir1

+0

Lo affronterò come un problema di matematica. Trova una formula per un aereo da tre punti sul piano, inserisci il tuo punto nella formula e vedi su quale lato del piano si trova. Mescolare, sciacquare, ripetere. Userei le coordinate xyz, piuttosto che i sistemi di coordinate cilindriche/sferiche, solo perché gli aerei sono più semplici in questo modo. Dato che non ho familiarità con il tuo algoritmo di attraversamento del raggio, non so come adattare questo approccio ad esso, ma sospetto che sia fattibile. – Slartibartfast