Я пытался создать орбитальную симуляцию, используя аппроксимацию исправленных коник, например космическую программу Kerbal. Сначала я пытался решить уравнение Кеплера, используя метод Ньютона, однако это оставляло желать лучшего, поскольку для этого требуется много начальных переменных, таких как большая полуось и эксцентриситет, которые должны быть предоставлены заранее, тогда как у меня есть только радиус-вектор и вектор скорости. Также этот подход, по-видимому, не работает с орбитами, которые являются параболическими или гиперболическими (или прямолинейными), не говоря уже о том, что он требует значительных вычислительных ресурсов. Это привело меня к методу Goodyear из ответа Ламонта на этот вопрос.
Определение орбитальной позиции в будущем моменте времени
Однако мне не удалось заставить его давать достоверные результаты. Все радиус-векторы, которые я получаю от него, образуют прямые линии. Насколько я понимаю, все, что требуется, это начальный радиус-вектор, вектор скорости, гравитационный параметр и временной интервал. Я давал эти значения в единицах СИ, то есть в метрах и секундах. Ожидаются ли другие юниты?
Если все вышеперечисленное не работает, существуют ли какие-либо другие общие решения проблемы двух тел, которые требуют только начального радиус-вектора и вектора скорости и могут вернуть радиус-вектор и вектор скорости в некоторый момент времени «t» в будущем? И какой из них лучше всего подходит для аппроксимации с заплатками?
Вы, вероятно, уже нашли ответ к тому времени, когда разместили этот вопрос, но я все же даю ответ на случай, если это поможет.
Использование орбитальных элементов - "правильный способ" сделать это. Их 6, описанных в этой статье Википедии :
Первые пять из них полностью описывают геометрию орбиты в 3D. Истинная аномалия — это угол, относящийся к положению тела/космического корабля на этой орбите. Все эти параметры можно рассчитать по векторам начального состояния (положения и скорости), зная стандартный гравитационный параметр тела-аттрактора. Математика описана в этом PDF-файле Рене Шварцем о том, как преобразовать декартовы орбитальные векторы состояния в орбитальные элементы.
Когда у вас есть элементы орбиты, вы можете использовать их для вычисления векторов состояния (вектор положения/радиуса и вектор скорости) в любой момент времени, следуя этому другому PDF-файлу о том, как преобразовать элементы орбиты в декартовы векторы состояния. Однако некоторые формулы, описанные в документе, работают только для эллиптических орбит. Для гиперболических орбит (когда ) вам придется использовать другие формулы для эксцентрической и истинной аномалии (см. эту статью в Википедии и второй ответ на этот пост ), а также адаптировать формулу для вектора скорости из документа (см. этот пост ).
«Сложно выглядящие» матрицы вращения, которые задают положение и скорость космического корабля/тела в трехмерном пространстве, могут быть разработаны за следующие шаги:
(Обратите внимание, что в документах Рене Шварца он считает ось Z осью «вверх», а не осью Y)
Случай параболической орбиты ( ) можно, как сказал нотовны в комментарии, вежливо проигнорировать (применить алгоритм страуса ).
Обратите внимание, однако, что вам может потребоваться принять во внимание крайние случаи. т.е. когда вы имеете дело с орбитами, которые действительно близки к круговым орбитам или имеют нулевое наклонение. В этих случаях формулы для углов, такие как истинная аномалия в первом документе, не будут работать (они будут давать значения NaN из-за точности с плавающей запятой и округлений). Таким образом, для этих конкретных случаев вам придется установить векторы по умолчанию, например, эксцентрический вектор, и вычислить углы на его основе.
Что касается единиц, формулы действительно предполагают единицы СИ. (Однако вы можете использовать любое число, кратное этим единицам, если вы учитываете это в уравнениях).
Лито
Войдстар240
нотовный
Ламонт
Ламонт