地球在 java 模拟中脱离轨道

Earth goes out of orbit in java simulation

首先,我是 java 的新手,抱歉。我正在尝试模拟地球绕着太阳转。绘制结果后,很明显地球旋转一圈后就脱离了轨道!

我检查并仔细检查了常数,例如太阳和地球的质量以及初始速度和位置。我不确定我哪里错了方程式也正确,同事和讲师都确认了。

代码由 4 个组成 类:

找到。

差:

y += yVelocity * timeStep;     
x += xVelocity * timeStep;

由于您使用的是离散时间步长,因此您不仅必须将速度添加到您的位置,还必须添加在此期间加速度对您的速度的影响。

更好:

yAccel = Sun.componentY();     
xAccel = Sun.componentX();

y += (yVelocity + yAccel * timeStep * 0.5) * timeStep;
x += (xVelocity + xAccel * timeStep * 0.5) * timeStep;

yVelocity += yAccel * timeStep;
xVelocity += xAccel * timeStep;

这假设加速度在整个时间步长期间保持不变,但实际上并非如此。不过,它应该更接近您想要实现的目标。

最佳:

使用积分,您应该能够完美地模拟真实行为(忽略浮点问题)。

加速度、速度和位置都可以用积分表示,那么你应该可以求解出t到t+dt的每帧模拟范围。我发现 Mathematica 的试用许可证在这种情况下非常有用。