我认为有人可能会问过这个问题,但我找不到答案。
我正在为我的游戏引擎编写物理库(2d,目前在actionscript3中,但很容易翻译成基于C语言)。
我在找到一个好的公式来计算我的游戏对象的惯性时遇到了问题。
事实上,有很多经过验证的公式来计算凸多边形质心周围的惯性,但我的结构略有不同:我有自己的局部空间的游戏对象。您可以将凸形状(如圆形和凸多边形)添加到此局部空间以形成复杂对象。形状本身也有自己的局部空间。所以有三个层次:World,object&形状空间。使用moments of inertia Wikipedia article上提供的公式计算形状中每个单独多边形的惯性没有问题。
或令人敬畏的collision detection & response article中提供的那些。
但是我想知道如何将它与我的对象结构联系起来,我只是简单地添加对象形状的所有惯性吗?这是另一位作家用来calculate the inertia of triangulated polygons的东西,他补充了三角形的所有惯性矩。或者还有更多吗?
我发现这整个惯性概念很难理解,因为我没有强大的物理背景。因此,如果有人能够给我一个答案,最好是在给定质心周围的惯性背后的逻辑,我会非常感激。我实际上是在学习I.T. - 我大学的游戏开发,但令我非常沮丧的是,他们队伍中的老师都没有在物理领域经验丰富。
答案 0 :(得分:2)
连接两个对象时,组合对象有自己的质心。要计算此组合对象的惯性矩,您需要对各个对象的惯性矩求和,并为每个单独对象添加Steiner parallel axis theorem给出的偏移项。此偏移项是对象的质量乘以到复合质心的距离的平方。
您需要知道惯性矩的主要原因是,您可以模拟对作用在物体上的扭矩的响应。这在2D物理学中相当简单。旋转行为类似于牛顿第二定律。而不是F = ma,你使用T =Iα。 (在3D空间中,事情再次变得更加毛躁。)你需要找到外力和扭矩,求解线性加速度和旋转加速度,然后用数字积分。
一本关于游戏物理的好初学者书可能是有序的。您可以在this question at the gamedev sister site中找到推荐文本列表。
答案 1 :(得分:-1)
对于线性运动,您只需添加它们即可。惯性与质量成正比。添加对象的质量并计算总和的惯性等同于添加它们各自的惯性。
旋转它变得更复杂,你需要找到质心。
阅读牛顿的运动定律。如果您正在编写物理引擎,则需要了解它们。法律本身很短,但理解它们需要更多的背景,所以google周围。
你应该特别尝试理解这些概念:质量,惯性,力,加速度,动量,速度,动能。他们都是相关的。