3D 三角面的质心

Centroid of Triangulated Surface in 3D

想想不规则 3D 形状的表面(即石头)是三角形的。

我有:

根据给定的信息,如何找到整个三角面质心的精确坐标?

您可以通过累加每个三角形质量加权的每个三角形的质心,然后最后除以总质量来计算表面的质心。在算法中,这给出:

mg : vector3d <- (0,0,0)
m : real <- 0
For each triangle t 
   m <- m + area(t)
   mg <- mg + area(t) * centroid(t)
End for
Surfacecentroid <- mg / m

其中:

centroid(t) = 1/3 (p1+p2+p3)
area(t) = 1/2 * || cross(p2-p1, p3-p1) ||

现在如果你想要的是曲面包围的体积的质心,算法不同,你需要将体积分解成四面体并累加四面体质心如下:

mg : vector3d <- (0,0,0)
m : real <- 0
For each triangle t = (p1,p2,p3)
   m <- m + signed_volume(O,p1,p2,p3)
   mg <- mg + signed_volume(O,p1,p2,p3) * centroid(O,p1,p2,p3)
End for
volumeCentroid <- (1/m) * mg

其中

   O=(0,0,0) and
   centroid(p1,p2,p3,p4) = 1/4 (p1+p2+p3+p4) 
   signed_volume(p1,p2,p3,p4) = 1/6 * dot(p2-p1, cross(p3-p1, p4-p1))

即使 O 在曲面外,该公式也有效,因为曲面外的四面体部分的有符号体积完全抵消(如果您喜欢数学,另一种思考算法的方法是将 Stokes 公式应用于体积计算)。