Я тоже не математик, но одним из возможных, хотя и грубым решением было бы запустить мини-симуляцию.
Давайте назовем движущийся многоугольник M и стационарный многоугольник S (хотя S не требуется на самом деле быть стационарным, подход должен работать одинаково независимо).Давайте также назовем два фрейма, которые у вас есть F1 для более раннего и F2 для более позднего, согласно вашей диаграмме.
Если вы должны были перевести многоугольник M обратно к своей позиции в F1 с очень небольшими приращениями до тех пор, пока они больше не пересекаются, тогда у вас будет место для M , в котором оно "просто'пересекается, то есть предыдущее местоположение, прежде чем они перестают пересекаться в этой симуляции.Пересечение в этом «просто» месте пересечения должно быть очень маленьким - достаточно маленьким, чтобы вы могли рассматривать его как точку.Давайте назовем этот многоугольник пересечения I .
Чтобы рассматривать I как точку, вы можете выбрать его вершину, ближайшую к центральной точке M in F1 : у этой вершины больше всего шансов оказаться за пределами S во время столкновения.(Существует множество других возможностей для интерпретации I как точки, с которой вы тоже можете поэкспериментировать, что может иметь лучшие результаты.)
Очевидно, что этот подход имеет некоторые недостатки:
- Симуляция будет медленнее для больших скоростей M , так как расстояние между его местоположениями в F1 и F2 будет больше, больше шагов симуляции будетнужно бежать.(Вы можете решить эту проблему, имея фиксированное число циклов моделирования независимо от скорости M , но это будет означать, что точность результата будет отличаться для более быстрых и медленных движущихся тел.)
- Размер «шага» в симуляции должен быть достаточно мал, чтобы получить требуемую точность, но меньшие размеры шага, очевидно, будут иметь большую стоимость вычислений.
Лично, без необходимой математической интуиции, япойдет сначала с этим простым подходом, а позже попытается найти математическое решение в качестве оптимизации.