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