计算多形状刚体的惯性

问题描述 投票:9回答:2

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

我正在为我的游戏引擎编写一个物理库(2d,目前在actionscript3中,但可以轻松转换为基于C的语言)。

我在寻找一个好的公式来计算游戏对象的惯性时遇到问题。

事实是,有许多经过验证的公式可以计算围绕凸多边形质心的惯性,但是我的结构略有不同:我有带有自己局部空间的游戏对象。您可以向该局部空间添加诸如圆形和凸多边形的凸形,以形成复杂的对象。形状本身又具有自己的局部空间。因此共有三层:世界,对象和形状空间。

使用moments of inertia Wikipedia article上提供的公式,可以毫无问题地计算形状中每个多边形的惯性。

或很棒的collision detection & response article中提供的内容。

但是我想知道如何将其与我的对象结构相关联,我是否简单地添加了对象形状的所有惯性?这就是另一位作者在calculate the inertia of triangulated polygons中使用的方法,他将三角形的所有惯性矩相加。还是还有更多?

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

dynamic physics
2个回答
2
投票

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

当连接两个对象时,组合的对象具有其自己的重心。要计算此组合对象的惯性矩,您需要对单个对象的惯性矩求和,并且还需要为每个单个对象加上Steiner parallel axis theorem给出的偏移项。该偏移项是对象的质量乘以到复合质心的距离的平方。

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

关于游戏物理的一本好的初学者书籍可能是有序的。您可以在this question at the gamedev sister site中找到推荐文本的列表。


-1
投票

对于直线运动,您只需添加它们。惯性与质量成正比。将对象的质量相加并计算总和的惯性等效于将其各个惯性相加。

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

阅读牛顿运动定律。如果要编写物理引擎,则需要了解它们。法律本身很短,但要理解这些法律需要更多的背景信息,所以请谷歌搜索。

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

© www.soinside.com 2019 - 2024. All rights reserved.