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

标签 algorithm

<分区>

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

我想知道有哪些可用的方法来实现对象相互交互以及与外部力量交互的物理引擎。例如,我们可以看看愤怒的小鸟,或类似 TIM 的游戏。 .那里有物体在空中“飞行”,相互碰撞和相互作用,并受到重力、风和其他“力”等环境的潜在影响。

我想到的模型是每个对象都有一个对象(作为某个类的对象)和一个与之相关的线程。每个时隙,线程都会将空间中的对象“推进”一些小的 dt。在这种情况下,您可以拥有一个“环境”对象,它可以在空间中获得一个位置,并为您提供环境势所施加的等效力。我无法确切了解对象如何相互作用?

还有,我离我的方向很近吗?这些问题是否有其他解决方案和模型,它们是否更好?我遗漏了什么(我一定遗漏了一些东西)?

最佳答案

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

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

关于algorithm - 创建物理引擎的可能方法有哪些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9606115/

相关文章:

php - 获取数字的类似excel的列名的算法

python - 找到最大化正确多数决定数量的预测子集

algorithm - 寻找 k-MST 的整数 LP 形式化

algorithm - T(n) = 2T(n/2) +O(1) 的时间复杂度是多少

java - 我对代码段的运行时分析是否正确?

java - 这些 BST 算法中哪个更实用?

algorithm - 用绝对差替换两个元素并生成数组中的最小可能元素

c# - 生成施罗德路径

algorithm - Union Find解决旅行商

将区间映射到较小区间的算法