一个3D封闭网格车对象的体积

6

我有一个由三角形构成的3D闭合网格汽车对象表面。我想计算它的体积、重心和惯性张量。

你能帮助我吗?

谢谢。 乔治


3
需要打上“作业”标签吗? - Richard Ev
请查看这个现在有最佳答案的问题:https://dev59.com/TXM_5IYBdhLWcg3wXx_Z?rq=1 - Mouloud85
4个回答

7
对于每个三角形面,查找它的角点。将它们称为P、Q和R。
计算这个量(我称之为“部分体积”)。

pv =  PxQyRz + PyQzRx + PzQxRy - PxQzRy - PyQxRz - PzQyRx

将所有面的P、Q和R相加,再除以6。
重要提示!每个面的P、Q和R必须按顺时针方向从外部看排列。(或者全部逆时针,只要对于所有面都是一致的。)
如果网格有任何四边形,只需暂时想象一条对角线连接一对相对的角落。这将使它变成两个三角形。
实用的计算改进:在使用P、Q和R进行数学计算之前,减去某个“中心”点C的坐标。这可以是质心、最小/最大x、y和z之间的中点,或者网格内或附近的任何便捷点。这有助于最小化截断误差,从而获得更准确的体积。

1
从数值的角度来看,你想要实现的目标相当简单,可以简化为计算几个积分。维基百科将提供有关其背后数学的所需信息。
如果您正在寻找开箱即用的体积计算,请查看this entry。 至于惯性——形状并不足够,因为您还需要质量分布。

0

嗯,在这里提供的汽车信息不多 - 你应该能够将汽车分解成更简单的形状 - 所需的近似度越高,你就可以将其分解成更简单的形状。(如果汽车以某种动态生成并且每次完全不同...但我不认为这种情况有任何意义)。

这应该有助于找到各种更简单形状的惯性张量: http://www.gamedev.net/community/forums/topic.asp?topic_id=57001 ,找到球体和立方体等物体的体积和类似事物是相当常见的知识,所以我不会费心去链接它们。


0

我认为是阿基米德发现,如果你把车浸入一定体积的液体中,被排开的液体的体积将与车的体积相同。

虽然我不确定这在这种情况下有什么帮助。在后台运行液体模拟并将网格浸入其中听起来有点过头了。尽管如此,我认为它确实有效,因此可以作为一个(尽管有点无用)答案。 ;^)


1
网格有孔,所以你只能测量网格制成的线的体积;-) - Richard Ev
他特别写道:我有一个由三角形组成的表面构成的3D封闭网格汽车对象。由于它是封闭的,所以不会让液体进入;^) - Toad
6
将网格导出为DXF格式,使用Z-printer打印汽车模型,将其浸泡在水中,然后将位移体积乘以模型的比例因子。很简单! - Coxy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接