Я пишу часть программного обеспечения, которое перемещает орбиту космического корабля с начальной околоземной орбиты на межпланетную орбиту. Мое простое распространение двух тел прекрасно работает как на геоцентрической, так и на гелиоцентрической орбите. Однако я не могу правильно обработать переход.
Вот шаги этого перехода (я могу поделиться соответствующим кодом, если это будет полезно):
Получите положение Земли на эклиптике J200 (через https://github.com/soniakeys/meeus/blob/master/planetposition/planetposition.go#L195 ) и вычислите скорость Земли (с помощью уравнений на первых страницах Vallado — Fundamentals in Астродинамика). Обратите внимание, что библиотека «meeus/planetposition» возвращает положения эклиптики в L, B, R, которые я конвертирую в декартовы координаты (через https://en.wikipedia.org/wiki/Ecliptic_coordinate_system#Rectangular_coordinates )
Поверните векторы радиуса и скорости моей геоцентрической орбиты вокруг первой оси и наклона оси Земли (согласно https://en.wikipedia.org/wiki/Ecliptic_coordinate_system#Converting_Cartesian_vectors )
Добавьте векторы R и V космического корабля, вычисленные на шаге 2, к векторам радиуса и скорости планеты, вычисленным на шаге 1 (поскольку )
При визуализации обеих траекторий в Cosmographia я точно могу сказать, что вычисления неверны (см. два скриншота ниже). Я застрял в этой проблеме уже несколько часов (я бы сказал, около двенадцати), поэтому любая помощь будет очень признательна.
Очевидно, вы могли бы сделать грубую матрицу вращения по оси Z (относительно Земли) и оценить вращение Земли как постоянное во времени, но это не совсем точно. Вы можете воссоздать метод CesiumJS ComputeFixedToICRF. Это очень обратный инжиниринг и не полное решение, но попытки сделать эти преобразования, по меньшей мере, нетривиальны.
Ссылка на документацию по методу ComputeFixedToICRF в цезии: https://cesiumjs.org/Cesium/Build/Documentation/Transforms.html?classFilter=transf#.computeFixedToIcrfMatrix
Здесь есть пакет Satellite.js, который также выполняет преобразование ECF в ECI: https://github.com/shashwatak/satellite-js/blob/develop/src/transforms.js .
ооо
Марк Адлер
КрисР