I know how to find the centroid (center of mass) of a regular polygon. This assumes that every part of the polygon weighs the same. But how do I calculate the centroid of a weightless polygon (made from aerogel perhaps :), where each vertex has a weight?
Simplified illustration of what I mean using straight line:
5kg-----------------5kg
^center of gravity
10kg---------------5kg
^center of gravity offset du to weight of vertices
Of course, I know how to calculate the center of gravity on a straight line with weighted vertices, but how do I do it on a polygon with weighted vertices?
Thanks for your time!
The formula would be:
where
Mc
is the center of the masses,m_i
is the mass of vertexi
,P_i
the position andM
the overall mass.Try to google for "rigid bodies", I guess you will find a lot helpfull information.
Edit:
In code it would be something like this:
You want take a weighted average over all the vertices. So say your vertices are v1, v2, v3 .... vn with masses m1, m2 ...mn and have x and y coordinates v1x, v1y, v2x, v2y etc then to get the center of mass (cx, cy) you want:
It's essentially the same principle as when you do it for a line.
1) Generate a vector for each vertex
2) Multiply each vector for the weight of the vertex
3) Sum the vectors
4) Divide for total mass
5) There's your center of mass!