【发布时间】:2010-11-27 11:41:25
【问题描述】:
我有一个 3D 封闭网格汽车对象,其表面组成 三角形。我想计算它的体积、体积中心和惯性张量。
你能帮我吗
问候。 乔治
【问题讨论】:
-
是否应该将其标记为“作业”?
-
查看这个现在有最佳答案的问题:stackoverflow.com/questions/1406029/…
我有一个 3D 封闭网格汽车对象,其表面组成 三角形。我想计算它的体积、体积中心和惯性张量。
你能帮我吗
问候。 乔治
【问题讨论】:
对于音量...
对于每个三角形面,查找其角点。叫他们 P、Q、R。
计算这个数量(我称之为“部分体积”)
pv = PxQyRz + PyQzRx + PzQxRy - PxQzRy - PyQxRz - PzQyRx
将所有方面的这些加在一起并除以 6。
重要!从外部看,每个刻面的 P、Q、R 必须按顺时针方向排列。 (或者全部逆时针,只要它在所有方面都是一致的。)
如果网格有任何四边形,只需暂时幻化连接一对对角的对角线。这使它变成了两个三角形。
实际的计算改进:在使用 P、Q 和 R 进行数学运算之前,减去某个“中心”点 C 的坐标。这可以是质心、最小/最大 x、y 和 z 之间的中点,或者网格内部或附近的任何方便点。这有助于最大限度地减少截断错误,从而获得更准确的卷。
【讨论】:
从数值的角度来看,您要实现的目标非常简单,可以简化为计算几个正交。维基百科将提供有关其背后数学的所需信息。
如果您正在寻找开箱即用的体积计算,请查看this entry。 就惯性而言——形状是不够的,你还需要质量分布。
【讨论】:
好吧,这里提供的关于汽车的信息并不多 - 您应该能够将汽车分解成更简单的形状 - 您需要的近似程度越高 - 您可以将其分解成的形状就越简单。 (如果汽车以某种方式动态生成并且每次都完全不同,这可能会很困难......但我认为这种情况没有任何意义)。
这应该有助于找到各种更简单形状的惯性张量:http://www.gamedev.net/community/forums/topic.asp?topic_id=57001,找到体积和诸如球体和立方体之类的东西是相当普遍的知识,所以我不会费心把它联系起来。
【讨论】:
我认为是阿基米德发现,如果你将汽车浸入一定体积的液体中,排出的液体将与汽车的体积相同。
我不确定在这种情况下这会对您有什么帮助。在后台运行液体模拟并将网格浸入其中听起来有点过头了。虽然,我认为它确实有效,因此有资格作为(尽管有点无用)答案。 ;^)
【讨论】: