我有一个3D闭合网格车对象,表面有一个组成 三角形。我想计算它的体积,体积中心和惯性张量。
你能帮助我吗
的问候。 乔治
答案 0 :(得分:6)
对于音量......
对于每个三角形面,查找其角点。叫'em P,Q,R。
计算这个数量(我称之为“部分体积”)
pv = PxQyRz + PyQzRx + PzQxRy - PxQzRy - PyQxRz - PzQyRx
为所有方面添加这些并除以6。
重要!从外面看,每个刻面的P,Q,R必须顺时针排列。 (或者所有逆时针方向,只要它对所有方面都一致。)
如果网格有任何四边形,只是暂时幻化连接一对对角的对角线。这使它成为两个三角形。
实际的计算改进:在用P,Q和R进行数学运算之前,减去一些“中心”点C的坐标。这可以是质心,最小值/最大值x,y和z之间的中点,或者网格内部或附近的任何方便点。这有助于最大限度地减少截断错误,从而获得更准确的卷。
答案 1 :(得分:2)
这里用于计算网格体积的演示和代码:
答案 2 :(得分:1)
从数字的角度来看,你想要实现的是非常简单的,并且可以简化为计算少数正交。维基百科将提供有关其背后数学的所需信息。
如果您正在寻找开箱即用的音量计算,请查看this entry。 由于惯性 - 形状不够,因为你还需要分布质量。
答案 3 :(得分:0)
嗯,关于这里提供的汽车没有太多信息 - 你应该能够将汽车分解成更简单的形状 - 你需要的更高程度的近似 - 你可以将更简单的形状分解成。 (如果汽车以某种方式动态生成并且每次都完全不同,这可能会很困难......但我认为这种情况没有任何意义。)
这应该有助于找到各种更简单形状的惯性张量:http://www.gamedev.net/community/forums/topic.asp?topic_id=57001,找到体积和类似球体和立方体之类的东西是非常常见的知识,所以我不会打扰它。
答案 4 :(得分:0)
我认为阿基米德发现如果你将汽车浸入一定量的液体中,那么被置换的液体将与汽车的体积相同。
我不确定在这种情况下这会对你有什么帮助。让液体模拟在后台运行并将网状物浸入其中听起来有点超过顶部。虽然,我认为它确实有效,因此有资格作为(有点无用的)答案。 ; ^)
答案 5 :(得分:0)
Here's执行这些任务的算法的论文和示例代码。
答案 6 :(得分:0)