Использование данных эфемерид в приложении межпланетной траектории

Я пытаюсь написать приложение Mathematica, которое позволяет пользователям выбирать дату вылета и время полета для межпланетной миссии по пересадке (в настоящее время работает только для пересадок Земля-Марс), которая затем анимируется (аналогично браузеру траекторий НАСА). разве что не так круто).

До сих пор мне удавалось заставить работать решатель Ламберта и численную модель Солнца-Земли-Марса с тремя телами, но теперь мне нужно выяснить, как автоматически получать данные об эфемеридах из эфемерид JPL Horizons, когда пользователь выбирает дату отправления и TOF . . Я думал о том, чтобы попытаться включить службу telnet Horizons в приложение, но это может быть довольно сложно заставить это работать, а предоставленные данные о положении и скорости, похоже, не в удобном для Mathematica формате, который может потребовать много сопоставление/замена строк.

Другой альтернативой может быть загрузка и табулирование данных эфемерид за годы в электронную таблицу и извлечение их оттуда по запросу, но это также кажется трудоемкой задачей. Поэтому мой вопрос таков:

Как обычные планировщики траекторий/плоттеры получают свои эфемеридные данные?

Ответы (1)

Используя инструментарий SPICE и последний файл эфемерид, такой как DE430 (загрузка 120 МБ). Вам также понадобится ядро ​​последних секунд координации .

Инструментарий предоставляет интерфейсы для Fortran, C, IDL и Matlab, но не для Mathematica. Вы можете использовать C-версию инструментария и MathLink или LibraryLink от Mathematica для доступа к инструментарию.

В инструментальном наборе много-много функций , но вам понадобится всего несколько. Например, вы можете использовать furnsh_c()для загрузки файла эфемерид и файла високосных секунд, а spkezr_c()также для получения положения и скорости указанного тела в указанное время в указанной системе отсчета.

Прикомандирован. SPICE просто необходим в наше время, он значительно упрощает многие рутинные задачи (и некоторые не очень рутинные).