Я пытаюсь написать приложение Mathematica, которое позволяет пользователям выбирать дату вылета и время полета для межпланетной миссии по пересадке (в настоящее время работает только для пересадок Земля-Марс), которая затем анимируется (аналогично браузеру траекторий НАСА). разве что не так круто).
До сих пор мне удавалось заставить работать решатель Ламберта и численную модель Солнца-Земли-Марса с тремя телами, но теперь мне нужно выяснить, как автоматически получать данные об эфемеридах из эфемерид JPL Horizons, когда пользователь выбирает дату отправления и TOF . . Я думал о том, чтобы попытаться включить службу telnet Horizons в приложение, но это может быть довольно сложно заставить это работать, а предоставленные данные о положении и скорости, похоже, не в удобном для Mathematica формате, который может потребовать много сопоставление/замена строк.
Другой альтернативой может быть загрузка и табулирование данных эфемерид за годы в электронную таблицу и извлечение их оттуда по запросу, но это также кажется трудоемкой задачей. Поэтому мой вопрос таков:
Как обычные планировщики траекторий/плоттеры получают свои эфемеридные данные?
Используя инструментарий SPICE и последний файл эфемерид, такой как DE430 (загрузка 120 МБ). Вам также понадобится ядро последних секунд координации .
Инструментарий предоставляет интерфейсы для Fortran, C, IDL и Matlab, но не для Mathematica. Вы можете использовать C-версию инструментария и MathLink или LibraryLink от Mathematica для доступа к инструментарию.
В инструментальном наборе много-много функций , но вам понадобится всего несколько. Например, вы можете использовать furnsh_c()
для загрузки файла эфемерид и файла високосных секунд, а spkezr_c()
также для получения положения и скорости указанного тела в указанное время в указанной системе отсчета.
Охотник на оленей