如何在给定时间后确定 2D space 中物体的位置?

How can I determine the position of a body in 2D space after a given time?

我正在尝试用 C++ 编写 2D space 模拟。在其中,您可以创建一个质量为 (m) 的行星,该行星以速度 (v) 沿方向 (d) 在位置 (x,y) 移动。还有一个物体(即恒星)对这颗行星具有引力。该对象具有质量 (M) 和位置 (X,Y)。我想创建一个 returns 给定时间 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);
}

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

Gm1m2 / r2 = F

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

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