У меня задача -- запустить (пока виртуально
) свой спутник так, чтоб он не столкнулся со всеми другими спутниками (пролетел достаточно далеко). Время жизни пара недель.
Для этого я беру на
www.space-track.org файл, выбираю из него живые спутники с перигеем ниже 500 км, их штук триста-четыреста получается.
По документам M001-Keplerian_Orbit_Elements_to_Cartesian_State_Vectors.pdf и M002-Cartesian_State_Vectors_to_Keplerian_Orbit_Elements.pdf перевожу в вектор состояния.
А потом симулирую движение в поле эллиптической Земли (где только J2) по самым школьным формулам.
Беру TLE за вчера и за сегодня, симулирую от вчерашних к сегодняшним. Должно бы совпасть, но не совпадает на десятки/сотни километров.
Причём если время полёта подкрутить на пару минут (обычно в меньшую сторону), то можно получить приличное совпадение.
То есть, траектория получается правильная, но скорость, почему-то, неправильная.
Почему?
Подумал, что при переводе из TLE в вектор не учитывается разница гравитационных потенциалов сферической и эллиптической Земли.
Сделал костыли, чтоб до начала симуляции скорректировать скорость из вектора на величину разницы (по закону сохранения энергии), но всё равно получается фигня.
Да, я слышал про SPG, и накачал себе много разных файлов про это. Но переварить их в головном мозге не получается.
Простыни кода без объяснений и комментариев в голову не лезут.
Готовые чужие проги -- плохой вариант. Так как хочется свою прогу, в которую встроены нужные функции.