В настоящее время я работаю над двухмерным космическим симулятором, в котором у меня есть два тела; один неподвижен, а другой — объект на орбите, которым я также могу управлять, как ракетой.
Я использую гравитацию Ньютона: , и я хочу рассчитать траекторию этого движущегося объекта.
Это вообще возможно?
Я думаю, что если я посчитаю положение апогея и перигея легко будет определить по эллипсу, а потом показать траекторию. Или есть другой хороший подход?
у меня есть расстояние от к , вектор скорости , а позиции к . У меня также есть массы и .
Как рассчитать эллиптическую траекторию вокруг ?
примечание: предположим, что это ракета, скорость которой я также могу изменить.
Было бы очень полезно, если бы кто-нибудь помог мне решить эту проблему; скажите, пожалуйста, я ясно объяснил свою проблему или нет.
Вектор эксцентриситета имеет величину, эквивалентную орбитальному эксцентриситету эллипса, и указывает вдоль линии апсид в направлении от центрального тела к периапсиду.
Данный:
параметр | символ |
---|---|
вектор радиального расстояния | |
вектор скорости | |
гравитационный параметр |
Как упоминает Роджер Вуд, рассчитайте удельную орбитальную энергию чтобы получить большую полуось a:
Если вы используете трехмерные векторы, вы можете рассчитать удельный угловой момент :
Тогда вектор эксцентриситета равен:
Если вы не используете угловой момент как векторную величину, возможно, из-за того, что вы выполняете 2D-моделирование, приведенное выше уравнение эквивалентно следующему:
И, как упоминалось ранее, эксцентриситет орбиты - величина вектора эксцентриситета:
Отсюда можно получить перифокальный единичный вектор который указывает в том же направлении, что и вектор эксцентриситета:
Если ваше центральное тело является началом вашей системы координат, то вектор положения перицентра равен:
И тот, что ближе к апоапсису:
По начальному радиусу и скорости можно рассчитать орбитальную энергию и угловой момент ракеты. Обе величины сохраняются. Орбитальная энергия также равна что дает вам большую полуось, . Угловой момент также равен что дает вам эксцентричность, . Теперь у вас есть уравнение общей эллиптической орбиты. Чтобы установить его ориентацию, вам нужно решить, где находится начальная точка эллипса.
Наконец-то я прошел через это.....
30 лет назад (до интернета, до появления смартфонов) я написал очень простую программу численного двухмерного орбитального моделирования. Я рассчитал скорость и ускорение отдельно для компонент x и y.
Массивное тело находилось в начале координат (0,0). Я выбрал произвольный интервал итерации (10 секунд полета).
Я подавал в исходное положение и начальную скорость. Например, положение в км (0,7000) и скалярная скорость (7,8,0) в км/сек. Это будет объект на LEO, движущийся параллельно оси X.
Далее рассчитаем гравитационное ускорение отдельно для каждой оси. В течение первого 10-секундного цикла итерации ускорения по оси X не будет, но по оси Y оно составит 10 с*9,8 м/с^2. Рассчитайте дельта-v (0,-98) и результирующую скорость (7,8, -0,098). Обновить позицию (78,6922).
Обновите дисплей. Повторите петлю. Расчеты все арифметические, с использованием подобных треугольников. Не требуются триггерные или векторные операции.
Для LEO вы можете оставить ускорение постоянным. Для более высоких орбит отрегулируйте ускорение для увеличения радиуса, используя положение (x, y).
Эта упрощенная программа производила очень хорошие эллиптические орбиты и переходы Хомана. «Земная орбита» занимала около 10 секунд процессорного времени при работе на i386.
Я мог нажать «пауза», вставить дельта-v, а затем продолжить, чтобы увидеть результат.
Этот программный подход работает и для задач трех тел, но я отказался от попыток достичь лунных переносов.
Если вы хотите сохранить данные (скажем, фазовый угол в апогее или скорость в перигее), потребуется еще несколько строк программирования.
Чтобы ответить на ваш вопрос о том, как найти положение апогея и перигея, вы вводите свое текущее положение и скорость и нажимаете кнопку запуска.
Я заранее приношу извинения всем настоящим математикам и программистам за этот детский подход и за неизбежные ошибки, которые я допустил, извлекая его из памяти.
ооо
Сартак