【问题标题】:Newtonian gravity simulation牛顿重力模拟
【发布时间】:2012-07-25 00:17:11
【问题描述】:

我正在用 Python 编写一个以重力为主要机制的 2D 游戏。

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

假设我有圆 A 和圆 B,每个圆都有一个位置、一个速度和一个质量。每个都应该相当逼真地拉向另一个,模拟牛顿引力。我将如何实现这一目标?

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

【问题讨论】:

    标签: python physics game-physics


    【解决方案1】:

    您需要求解每个物体的运动方程。它们将被写成一组耦合的一阶常微分方程。您将分别为 x 和 y 方向编写一个方程,它会根据两个物体之间的重力除以它们各自的质量得到加速度。

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

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

    【讨论】:

    • 作为对此的评论,scipy 提供了一个 ODE 积分器:docs.scipy.org/doc/scipy/reference/generated/…。它可能不是最好的东西,但你不需要自己编写积分器,如果你以前没有做过计算物理学,这是一个巨大的好处。
    【解决方案2】:

    假设你有一个游戏中的量化时间单位,一个时钟的“滴答”,如果你愿意的话,给每个物体一个速度向量(每“滴答”移动多少,朝哪个方向") 并且对于每个滴答声,让彼此的身体根据它们的距离将其速度矢量改变一定量(对其施加力,除以它的质量)。然后,只要你的时钟滴答作响,物体就会根据它们的速度矢量移动,然后它们的速度矢量会根据施加在它们身上的净力而改变。只要您决定哪个先发生 - 加速还是运动 - 只要您的刻度足够小,就可以了。

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 2014-07-11
      • 2015-04-17
      • 1970-01-01
      • 2013-10-17
      相关资源
      最近更新 更多