5

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

你可以帮帮我吗

问候。乔治

4

4 回答 4

7

对于音量...

对于每个三角形面,查找其角点。叫他们P,Q,R。
计算这个数量(我称之为“部分体积”)

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

将所有方面的这些加在一起并除以 6。

重要的!从外部看,每个刻面的 P、Q、R 必须按顺时针方向排列。(或者全部逆时针,只要它在所有方面都是一致的。)

如果网格有任何四边形,只需暂时幻化连接一对对角的对角线。这使它成为两个三角形。

实际计算改进:在使用 P、Q 和 R 进行数学运算之前,减去某个“中心”点 C 的坐标。这可以是质心、最小/最大 x、y 和 z 之间的中点,或任何方便的点在网格内部或附近。这有助于最大限度地减少截断错误,从而获得更准确的卷。

于 2009-12-14T01:25:56.693 回答
1

从数值的角度来看,您要实现的目标非常简单,可以简化为计算几个正交。维基百科将提供有关其背后数学的所需信息。

如果您正在寻找开箱即用的体积计算,请查看此条目。至于惯性——形状是不够的,因为你还需要质量分布。

于 2009-09-11T12:39:50.500 回答
0

好吧,这里提供的关于汽车的信息并不多——你应该能够把汽车分解成更简单的形状——你需要的近似程度越高——你可以把它分解成越简单的形状。(如果汽车以某种方式动态生成并且每次都完全不同,这可能会很困难......但我认为这种情况没有任何意义)。

这应该有助于找到各种简单形状的惯性张量:http ://www.gamedev.net/community/forums/topic.asp?topic_id=57001 ,找到球体和立方体之类的体积和类似的东西是很常见的知识,所以我不会打扰链接。

于 2009-09-11T12:37:39.947 回答
0

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

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

于 2009-09-11T13:10:36.543 回答