【问题标题】:Calculating inertia for a multi-shape rigid body计算多形刚体的惯性
【发布时间】:2012-11-28 10:14:44
【问题描述】:

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

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

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

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

使用moments of inertia Wikipedia article 上提供的公式计算形状中每个单独多边形的惯性不会有问题。

或在很棒的collision detection & response article 中提供的那些。

但我想知道如何将其与我的对象结构联系起来,我是否只需添加对象形状的所有惯性?这就是另一位作者对calculate the inertia of triangulated polygons 使用的方法,他添加了三角形的所有惯性矩。还是有更多内容?

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

【问题讨论】:

标签: dynamic physics


【解决方案1】:

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

当您连接两个对象时,组合的对象有自己的质心。要计算此组合对象的转动惯量,您需要将各个对象的转动惯量相加,并添加Steiner parallel axis theorem 为每个单独对象提供的偏移项。这个偏移项是物体的质量乘以到复合质心的距离的平方。

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

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

【讨论】:

  • 啊,好吧,所以我帖子最后链接中的文章作者是正确的。不知道“平行轴定理”这个词,谢谢指出。
  • 我明白为什么我需要惯性矩,但不确定如何计算它。惯性值真的很大是正常的吗?我使用了您描述的计算方式,但这给了我巨大的数字。如果我测试一个由一个宽度和高度为 80 的正方形多边形组成的对象,并将其中心放置在对象的中心,则弹出的惯性为:3413333.3333333335。我从物体的面积乘以当前设置为 1 的密度标量来计算我的物体质量。这是正常的结果吗?这似乎是一个巨大的数字。
  • 哦,感谢您提供的物理书籍清单,您说得对,我真的可以使用一本。我的碰撞响应代码目前给了我非常错误的结果
  • @Laurens - 对于宽度 = 高度 = 80、密度 = 1 的正方形,您的值为 3413333:这个数字看起来大约是应该的一半。矩形板通过板中心的质量惯性矩为 m*(h^2+w^2)/12。如果质量 m=ρhw,则变为 ρhw*(h^2+w^2)/12。设置 ρ=1,h=w 产生 I=w^4/6。 2D 土地中的质量惯性矩通常以四次方增长,因此数字会快速增长。
  • 感谢您再次帮助我,您的回答非常清晰有用。事实证明,我将惯性公式转换为代码时犯了一个错误。对于同一个多边形,我现在得到 6826666.666666667,就像你说的那样,这是我之前得到的结果的两倍。所以我认为我的表面积、质量和惯性计算现在是正确的。
【解决方案2】:

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

旋转变得更复杂,你需要找到质心。

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

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

【讨论】:

  • -1:不,您不能只添加它们。即使在 2D 土地上,您也必须担心平行轴定理。
  • 啊,真的。我只考虑线性运动。需要详细说明吗?
  • 您必须考虑质心偏移。想一想当您将点质量与无质量杆连接时会发生什么。无质量杆的质量为零,因此转动惯量为零。点质量关于质心的转动惯量为零,因此仅将物体的转动惯量相加就会产生零。加入平行轴定理偏移量可以得到具有正惯性矩的复合物体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 2011-10-05
  • 2021-06-25
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
相关资源
最近更新 更多