我知道如何找到正多边形的质心(质心)。这假设多边形的每个部分都重量相同。 但是我如何计算失重多边形的质心(也许是由气凝胶制成:),每个顶点都有一个重量?
简化说明我的意思是使用直线:
5kg-----------------5kg
^center of gravity
10kg---------------5kg
^center of gravity offset du to weight of vertices
当然,我知道如何计算带有加权顶点的直线上的重心,但是如何在具有加权顶点的多边形上进行重心?
谢谢你的时间!
答案 0 :(得分:17)
您想要对所有顶点进行加权平均。所以说你的顶点是v1,v2,v3 .... vn,质量为m1,m2 ... mn,并且有x和y坐标v1x,v1y,v2x,v2y等然后得到质心(cx,cy)你想要的:
cx = (v1x*m1 + v2x*m2 + ... vnx*mn) / (m1 + m2 .... mn)
cy = (v1y*m1 + v2y*m2 + ... vny*mn) / (m1 + m2 .... mn)
这与你为一条线做的基本相同。
答案 1 :(得分:6)
1)为每个顶点生成一个向量
2)将每个向量乘以顶点的权重
3)求和矢量
4)除以总质量
5)这是你的中心!
答案 2 :(得分:1)
公式为:
Mc = ( sum_from_0_to_max(vertices)( m_i * P_i ) / M )
其中Mc
是质量的中心,m_i
是顶点质量i
,P_i
位置和M
总质量。< / p>
尝试google“僵尸”,我想你会发现很多有用的信息。
编辑:
在代码中它会是这样的:
Vector3D result; // initialized with 0, 0, 0
Vector3D temp; // sum
long sumMasses = 0;
for( Vertex v : vertices ) {
temp += (v.mass * v.position);
sumMasses+=v.mass;
}
result = temp / sumMasses;