有哪些可能的方法来创建物理引擎

时间:2012-03-07 17:12:57

标签: algorithm

这是一个回答一个问题的一般性问题,这个问题使我对一般知识感兴趣而不回答特定问题。

我想知道实现物理引擎的可行方法是什么,其中对象彼此之间以及与外部力量相互作用。举个例子,我们可以看看“愤怒的小鸟”或像TIM这样的游戏。有物体在空中“飞行”,相互碰撞和相互作用,并受到环境潜力的影响,如重力,风和其他“力”。

我想到的模型是每个对象都有一个对象(作为某个类的对象)和一个与之相关的线程。每个时间段线程让它“提升”空间中的对象以获得一些小的dt。在这种情况下,您可以拥有一个“环境”对象,该对象可以在空间中获得一个位置,并为您提供由环境潜力应用的等效力。我不能完全得到的是对象如何相互作用?

另外,我是否接近我的方向?是否有针对这些问题的其他解决方案和模型,它们是否更好?我缺少的是什么(我必须遗漏一些东西)?

1 个答案:

答案 0 :(得分:2)

实现通常与您描述的完全不同,这太昂贵了。相反,一切都被简化为矩阵变换。点是由矩阵操作的坐标列表,用于将它们更新到下一个时间间隔。矩阵本身是根据物理学计算的(它们是当时力的线性解,或多或少)。

当你在规模上有很大的差异时(例如,模拟星系中的恒星),事情变得更加复杂。然后,您可以使用更加分层的方法,以便比非关键点更频繁地更新关键点(例如快速移动或更准确地说,强烈加速)点。但即便如此,内存中的表示也是非常抽象的,没有像“每件事物一个对象”那样直接。