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

Algorithm 创建物理引擎的可能方法有哪些,algorithm,Algorithm,这是一个一般性的问题,是为了回答一个我感兴趣的问题,而不是为了回答一个具体的问题 我想知道有什么方法可以实现一个物理引擎,在这个引擎中,物体相互作用,并与外力相互作用。作为一个例子,我们可以看看愤怒的小鸟,或类似的游戏。有物体在空中“飞行”,相互碰撞和相互作用,并受到重力、风和其他“力”等环境的潜在影响 我考虑的模型是,每个对象都有一个对象(作为某个类的对象)和一个与其相关的线程。每一个时隙,线程都会“前进”空间中的对象一小段时间。在这种情况下,您可以拥有一个“环境”对象,该对象可以在空间中获得

这是一个一般性的问题,是为了回答一个我感兴趣的问题,而不是为了回答一个具体的问题

我想知道有什么方法可以实现一个物理引擎,在这个引擎中,物体相互作用,并与外力相互作用。作为一个例子,我们可以看看愤怒的小鸟,或类似的游戏。有物体在空中“飞行”,相互碰撞和相互作用,并受到重力、风和其他“力”等环境的潜在影响

我考虑的模型是,每个对象都有一个对象(作为某个类的对象)和一个与其相关的线程。每一个时隙,线程都会“前进”空间中的对象一小段时间。在这种情况下,您可以拥有一个“环境”对象,该对象可以在空间中获得一个位置,并提供由环境势施加的等效力。我不能确切地了解对象之间的交互方式


还有,我的方向近了吗?对于这些问题是否有其他解决方案和模型,它们是否更好?我错过了什么(我一定错过了什么)

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


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

描述运动的方程属于机械物理,一旦你理解了向量数学,就变得非常简单了——你所描述的或多或少是游戏引擎的工作原理。至于“对象是如何相互作用的”,听起来像是你在问。我投票决定结束,因为这个问题就像“网站是如何制作的?”——如果不写一本书,或者概括到一个极端,以至于答案没有有用的内容,我真的无法回答。我想要的是概括的答案,我说我对这个问题没有实际用途。虽然我确实了解物理学是如何工作的,以及如何探测两个物体之间的碰撞。我感兴趣的是在所有物体上运行碰撞检测程序的机制,以及有什么可能的方法来管理它和最小化操作数量。我想问题的重点是在大量物体环境中优化碰撞检查程序的方法。