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) 这就是你的重心

实际上,您可以将其称为质心的定义:)