Algorithm 求具有加权顶点的多边形的质心
我知道如何找到正多边形的质心。这假定多边形的每个部分的权重相同。 但是如何计算失重多边形(可能由气凝胶制成:)的质心,其中每个顶点都有一个权重 我使用直线的意思的简化说明:Algorithm 求具有加权顶点的多边形的质心,algorithm,math,geometry,Algorithm,Math,Geometry,我知道如何找到正多边形的质心。这假定多边形的每个部分的权重相同。 但是如何计算失重多边形(可能由气凝胶制成:)的质心,其中每个顶点都有一个权重 我使用直线的意思的简化说明: 5kg-----------------5kg ^center of gravity 10kg---------------5kg ^center of gravity offset du to weight of vertices 当然,我知道如何在带有加权顶点的直线上计算重心,但
5kg-----------------5kg
^center of gravity
10kg---------------5kg
^center of gravity offset du to weight of vertices
当然,我知道如何在带有加权顶点的直线上计算重心,但如何在带有加权顶点的多边形上计算重心呢
谢谢你的时间 要对所有顶点进行加权平均。假设你的顶点是v1,v2,v3。。。。质量为m1,m2…mn的vn,具有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)
这基本上与你为一条线做的原理相同。公式是:
Mc = ( sum_from_0_to_max(vertices)( m_i * P_i ) / M )
其中,Mc
是质量的中心,m_i
是顶点的质量i
,p_i
是位置,m
是总质量
尝试谷歌搜索“刚体”,我想你会发现很多有用的信息
编辑:
在代码中是这样的:
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;
1) 为每个顶点生成一个向量
2) 将每个向量乘以顶点的权重
3) 向量求和
4) 除以总质量
5) 这就是你的重心 实际上,您可以将其称为质心的定义:)