簡體   English   中英

找到具有加權頂點的多邊形的質心

[英]Find the centroid of a polygon with weighted vertices

我知道如何找到正多邊形的質心(質心)。 這假設多邊形的每個部分都重量相同。 但是我如何計算失重多邊形的質心(也許是由氣凝膠制成:),每個頂點都有一個重量?

我用直線簡化說明:

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

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

當然,我知道如何計算帶有加權頂點的直線上的重心,但是如何在帶有加權頂點的多邊形上進行計算呢?

謝謝你的時間!

您想要對所有頂點進行加權平均。 所以說你的頂點是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)為每個頂點生成一個向量

2)將每個向量乘以頂點的權重

3)求和向量

4)除以總質量

5)這是你的中心!

公式是:

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM