[英]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.