Как я могу определить положение тела в 2D-пространстве по истечении заданного времени?

Я пытаюсь написать двумерное космическое моделирование на 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

Решение

Вы, вероятно, ищете Закон всемирного тяготения Ньютона.

грамм1м2 / р2 = F

Как только вы найдете F Вы можете просто использовать его в стандартном уравнении движения:

FYT2 / 2 + vYт + у0 = у
FИксT2 / 2 + vИкст + х0 = х

1

Другие решения


По вопросам рекламы [email protected]