【发布时间】:2017-03-10 18:35:24
【问题描述】:
想想不规则的 3D 形状的表面(即石头)是三角形的。
我有:
- 顶点。
x,y,z每个点的坐标(pointCloud)。 - 面孔。包含有关每个三角形顶点的信息。
- 每个三角形的面积
- 整个形状的体积
根据给定的信息,如何找到整个三角面质心的精确坐标?
【问题讨论】:
-
我的猜测是得到每个三角形的质心,然后平均值会起作用,但必须多加考虑。
想想不规则的 3D 形状的表面(即石头)是三角形的。
我有:
x,y,z每个点的坐标(pointCloud)。根据给定的信息,如何找到整个三角面质心的精确坐标?
【问题讨论】:
您可以通过累加每个三角形质量加权的每个三角形的质心,然后除以总质量来计算曲面的质心。在算法中,这给出了:
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 位于曲面外,该公式也有效,因为曲面外四面体部分的有符号体积完全抵消(如果您喜欢数学,另一种思考算法的方式是将斯托克斯公式应用于体积计算) .
【讨论】:
p4 是什么?是O 还是O 是哪一个? -O = (0,0,0) 是否始终不变? --如果是,为什么如果O为零,为什么要减去其他点? -这里的centroid函数是什么?