9

我想以前可能有人问过这个问题,但我找不到答案。

我正在为我的游戏引擎编写一个物理库(2d,目前在 actionscript3 中,但很容易翻译成基于 C 的语言)。

我很难找到一个好的公式来计算我的游戏对象的惯性。

问题是,有很多经过验证的公式可以计算凸多边形质心周围的惯性,但我的结构略有不同:我有具有自己局部空间的游戏对象。您可以将圆形和凸多边形等凸形添加到此局部空间以形成复杂的对象。形状本身又拥有自己的局部空间。所以有三层:世界,对象和形状空间。

使用惯性矩维基百科文章中提供的公式计算形状中每个单独多边形的惯性,我不会有任何问题。

或在很棒的碰撞检测和响应文章中提供的那些。

但是我想知道如何将它与我的对象结构联系起来,我是否只是简单地添加了对象形状的所有惯性?这就是另一位作家用来计算三角形多边形惯性的方法,他将三角形的所有惯性矩相加。或者还有更多?

我发现整个惯性概念很难理解,因为我没有很强的物理背景。因此,如果有人可以为我提供答案,最好是围绕给定质心的惯性背后的逻辑,我将非常感激。我实际上在我的大学学习 IT - 游戏开发,但令我非常沮丧的是,他们队伍中的老师都没有物理领域的经验。

4

2 回答 2

2

劳伦斯,如果你停留在二维空间中,物理学会简单得多。在二维空间中,旋转用标量描述,旋转阻力(惯性矩)用标量描述,旋转是可加和可交换的。在三维空间中,事情变得多毛(非常多毛)。

当您连接两个对象时,组合对象有自己的质心。要计算这个组合物体的转动惯量,您需要将各个物体的转动惯量相加,并为每个单独的物体添加由施泰纳平行轴定理给出的偏移项。这个偏移项是物体的质量乘以到复合质心的距离的平方。

您需要知道转动惯量的主要原因是您可以模拟对作用在对象上的扭矩的响应。这在二维物理中相当简单。旋转行为类似于牛顿第二定律。您使用 T=Iα 代替 F=ma。(在 3D 空间中,事情再次变得更加复杂。)您需要找到外力和扭矩,求解线性加速度和旋转加速度,然后进行数值积分。

一本关于游戏物理的好的初学者书籍可能是有序的。您可以在 gamedev 姊妹网站上找到此问题中的推荐文本列表。

于 2012-11-28T16:59:55.047 回答
-1

对于线性运动,您可以添加它们。惯性与质量成正比。添加物体的质量并计算总和的惯性相当于添加它们各自的惯性。

对于旋转,它变得更加复杂,您需要找到质心。

阅读牛顿运动定律。如果您正在编写物理引擎,则需要了解它们。法律本身很短,但要理解它们需要更多的上下文,所以请到处搜索。

您应该特别尝试理解这些概念:质量、惯性、力、加速度、动量、速度、动能。它们都是相关的。

于 2012-11-28T16:41:32.477 回答