Calcolo di un centroide poligonale sferico


11

Vorrei un modo generale per calcolare i centroidi per i poligoni su una sfera.

Finora, il miglior riferimento online sembra essere:

Strumenti per grafica e forme di Jeff Jenness.

Il metodo qui descritto suggerisce di scomporre il poligono in più triangoli sferici e calcolare la media dei centroidi triangolari sferici, ponderata dall'area del triangolo sferico.

So che ci sono diversi modi per definire un centroide poligonale sferico, ma sto cercando qualcosa di analogo alle seguenti definizioni per punti e polilinee:

  • Punti : media aritmetica dei vettori cartesiani che rappresentano i punti.
  • Polilinee : media ponderata dei vettori cartesiani che rappresentano i punti medi di ciascun segmento di linea, ponderata dalla lunghezza (sferica) di ciascun segmento.

Sembra una continuazione ragionevole avere i centroidi poligonali definiti come media ponderata della decomposizione triangolare, ponderata per area.

La mia domanda è se il metodo nel riferimento sopra funzionerà indipendentemente dalla decomposizione del triangolo usata. In particolare, menziona la scomposizione in triangoli rispetto a un punto arbitrario, anche esterno al poligono, in modo tale che alcuni triangoli avranno aree negative che contribuiscono a un peso negativo.

Correlati: Come trovare il centro della geometria di un oggetto?

Risposte:


9

Non funzionerà in modo coerente anche quando si eseguono tutte le triangolazioni relative a un singolo punto fisso . Il problema è che i calcoli sferici ed euclidei vengono mescolati senza alcuna considerazione di ciò che potrebbero significare.

Un modo per rendere ovvio questo è considerare un triangolo piuttosto estremo, come quasi la metà di un emisfero. Ad esempio, a partire da (lon, lat) = (-179, 0), corri lungo l'equatore a (0, 0), quindi fino al polo nord a (0, 90), quindi torna all'inizio a (- 179, 0). Questo è un triangolo 90-179-90 che comprende la maggior parte della metà settentrionale dell'emisfero occidentale. Il problema è che i suoi punti finali (mostrati come punti bianchi nella figura) giacciono praticamente su un piano: uno è al polo e gli altri due sono quasi ai lati opposti di esso. Quindi la loro media, proiettata di nuovo sulla sfera (il punto rosso), è quasi al polo - ma questo è circa il più lontano possibile da qualsiasi centro ragionevole:

Grande triangolo sferico

Come altro esempio, triangoliamo un poligono che rappresenta l'emisfero superiore rispetto al suo centro, il Polo Nord. Divideremo sempre l'emisfero occidentale in due metà uguali, ognuna delle quali un triangolo 90-90-90 (evitando così qualsiasi problema con enormi triangoli che si estendono nell'emisfero). L'emisfero orientale, tuttavia, sarà diviso in n semi-lune uguali. I vertici di lune k ( k = 1, 2, ..., n ) hanno coordinate (lon, lat)

((k-1) * 180/n, 0),  (k * 180/n, 0),  (k * 180/n, 90).

Lune per k = 8

Questa figura mostra l'impostazione per k = 8. I punti rossi sono i "centri" dei singoli triangoli calcolati secondo il documento "Strumenti per la grafica e le forme", pagine 65-67.

Facendo i calcoli, trovo che con k = 2, il centro ponderato per area si trova effettivamente al Polo Nord (come sarebbe indicato da considerazioni di simmetria), ma quando n aumenta, il risultato si sposta rapidamente nell'emisfero occidentale e, nel limite, si avvicina ad una latitudine di 89.556 gradi lungo la longitudine -90 gradi. Si tratta di circa 50 chilometri a sud del Polo Nord stesso.

Certo, un errore di +/- 50 chilometri per un poligono che copre 20.000 chilometri è piccolo; la quantità totale di variazione arbitraria dovuta a diverse triangolazioni in questo caso è solo dello 0,5%. Evidentemente gli errori relativi possono essere resi arbitrariamente grandi includendo triangoli negativi (basta aggiungere e sottrarre alcuni triangoli veramente grandi rispetto a un triangolo piccolo). Indipendentemente da ciò, chiunque si stia impegnando a fare calcoli sferici evidentemente sta cercando di evitare errori di proiezione, quindi sono alla ricerca di elevata precisione. Questo metodo di triangolazione non può essere raccomandato.


Hai dimostrato che gli errori possono accumularsi per n di grandi dimensioni, ma non è chiaro che l'approccio sia necessariamente imperfetto. Quale valore di n hai usato per raggiungere il valore limite?
Jason Davies il

Inoltre, grazie mille per aver fatto i calcoli e averlo approfondito. Voglio solo un po 'più di chiarimenti prima di poter risolvere il problema. :)
Jason Davies il

Jason, ho aggiunto un esempio preliminare per darti un po 'di intuizione. Il limite stesso viene rapidamente raggiunto; alcune decine di lune ti daranno diverse cifre significative. Ma il nuovo esempio dovrebbe porre fine ai dubbi persistenti sul fatto che questa triangolazione ponderata faccia qualcosa di ragionevole - tranne che per i piccoli triangoli, in cui è molto meglio fare i calcoli nelle coordinate proiettate in primo luogo. L'unico motivo per eseguire calcoli sferici è quando l'area di analisi è veramente globale, poiché tutte le proiezioni introducono molta distorsione.
whuber

1
Fantastico, grazie. Quindi, se ho capito bene, la semplice media dei vettori cartesiani non risulta in un centroide ragionevole per un triangolo sferico (in particolare quelli di grandi dimensioni come il tuo primo esempio). Studierò metodi migliori, ad esempio per trovare l'intersezione di mediane del grande cerchio.
Jason Davies il

A proposito, spero ancora che un centroide ponderato per area sferica simile al precedente funzionerà. Immagina che a ciascun poligono venga assegnato un volume 3D aggiungendo un vertice all'origine della sfera. Quindi sospendi la sfera con una stringa invisibile collegata alla sua origine e trova un equilibrio stabile. Il centroide è il punto più in basso (è la proiezione del centro di massa sulla superficie sferica). Questo dovrebbe funzionare a parte alcuni casi ambigui, ad esempio una striscia che gira intorno all'equatore, in cui posso semplicemente scegliere un punto sensibile. Felice di discutere in una nuova domanda se pensi che ne valga la pena.
Jason Davies il

3

È una buona idea enumerare le proprietà che il centroide di un poligono dovrebbe avere. Ecco i miei criteri:

(a) È una proprietà dell'interno del poligono (anziché dei vertici o dei bordi). Quindi, dividere un bordo in due inserendo un vertice aggiuntivo non dovrebbe cambiare la posizione del centroide. Si noti che la definizione del centroide di Jenness non riesce su questo criterio, poiché la posizione del centroide dipenderà da come un poligono viene diviso in triangoli.

(b) La perturbazione della forma del poligono di un po 'dovrebbe spostare leggermente il centroide. È necessario qui imporre una restrizione sull'estensione complessiva del poligono (ad esempio, a un singolo emisfero). Senza questa restrizione, è facile costruire casi in cui il centroide oscillerà improvvisamente sul lato opposto della terra con un leggero movimento di un vertice. Questa condizione esclude i metodi che richiedono che il centroide si trovi all'interno del poligono.

(c) Dovrebbe ridursi alla definizione planare di centroide per piccoli poligoni.

Ecco due approcci che soddisfano questi criteri:

(1) Calcola il centroide per il poligono ellissoidale in tre dimensioni e proietta nuovamente sulla superficie dell'ellissoide (lungo un normale verso l'ellissoide). Grande vantaggio: il centroide può essere calcolato rompendo il poligono in forme più semplici.

(2) Il centroide è il punto con una distanza geodetica RMS minima da tutti i punti all'interno del poligono. Vedi Buss e Fillmore, "Medie sferiche e applicazioni a spline sferiche e interpolazione", Transazioni ACM su grafica 20 , 95–126 (2001). Grande vantaggio: il punto risultante non dipende da come la superficie è incorporata in R 3 .

Sfortunatamente, nessuna di queste definizioni è semplice da mettere in pratica. Tuttavia , il primo metodo può essere eseguito semplicemente per una sfera. La migliore area "elementare" da utilizzare è il quadrilatero delimitato da un bordo del poligono, due meridiani attraverso i punti finali del bordo e l'equatore. Il risultato per l'intero poligono comporta la somma dei contributi sui bordi. (È necessario eseguire ulteriori passaggi se il poligono circonda un palo.)

Supponiamo che i punti finali del bordo siano (φ 1 , λ 1 ) e (φ 2 , λ 2 ). Lasciare gli azimut del bordo e degli endpoint di α 1 e α 2 . Supponendo che il raggio della sfera sia 1, l'area del quadrilatero è

  A = α 2 - α 1
      = 2 tan −1 [tan ½ (λ 2 - λ 1 ) sin ½ (φ 2 + φ 1 ) / cos ½ (φ 2 + φ 1 )]

(Questa formula per l'area, dovuta a Bessel, si comporta sostanzialmente meglio numericamente della formula di L'Huilier comunemente usata dell'area di un triangolo.)

I componenti del centroide per questo quadrilatero sono dati da

  2 Unx ⟩ = φ 2 sin (λ 2 - λ 0 ) - φ 1 sin (λ 1 - λ 0 )
  2 Ay ⟩ = cos α 02 - σ 1 ) - (φ 2 cos (λ 2 - λ 0 ) - φ 1 cos (λ 1 - λ 0 ))
  2 Az ⟩ = (λ 2 - λ 1 ) - sin α 02 - σ1 )

dove σ 2 - σ 1 è la lunghezza del bordo, e λ 0 e α 0 sono la longitudine e azimut del bordo dove attraversa l'equatore, e il x ed y assi sono orientati in modo che l'attraversamento dell'equatore è x = 1, y = 0. ( z è l'asse attraverso il polo, ovviamente.)


Puoi spiegare perché la posizione dei centroidi di Jenness dipenderà da come un poligono è diviso in triangoli? So dall'esempio di @ whuber che il calcolo del centroide di Jenness è errato per i triangoli sferici, ma cosa succede se invece viene usato un centroide basato su mediane a triangolo sferico? Questo fallirà ancora?
Jason Davies il

Jenness sostituisce efficacemente il poligono sferico con una serie di triangoli planari e calcola il loro centroide. Chiaramente (?), Il risultato dipenderà dal partizionamento. Fare il calcolo che ho delineato usando i centroidi dei triangoli sferici va bene. Puoi trovare la formula per il centroide in JE Brock, Il tensore di inerzia per un triangolo sferico, J. Applied Mechanics 42, 239 (1975) dx.doi.org/10.1115/1.3423535
cffk,

Ho dato un'altra occhiata al foglio di Brock. La sua formula per il centro di massa di un triangolo sferico prevede una somma sui bordi del triangolo. Può quindi essere banalmente generalizzato da applicare a un poligono (senza la necessità di scomporlo in triangoli).
Cffk,

Ti dispiace fornire anche un riferimento per il calcolo dell'area dovuto a Bessel? Non riesco a trovarlo da nessuna parte, e sono interessato a scrivere una routine di area poligonale sferica veloce (e accurata). Grazie!
Jason Davies il

L'ho trovato e mi sono reso conto che l'hai tradotto in inglese, quindi grazie. :)
Jason Davies il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.