7

你将如何模拟不同质量的行星对一艘船的影响?

我正在编写一个类似于小行星的 Flash 游戏,它有一艘小船在行星场中航行。行星不会对彼此施加力,而只会对船施加力。

类似于这个 Java 模拟,但有更大的行星:

http://dan-ball.jp/en/javagame/planet/

4

1 回答 1

6

对于质量为m的行星,在距离船r处,船将经历加速度:

a = k m / r ^2,

其中 k 是一些常数,取决于您使用的单位。加速度将指向行星。将加速度分解为沿 x 和 y 轴的分量可能会很方便(假设您在二维中工作)。如果行星在 xy 平面上与船成角度theta ,

a x = a cos( θ )

a y = sin ( theta )

对于多个行星,您可以按分量添加加速度。

如果船在时间t有一个初始速度v x,那么在下一个时间步t + delta_t的速度将是:

v x + a x * delta_t

如果这艘船在时间 t处于初始位置p x ,那么t + delta_t处的位置将是:

p x + v x delta_t + a x delta_t ^2 / 2

参见: 运动方程

于 2011-08-12T17:11:51.093 回答