Я пытаюсь написать двумерное космическое моделирование на C ++. В нем вы можете создать планету с массой (m), движущейся со скоростью (v) в направлении (d) в позиции (x, y). Есть также один объект (то есть звезда), который имеет гравитационное притяжение на этой планете. Этот объект имеет массу (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);
}
Вы, вероятно, ищете Закон всемирного тяготения Ньютона.
грамм1м2 / р2 = F
Как только вы найдете F Вы можете просто использовать его в стандартном уравнении движения:
FYT2 / 2 + vYт + у0 = у
FИксT2 / 2 + vИкст + х0 = х