Длительный прослушиватель, первый раз. Я делаю небольшую хобби в XNA, ее о транспортных кораблях в космосе, аналогичных контейнерным судам в море. Мне нужно уметь предсказать встречу между судами и планету/лунами кеплеровых орбитальных элементов. Корабль и тело вращаются вокруг того же центра притяжения.
Подход, который я разработал до сих пор, - это сначала сделать предварительные проверки апоапсиса и периапсиса (самые дальние и самые близкие точки из центра притяжения), чтобы увидеть, возможно ли встреча. Между проверками, такими как это, и если орбита судна открыта (гиперболическая, я приближаю случай параболы к гиперболе), она может исключать многие сценарии, где не может быть встречи.
Если эти проверки определяют возможность встречи, я определяю минимальное и максимальное расстояние от центра притяжения, которое судно имеет право на встречу. Затем я получаю точки пересечения орбиты корабля с двумя кругами, определяемыми этим минимумом и максимумом. Это приводит к нулю, двум или четырем точкам на орбите судна, определяя нулевой, один или два периода, когда он может столкнуться с сферой тела. В этом случае, если есть нулевые пересечения, возможно, что вся орбита судна находится в зоне встречи, это, вероятно, необычный крайний случай, но нужно будет покрыть.
Я могу получить время, когда корабль будет передавать эти точки на этой орбите, давая один или два окна времени для проверки на встречу, но оттуда мое лучшее решение выполняет поиск временного промежутка, деля его на этапы, вычисляя Положение тела в это время, а затем тестирование для встречи.
Проблема с этим подходом заключается в знании размера, чтобы сделать шаги для эффективного поиска встречи. Получение положения тела вовремя несколько дорого, поэтому я предпочел бы сделать это как можно меньше, но слишком большие шаги могут потенциально пропустить встречу.
Существуют ли какие-либо свойства конфокальных конических форм, которые могли бы помочь уменьшить пространство поиска? Или существуют другие способы предсказать столкновение/столкновение между тем, что эффективно является точкой, движущейся вдоль конического пути, и кругом, движущимся вдоль эллипса, разделяющим координационную точку.