Гравитация планеты - PullRequest
       2

Гравитация планеты

7 голосов
/ 12 августа 2011

Как бы вы имитировали влияние планет разной массы на корабль?

Я пишу флеш-игру, похожую на астероиды, в которой небольшой корабль плавает по полю планет. Планеты не будут оказывать силы друг на друга, а только на корабль.

Что-то вроде этого Java-моделирования, но с большими планетами:

http://dan -ball.jp / ен / javagame / планета /

1 Ответ

6 голосов
/ 12 августа 2011

Для планеты массой м , на расстоянии r от корабля, корабль испытает ускорение:

a = k m / r ^ 2,

где k - некоторая константа, которая зависит от используемых вами единиц измерения.Ускорение будет направлено на планету.Может быть удобно разбить ускорение на составляющие по осям x и y (при условии, что вы работаете в двух измерениях).Если планета находится под углом тета в плоскости xy, относительно корабля,

a x = a cos ( theta )

a y = a sin ( theta )

Для нескольких планет вы можете просто добавить ускорения по компонентам.

Если корабль имеет начальную скорость v x во время t , тогда скорость на следующем шаге времени t + delta_t будет:

v x + a x * delta_t

Если этот корабль находится в начальной позиции p x в момент времени t, тогда позиция в t + delta_t будет:

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

См .: Уравнения движения

...