1

我正在尝试用 C++ 编写二维空间模拟。在其中,您可以创建一个质量为 (m) 的行星,在位置 (x,y) 上沿方向 (d) 以速度 (v) 移动。在这个星球上还有一个物体(即恒星)具有引力。该物体具有质量 (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);
}
4

1 回答 1

1

您可能正在寻找牛顿万有引力定律

Gm 1 m 2 / r 2 = F

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

F y t 2 / 2 + v y t + y 0 = y
F x t 2 / 2 + v x t + x 0 = x

于 2015-07-04T04:47:38.667 回答