De Wikipédia :
Le centre de gravité d'un polygone fermé non auto-intersecté défini par n sommets ( x 0 , y 0 ), ( x 1 , y 1 ), ..., ( x n - 1 , y n − 1 ) est le point ( C x , C y ), où
et où A est la zone signée du polygone,
Dans ces formules, les sommets sont supposés être numérotés dans l'ordre de leur occurrence le long du périmètre du polygone. De plus, le sommet ( x n , y n ) est supposé être le même que ( x 0 , y 0 ), ce qui signifie que i + 1 dans le dernier cas doit boucler vers i = 0 . Notez que si les points sont numérotés dans le sens horaire, la zone A , calculée comme ci-dessus, aura un signe négatif; mais les coordonnées du centroïde seront correctes même dans ce cas.
- Étant donné une liste de sommets dans l'ordre (dans le sens horaire ou antihoraire), trouvez le centroïde du polygone fermé non auto-intersecté représenté par les sommets.
- Si cela peut vous aider, vous pouvez supposer que l'entrée est uniquement CW ou CCW uniquement. Dites-le dans votre réponse si vous en avez besoin.
- Les coordonnées ne sont pas obligatoirement des entiers et peuvent contenir des nombres négatifs.
- L'entrée sera toujours valide et contiendra au moins trois sommets.
- Il suffit de gérer les entrées qui correspondent au type de données en virgule flottante natif de votre langue.
- Vous pouvez supposer que les nombres entrés contiendront toujours un point décimal.
- Vous pouvez supposer que les entiers d'entrée se terminent par
.
ou.0
. - Vous pouvez utiliser des nombres complexes pour la saisie.
- La sortie doit être précise au millième près.
Exemples
[(0.,0.), (1.,0.), (1.,1.), (0.,1.)] -> (0.5, 0.5)
[(-15.21,0.8), (10.1,-0.3), (-0.07,23.55)] -> -1.727 8.017
[(-39.00,-55.94), (-56.08,-4.73), (-72.64,12.12), (-31.04,53.58), (-30.36,28.29), (17.96,59.17), (0.00,0.00), (10.00,0.00), (20.00,0.00), (148.63,114.32), (8.06,-41.04), (-41.25,34.43)] -> 5.80104769975, 15.0673812762
Pour voir chaque polygone sur un plan de coordonnées, collez les coordonnées sans les crochets dans le menu "Edition" de cette page .
J'ai confirmé mes résultats en utilisant ce calculateur de points du polygone centroïde , ce qui est affreux. Je n'ai pas pu en trouver un sur lequel vous pouvez saisir tous les sommets à la fois, ou qui n'a pas essayé d'effacer votre -
signe lorsque vous le tapez en premier. Je publierai ma solution Python pour votre usage après que les gens auront eu la chance de répondre.
x
s et y
s met tout le poids dans les sommets au lieu d'être distribué sur le corps. La première fonctionne parce qu'elle est régulière, donc les deux méthodes se retrouvent au centre de symétrie. La seconde fonctionne parce que pour les triangles, les deux méthodes mènent au même point.