Trouver le centre de la géométrie de l'objet?


37

Étant donné un ensemble de points 2D ou 3D:

Comment trouver le centre de géométrie d'un objet?

Selon la figure suivante, le centre de géométrie diffère du centre de masse s'il est calculé sous la forme la plus simple, à savoir une densité de masse homogène. Le problème apparaît, en effet, dans le calcul de ceux-ci. Généralement, une approche consiste à faire la moyenne des coordonnées X et des coordonnées Y séparément, c'est-à-dire à trouver une position moyenne par rapport aux points donnés (ici en 2D). Cela peut être utilisé comme centroïde pour l'ensemble des points représentant un objet. Comme indiqué, en raison du sommet supplémentaire le long du bord inférieur, pour un rectangle simple, le centre de gravité résultant est (0.5,0.4), tandis que la réponse correcte est (0.5,0.5) .
Notez que l'exemple donné est trop simple. Le problème qui nous intéresse concerne toutefois les formes complexes en 2D et les objets en 3D pour lesquels seules les coordonnées des sommets sont disponibles.
BTW, une méthode de calcul efficace est d’intérêt.

Juste pour mentionner que j'ai vérifié certains liens Web tels que ceux de Wikipedia, mais mon problème actuel est qu'il existe un groupe de points 2D et 3D qui souhaitent trouver un point représentatif de ceux-ci. Ainsi centroïde est devenu d'intérêt. Les points sont donnés sans aucune information topologique. Vous pouvez les considérer comme un nuage de points. La démonstration fournie ici indique clairement que la moyenne des coordonnées généralement connue (voir, par exemple, ce Q & A de débordement de pile ) peut être incorrecte, comme indiqué dans l'exemple.

entrez la description de l'image ici

Voici quelques implémentations pour la comparaison:

  • aa = réponse acceptée ci-dessous
  • coque = points de la coque convexe, c’est-à-dire le polygone en or
  • cent = centroïde proposé dans Wikipedia et discuté dans aa comme le centroïde du polygone
  • centl = centroïde de la polyligne comme expliqué dans aa

Visuellement, centlsemble mieux représenter la géométrie donnée que cent. Deux autres semblent prometteurs ici, mais ils sont généralement trop biaisés si la dispersion des points n’est pas homogène, comme c’est le cas habituel.
Et considérez également que, bien que la coque convexe simplifie considérablement le problème, elle peut toutefois générer des arêtes trop longues et trop courtes sans positionnement symétrique dans l'espace, c'est-à-dire qu'une prise de conscience est nécessaire si vous effectuez une moyenne simple (c'est-à-dire sans pondération) : points entiers (vert) ou sommets de polygone à coque convexe (bleu).

entrez la description de l'image ici

Une application pourrait être trouvée dans Trouver un rectangle minimum d’aire pour des points donnés? .


Est-ce que ça va marcher? Trouver le centroïde d'un polygone? (StackOverflow)
blah238

3
Je ne suis pas sûr de votre question. Le centre de géométrie ou (généralement le centre de gravité) peut être différent du barycenter (centre de masse). C'est un fait bien connu. Il existe également différentes façons de calculer le centre d'une géométrie. Voir: en.wikipedia.org/wiki/Triangle_center , en.wikipedia.org/wiki/Encyclopedia_of_Triangle_Centers & faculty.evansville.edu/ck6/encyclopedia/ETC.html .
Devdatta Tengshe le

1
Concernant la mise à jour: en l’absence de topologie, un nuage de points n’est qu’un nuage de points. Votre figure d’un carré polygonale ne s’applique pas (et votre «centroïde» de (0.5,0.4) ne semble pas découler d’une formule standard, à propos: la symétrie plaide fortement pour que tout point central du carré coïncide avec (0.5 , 0.5), peu importe comment il est défini). Pour des idées sur la recherche d'emplacements centraux ou représentatifs pour les nuages ​​de points dans deux dimensions ou plus, veuillez consulter stats.stackexchange.com/questions/1927 .
whuber

1
@Developer, je vois ce que vous dites maintenant, votre 5ème point au bas du "rectangle" (en fait un polygone) permet de calculer une moyenne simple des coordonnées des sommets pour obtenir un barycenter différent de celui d'un polygone, comme l'explique la réponse de Whuber.
blah238

1
Aha! J'ai complètement raté ce cinquième sommet, même si je cherchais une telle chose. Pour aider les futurs lecteurs, j'ai légèrement modifié la question pour le souligner. Cela touche vraiment au cœur du problème: insérer ou supprimer des sommets le long des arêtes changera la manière dont une poly {ligne, gon} est représentée , mais cela ne devrait pas changer le calcul de ses propriétés géométriques innées. C'est pourquoi le barycenter des sommets peut avoir une relation presque arbitraire avec les barycentres d'un polygone ou de sa limite.
whuber

Réponses:


44

Chaque polygone a au minimum quatre "centres" distincts:

  • Le barycenter de ses sommets.

  • Le barycenter de ses bords.

  • Son barycenter en tant que polygone.

  • Un "centre" spécifique au SIG utile pour l'étiquetage (généralement calculé avec des méthodes exclusives non documentées).

(Ils peuvent coïncider accidentellement dans des cas particuliers, mais pour des polygones "génériques", ils constituent des points distincts.)

Un "barycenter" en général est un "centre de masse". Les trois types diffèrent par l'endroit où la masse est présumée localisée: elle se trouve soit entièrement sur les sommets, soit uniformément répartie sur les arêtes, soit uniformément dans tout le polygone lui-même.

Des méthodes simples existent pour calculer les trois barycentres. Une approche repose sur le fait fondamental que le barycentre de l'union disjointe de deux masses est la moyenne pondérée en masse totale des barycentres. On obtient facilement ce qui suit:

  1. Le barycentre de deux sommets (de pondération égale) est leur moyenne. Ceci est obtenu en faisant la moyenne de leurs coordonnées séparément. Géométriquement, c'est le milieu du segment de droite joignant les deux sommets.

  2. Inductivement, le barycenter de n sommets (à pondération égale) est obtenu en faisant la moyenne de leurs coordonnées séparément.

  3. Le centre de gravité d'un segment de droite est son point milieu. (Ceci est clair par symétrie.)

  4. Le barycenter d’une polyligne est obtenu en recherchant les points centraux de chaque segment de ligne, puis en formant leur moyenne pondérée en utilisant les longueurs de segment comme pondérations.

    Par exemple, considérons la forme en "L" délimitée par les points (0,0), (6,0), (6,12). Il existe deux segments: l’un de longueur 6 avec le milieu à ((0 + 0) / 2, (0 + 6) / 2) = (3,0) et l’autre de longueur 12 avec le milieu à ((6 + 6) / 2, (0 + 12) / 2) = (6,6). Leurs coordonnées moyennes pondérées en longueur sont donc (x, y) avec

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

    Cela diffère du barycentre des trois sommets, qui est ((0 + 6 + 6) / 3, (0 + 0 + 12) / 3) = (4,4).

    ( Modifier Comme autre exemple, considérons la figure en question, qui , bien que de forme carrée, est représentée comme un pentagone déterminée par la séquence de points (0,0), (1 / 2,0), (1,0), (1,1), (0,1) .Les cinq côtés ont les longueurs 1/2, 1/2, 1, 1, 1 et les points médians (1 / 4,0), (3 / 4,0), (1 , 1/2), (1 / 2,1) et (0,1 / 2), respectivement, leur moyenne pondérée est égale à

    [(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)
    

    comme on peut l’espérer, même si le barycentre des sommets seul (calculé comme au n ° 2 ci-dessus) est égal à (0.5, 0.4).)

  5. Le barycentre d'un polygone peut être obtenu par triangulation pour le décomposer en triangles. Le barycenter d'un triangle-qua-polygone coïncide avec le barycenter de ses sommets. La moyenne pondérée en fonction de la superficie de ces barycentres est le barycentre du polygone. Les zones de triangle sont facilement calculées en termes de coordonnées de sommet (par exemple, en fonction du produit de coin de deux des côtés). Pour une illustration de tels calculs de surface, y compris comment exploiter des zones signées (positives ou négatives), voir la section "Zone" de la page de mon (ancien) cours .

    ( Edit Considérons le polygone décrit dans la question par exemple. Nous pourrions le trianguler avec des triangles ((0,0), (1 / 2,0), (0,1)) à gauche, ((0,1), (1 / 2,0), (1,1)) au centre et ((1,1), (1,0), (1 / 2,0)) à droite. , 1/2, 1/4 respectivement et leurs barycentres - obtenus en faisant la moyenne de leurs sommets - sont (1/6,1 / 3), (1/2 / 3/3) et (5 / 6,1 / 3), respectivement. La moyenne pondérée en fonction de la surface de ces barycentres est égale à

    [(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)
    

    comme il se doit, malgré la présence de ce cinquième sommet le long du bord inférieur.)

Il est évident que chacune de ces méthodes est efficace : il suffit d’un seul passage sur la représentation "spaghetti" du polygone, en utilisant (relativement peu) le temps constant à chaque étape. Notez que dans tous les cas, sauf le premier (des sommets purs), il faut plus d' informations qu'une simple liste de coordonnées de sommets: vous devez également connaître la topologie de la figure. Dans l'exemple "L", nous avions besoin de savoir que (0,0) était connecté à (6,0) et non à (6,12), par exemple.

Ce sont tous des concepts euclidiens. Ils peuvent être étendus à la sphère (ou à l'ellipsoïde) de plusieurs manières. Un simple considère les caractéristiques comme un complexe simplicial en trois dimensions (euclidiennes), calcule le barycentre approprié, puis le projette vers l'extérieur depuis le centre de l'ellipsoïde. Cela ne nécessite pas de nouveaux concepts ou formules; vous devez uniquement travailler avec une troisième (z) coordonnée en plus des deux premières coordonnées. (On trouve encore des zones en utilisant des longueurs de produits de coin.)

Une autre généralisation reconnaît que la métrique euclidienne - la racine carrée d’une somme de carrés, selon Pythagore - peut être remplacée par une autre métrique de Lp pour p> = 1: vous prenez la racine pth de la somme des pouvoirs. Trouver les "barycentres" appropriés n’est plus aussi simple, car les belles propriétés additives exploitées plus haut (les barycentres sont des moyennes pondérées des barycentres de parties plus simples d’une figure) ne tiennent plus en général. Des solutions numériques approximatives itératives doivent souvent être obtenues. Ils pourraient même ne pas être uniques.

Des centres supplémentaires peuvent être définis à différentes fins. Les triangles ont beaucoup de centres différents qui peuvent se généraliser (quelque peu) aux polygones: le centre du cercle circonscrit, le centre du cercle restreint maximal (certains), le centre de l'ellipse de surface minimale, et les autres. Tout ensemble peut être enfermé dans diverses "coques", telles que la coque convexe et les centres de ces coques obtenues.

Notez que beaucoup de ces "centres" ne sont pas nécessairement situés à l'intérieur d'un polygone. (Cependant, tout centre raisonnable d'un polygone convexe sera situé à l'intérieur de celui-ci.)

Cette variété d'approches et de solutions indique qu'il faut se méfier d'un terme générique tel que "centre de géométrie" ou simplement "centre": cela pourrait être n'importe quoi.


À la communauté: Une réponse aussi satisfaisante de ce genre dans «whuber» ne peut être attendue que pour une bonne question, car je suis familier avec ses préférences, vous voudriez donc que la question soit également votée si vous la trouvez intéressante;)
Développeur

Je l'ai trouvé utile en quelque sorte, souhaitant donner parfois à d'autres interlocuteurs comme motivation pour répondre. Je marque cependant une réponse constructive acceptable jusqu'à présent.
Développeur

Pouvez-vous expliquer pourquoi on trouve encore des zones en utilisant des produits de coin sur une sphère? La zone du triangle sphérique ne serait-elle pas plus appropriée? La référence la plus proche (à part cette excellente réponse!) Que j'ai trouvée est: jennessent.com/downloads/Graphics_Shapes_Online.pdf - qui utilise des zones de triangles sphériques.
Jason Davies

@Jason Je suis intrigué: comment proposez-vous d'utiliser des zones triangulaires sphériques pour calculer les barycentres de caractéristiques sphériques?
whuber

@whuber Le polygone sphérique est décomposé en triangles sphériques et le barycenter de chaque triangle est calculé en faisant la moyenne des coordonnées cartésiennes de ses sommets. Je propose que le polygone barycenter soit la moyenne pondérée de ces triangles, où le poids correspond à la surface du triangle sphérique et non à la surface plane comme vous l'avez suggéré dans votre réponse (en supposant que je comprenne correctement le produit de coin).
Jason Davies
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.