Trovare il centro della geometria dell'oggetto?


37

Dato un insieme di punti 2D o 3D:

Come trovare il centro della geometria di un oggetto?

Secondo la figura seguente, il centro della geometria differisce dal centro della massa se viene calcolato nella forma più semplice, ovvero la densità omogenea della massa. Il problema appare, infatti, nel calcolo di quelli. Comunemente, un approccio consiste nella media delle coordinate X e delle coordinate Y separatamente, ovvero trovare una posizione media rispetto ai punti indicati (qui in 2D). Questo può essere usato come centroide per l'insieme di punti che rappresentano un oggetto. Come mostrato, a causa del vertice extra lungo il bordo inferiore, per un rettangolo semplice il centroide risultante è (0,5,0,4) mentre la risposta corretta è (0,5,0,5) .
Si noti che l'esempio fornito è troppo semplice. Il problema di interesse è tuttavia per le forme complesse in 2D e gli oggetti in 3D per i quali sono disponibili solo le coordinate dei vertici.
A proposito, un modo computazionale efficiente è di interesse.

Solo per dire che ho controllato alcuni collegamenti web come Wikipedia, tuttavia il mio problema attuale è che ci sono gruppi di punti 2D e 3D che desiderano trovare un punto come rappresentativo di quelli. Così il centroide divenne di interesse. I punti sono indicati senza alcuna informazione topologica. Puoi considerarli come nuvole di punti. La dimostrazione qui fornita ha chiarito che la media comunemente conosciuta delle coordinate (vedere ad esempio le Domande e risposte di overflow dello stack ) potrebbe non essere corretta, come mostrato nell'esempio.

inserisci qui la descrizione dell'immagine

Ecco alcune implementazioni per il confronto:

  • aa = risposta accettata di seguito
  • chull = scafo convesso di punti, ovvero il poligono dorato
  • cent = centroide proposto in Wikipedia e discusso in aa come centroide poligonale
  • centl = centroide della polilinea come spiegato in aa

Visivamente, centlsembra più rappresentativo per la geometria data rispetto a cent. Altri due sembrano promettenti qui, ma di solito sono troppo distorti se la dispersione dei punti fosse disomogenea come è un caso normale.
E considera anche che sebbene lo scafo convesso renda il problema ragionevolmente più semplice, tuttavia potrebbe generare bordi troppo lunghi e troppo corti senza alcun posizionamento simmetrico nello spazio, cioè la consapevolezza è necessaria se si fa una media semplice (cioè, senza ponderazione) per entrambi i casi : interi punti (verde) o vertici poligonali dello scafo convesso (blu).

inserisci qui la descrizione dell'immagine

È possibile trovare un'applicazione nella ricerca del rettangolo di area minima per determinati punti? .


Funzionerà? Trovare il centroide di un poligono? (StackOverflow)
blah238,

3
Non sono sicuro di quale sia la tua domanda. Il centro di geometria o (di solito il centroide) può essere diverso dal baricentro (centro di massa). Questo è un fatto ben noto. Inoltre ci sono vari modi per calcolare il centro di una geometria. Vedi: en.wikipedia.org/wiki/Triangle_center , en.wikipedia.org/wiki/Encyclopedia_of_Triangle_Centers & faculty.evansville.edu/ck6/encyclopedia/ETC.html .
Devdatta Tengshe,

1
Per quanto riguarda l'aggiornamento: quando non esiste una topologia, una nuvola di punti è solo una nuvola di punti. La tua figura di un quadrato poligonale non si applica (e il tuo "centroide" di (0,5,0,4) non sembra derivare da alcuna formula standard, tra l'altro: la simmetria sostiene fortemente che qualsiasi punto centrale del quadrato coincida con (0,5 , 0,5), non importa come sia definito). Per alcune idee su come trovare posizioni rappresentative o centrali per nuvole di punti in due e più dimensioni, consultare stats.stackexchange.com/questions/1927 .
whuber

1
@Sviluppatore, ora vedo il tuo punto, il tuo 5 ° punto nella parte inferiore del "rettangolo" (in realtà un poligono) fa sì che una semplice media delle coordinate del vertice produca un baricentro diverso da quello di un poligono, come spiega la risposta di Whuber.
blah238,

1
Aha! Mi mancava completamente quel quinto vertice, anche se avevo cercato qualcosa del genere. Per aiutare i futuri lettori, ho fatto una leggera modifica alla domanda per evidenziarlo. Anche questo è veramente al centro della questione: l'inserimento o l'eliminazione di vertici lungo i bordi cambierà il modo in cui viene rappresentata una poli {linea, gon} , ma non dovrebbe cambiare il calcolo delle sue innate proprietà geometriche. Ecco perché il baricentro dei vertici può avere una relazione quasi arbitraria con i baricentri di un poligono o del suo confine.
whuber

Risposte:


44

Ogni poligono ha almeno quattro "centri" distinti:

  • Il baricentro dei suoi vertici.

  • Il baricentro dei suoi bordi.

  • Il suo baricentro come un poligono.

  • Un "centro" specifico GIS utile per l'etichettatura (di solito calcolato con metodi proprietari non documentati).

(Potrebbero coincidere accidentalmente in casi speciali, ma per i poligoni "generici" sono punti distinti.)

Un "baricentro" in generale è un "centro di massa". I tre tipi differiscono in base alla posizione presunta della massa: o è interamente sui vertici, si sviluppa uniformemente sui bordi o si distribuisce uniformemente nel poligono stesso.

Esistono metodi semplici per calcolare tutti e tre i baricentri. Un approccio si basa sul fatto fondamentale che il baricentro dell'unione disgiunta di due masse è la media ponderata in massa totale dei baricentri. Da ciò otteniamo facilmente quanto segue:

  1. Il baricentro di due vertici (equamente ponderati) è la loro media. Questo si ottiene calcolando la media delle loro coordinate separatamente. Geometricamente, è il punto medio del segmento di linea che unisce i due vertici.

  2. Induttivamente, il baricentro di n vertici (equamente ponderati) si ottiene facendo la media delle loro coordinate separatamente.

  3. Il baricentro di un segmento di linea è il suo punto medio. (Questo è chiaro per simmetria.)

  4. Il baricentro di una polilinea si ottiene trovando i punti medi di ciascun segmento di linea e quindi formando la loro media ponderata usando le lunghezze del segmento come pesi.

    Ad esempio, considera la forma a "L" delineata dai punti (0,0), (6,0), (6,12). Esistono due segmenti: uno di lunghezza 6 con punto medio a ((0 + 0) / 2, (0 + 6) / 2) = (3,0) e un altro di lunghezza 12 con punto medio a ((6 + 6) / 2, (0 + 12) / 2) = (6,6). Le loro coordinate medie ponderate per la lunghezza sono quindi (x, y) con

    x = (6*3 + 12*6) / (6+12) = 5,  y = (6*0 + 12*6) / (6+12) = 4.
    

    Ciò differisce dal baricentro dei tre vertici, che è ((0 + 6 + 6) / 3, (0 + 0 + 12) / 3) = (4,4).

    ( Modifica Come altro esempio, considera la figura nella domanda, che sebbene di forma quadrata, è rappresentata come un pentagono determinato dalla sequenza di punti (0,0), (1 / 2,0), (1,0), (1,1), (0,1). I cinque lati hanno lunghezze 1/2, 1/2, 1, 1, 1 e punti medi (1 / 4,0), (3 / 4,0), (1 , 1/2), (1 / 2,1) e (0,1 / 2), rispettivamente. La loro media ponderata è quindi uguale

    [(1/2)*(1/4, 0) + (1/2)*(3/4, 0) + (1)*(1, 1/2) + (1)*(1/2, 1) + (1)*(0, 1/2)] / (1/2+1/2+1+1+1)
    = (2/4, 2/4) = (0.5, 0.5)
    

    come si potrebbe sperare, anche se il baricentro dei soli vertici (calcolato come nel n. 2 sopra) è (0,5, 0,4).)

  5. Il baricentro di un poligono può essere ottenuto mediante triangolazione per scomporlo in triangoli. Il baricentro di un triangolo-qua-poligono coincide con il baricentro dei suoi vertici. La media ponderata per area di questi baricentri è il baricentro del poligono. Le aree triangolari vengono prontamente calcolate in termini di coordinate del vertice (ad es. In termini di prodotto a cuneo di due lati). Per un'illustrazione di tali calcoli di area, incluso come sfruttare aree firmate (positive o negative), vedere la sezione "Area" nella mia (vecchia) pagina delle note del corso .

    ( Modifica Consideriamo ad esempio il poligono rappresentato nella domanda. Potremmo triangolarlo con triangoli ((0,0), (1 / 2,0), (0,1)) a sinistra, ((0,1), (1 / 2,0), (1,1)) al centro e ((1,1), (1,0), (1 / 2,0)) a destra. Le loro aree sono 1/4 , 1/2, 1/4 rispettivamente e i loro baricentri - ottenuti facendo la media dei loro vertici - sono (1 / 6,1 / 3), (1 / 2,2 / 3) e (5 / 6,1 / 3), rispettivamente. La media ponderata per area di questi baricentri è uguale

    [(1/4)*(1/6,1/3) + (1/2)*(1/2,2/3) + (1/4)*(5/6,1/3)] / (1/4 + 1/2 + 1/4)
    = (12/24, 6/12)
    = (0.5, 0.5)
    

    come dovrebbe, nonostante la presenza di quel quinto vertice lungo il bordo inferiore.)

È evidente che ciascuno di questi metodi è efficiente : richiede un solo passaggio sulla rappresentazione "spaghetti" del poligono, usando (abbastanza poco) tempo costante ad ogni passo. Si noti che in tutti i casi, tranne il primo (di vertici puri), sono necessarie più informazioni di un semplice elenco di coordinate del vertice: è necessario conoscere anche la topologia della figura. Nell'esempio "L", dovevamo sapere che (0,0) era collegato a (6,0) e non a (6,12), per esempio.

Questi sono tutti concetti euclidei. Possono essere estesi alla sfera (o ellissoide) in diversi modi. Uno semplice visualizza le caratteristiche come un complesso simpliciale in tre dimensioni (euclidee), calcola il baricentro appropriato e quindi lo proietta verso l'esterno dal centro dell'ellissoide alla superficie. Ciò non richiede nuovi concetti o formule; devi solo lavorare con una terza coordinata (z) in aggiunta alle prime due coordinate. (Le aree vengono ancora trovate utilizzando lunghezze di prodotti a cuneo.)

Un'altra generalizzazione riconosce che la metrica euclidea - la radice quadrata di una somma di quadrati, secondo Pitagora - può essere cambiata in altre metriche Lp per p> = 1: prendi l'ennesima radice della somma dei poteri pth. Trovare "baricentri" appropriati non è più così semplice, perché le belle proprietà additive sfruttate sopra (i baricentri sono medie ponderate dei baricentri di parti più semplici di una figura) non valgono più in generale. Spesso si devono ottenere soluzioni numeriche approssimative iterative. Potrebbero anche non essere unici.

È possibile definire centri aggiuntivi per vari scopi. I triangoli hanno molti centri diversi che possono generalizzare (in qualche modo) ai poligoni: il centro del circolo circolare, il centro del (alcuni) cerchio massimo, il centro di un'ellisse che delimita l'area minima e altri. Ogni set può essere racchiuso in vari "scafi", come lo scafo convesso, e i centri di quegli scafi ottenuti.

Nota che molti di questi "centri" non si trovano necessariamente all'interno di un poligono. ( Tuttavia, qualsiasi centro ragionevole di un poligono convesso si troverà all'interno).

Questa varietà di approcci e soluzioni indica che si dovrebbe diffidare di un termine generico come "centro della geometria" o semplicemente "centro": potrebbe essere praticamente qualsiasi cosa.


Alla comunità: una risposta così buona da 'whuber' può essere attesa solo per una buona domanda, poiché la mia familiarità con le sue preferenze, quindi, vi dispiacerebbe a tutti votare anche la domanda se la trovaste interessante;)
Sviluppatore

L'ho trovato utile per certi versi, desidero dare qualche volta ad altri contatori informatici come motivazione per rispondere. Contrassegno tuttavia una risposta costruttiva accettabile finora.
Sviluppatore

Puoi spiegare perché le aree vengono ancora trovate utilizzando i prodotti a cuneo su una sfera? L'area del triangolo sferico non sarebbe più appropriata? Il riferimento più vicino (a parte questa eccellente risposta!) Che ho trovato è: jennessent.com/downloads/Graphics_Shapes_Online.pdf - che utilizza aree di triangoli sferici.
Jason Davies,

@Jason Sono incuriosito: come proponi di utilizzare aree triangolari sferiche per calcolare baricentri di caratteristiche sferiche?
whuber

@whuber Il poligono sferico viene scomposto in triangoli sferici e il baricentro di ciascun triangolo viene calcolato facendo la media delle coordinate cartesiane dei suoi vertici. Sto proponendo che il baricentro poligonale sia la media ponderata di questi triangoli, in cui il peso è l' area triangolare sferica , non l'area planare come hai suggerito nella tua risposta (supponendo che comprendo correttamente il prodotto a cuneo).
Jason Davies,
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.