【问题标题】:How can I determine the position of a body in 2D space after a given time?如何在给定时间后确定物体在 2D 空间中的位置?
【发布时间】:2015-07-04 04:16:32
【问题描述】:

我正在尝试用 C++ 编写二维空间模拟。在其中,您可以创建一个质量 (m) 以速度 (v) 沿方向 (d) 在位置 (x,y) 移动的行星。在这个星球上还有一个物体(即恒星)具有引力。该物体具有质量 (M) 和位置 (X,Y)。我想创建一个函数,在给定时间 t 后返回行星的位置。这颗行星不一定在轨道上,但如果速度和距离允许,它可能会在轨道上。我知道它涉及开普勒方程,但我自己无法弄清楚它的确切数学实现。任何帮助将不胜感激。

我当前的更新函数根本没有考虑恒星或质量。

double xPos, yPos, velocity, direction;
void Planet::update(int t){
    xPos += t * velocity * cos(direction / 180 * 3.14);
    yPos += t * velocity * sin(direction / 180 * 3.14);
}

【问题讨论】:

  • 不清楚您希望从 SO 用户那里得到什么。我不清楚您是否需要数学公式的帮助或将数学公式转换为 C++ 代码。
  • 是的,也许我应该在数学中问这个问题。
  • @JakeP 您可能会发现与此问题相关的一件烦人的事情是,蜈蚣运动使您远离代数,更多地进入微积分,因为您希望在某一点上发生瞬时变化。 (蜈蚣运动是:直奔一段,然后计算你需要转动多少才能使你的下一段保持在实际曲线上。)我问了一个问题here,但我很难得到直接的回应它:(

标签: c++ math physics game-physics orbital-mechanics


【解决方案1】:

您可能正在寻找Newton's Law of Universal Gravitation

Gm1m2 / r2 = F

一旦找到 F,您就可以在标准运动方程中使用它:

Fyt2 / 2 + vyt + y0 = y
Fxt2 / 2 + vxt + x0 = x

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多