10
votes

Trouver le centroïde d'un polygone avec des sommets pondérés

Je sais comment trouver le centroïde (centre de masse) d'un polygone régulier. Cela suppose que chaque partie du polygone pèse la même chose. Mais comment puis-je calculer le centroïde d'un polygone d'apesanteur (fabriqué peut-être d'Airgel :), où chaque sommet a un poids?

Illustration simplifiée de ce que je veux dire en utilisant la ligne droite: P>

5kg-----------------5kg
           ^center of gravity

10kg---------------5kg
        ^center of gravity offset du to weight of vertices


0 commentaires

3 Réponses :


20
votes

Vous voulez prendre une moyenne pondérée sur tous les sommets. Donc, disent que vos sommets sont V1, V2, V3 .... VN avec des masses M1, M2 ... Mn et avoir des coordonnées X et Y V1X, V1Y, V2X, V2Y, etc. Pour obtenir le centre de la masse (CX, CY) Vous voulez:

cx = (v1x*m1 + v2x*m2 + ... vnx*mn) / (m1 + m2 .... mn) 
cy = (v1y*m1 + v2y*m2 + ... vny*mn) / (m1 + m2 .... mn)


1 commentaires

En fait, vous pouvez appeler cela la définition de centroïde :)



1
votes

La formule serait: xxx

mc est le centre des masses, m_i est la masse du sommet i , p_i la position et m la masse globale.

Essayez de google pour "organes rigides", je suppose que vous allez Trouvez beaucoup d'informations utiles.

EDIT:

en code, ce serait quelque chose comme ceci: xxx


0 commentaires

6
votes

1) génère un vecteur pour chaque sommet

2) Multipliez chaque vecteur pour le poids du sommet

3) Somme les vecteurs

4) diviser pour une masse totale

5) Il y a votre centre de masse!


0 commentaires