2012-07-25 68 views
3

我正在用重力作为主要机制来编写一个Python游戏。牛顿重力模拟

我制作了一些游戏引擎,但卡住的部分实际上是确定要添加到每个质量的X和Y速度上。

所以说我有圈A和圈B,每个圈都有一个位置,一个速度和一个质量。每个模型都应该相当逼真地模拟牛顿引力。我将如何实现这一目标?

是的,我对测量单位很模糊。稍后我可以尝试更改变量以适应公式。

回答

3

您需要为每个物体求解运动方程。它们将被写成一组耦合的一阶常微分方程。你会为x方向和y方向写出一个方程,这会给你加速度作为两个物体之间的重力的函数,除以它们各自的质量。

你知道加速度,速度和位移之间的关系。

您最终得出四个耦合的常微分方程来求解。使用时间步进解决方案及时推进解决方案 - 显式或隐式,您的选择。

+1

作为对此的评论,'scipy'提供了一个ODE集成器:http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html#scipy.integrate.odeint。它可能不是那里最好的东西,但你不需要自己写集成器,如果你以前没有做过计算物理学,这是一个巨大的奖励。 – mgilson 2012-07-25 01:19:03

1

假设你有一个游戏中的量化时间单位,如果你愿意,给每个身体一个速度向量(多少,以及在哪个方向上每移动一个“勾号“),并且对于每个勾号,每个其他身体根据它们的距离(在其上施加力,除以其质量)改变其速度向量一定量。然后,每当你的时钟滴答时,物体根据它们的速度矢量移动,然后它们的速度矢量根据它们上的净力而改变。只要您决定首先发生哪种情况 - 加速或运动 - 只要您的蜱足够小,您应该没问题。