我正在尝试用C ++编写2D空间模拟。在其中,您可以创建一个质量(m)以一个方向(d)在位置(x,y)上以速度(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);
}
答案 0 :(得分:1)
您可能正在寻找Newton's Law of Universal Gravitation。
Gm 1 m 2 / r 2 = F
一旦找到 F ,您就可以在标准运动方程中使用它:
F y t 2 / 2 + v y t + y 0 = y < / em>的
F x t 2 / 2 + v x t + x 0 = x