В настоящее время я пытаюсь внедрить простую систему непрерывного обнаружения столкновений. Я задавался вопросом, возможно ли для движущейся AABB вычислить расстояние, которое она может перевести в произвольном направлении d
, прежде чем оно пересечет выпуклый многогранник. Вот простое объяснение в 2D:
Здесь мне нужна длина зеленых линий (оранжевая AABB - это начальная позиция, а красная AABB - это место, где пересекаются оба коллайдера).
Это также эквивалентно попытке передать лучевую разницу Минковского A⊕-B от начала координат в направлении d
, где A - мой статический выпуклый многогранник, а B - мой движущийся AABB:
Но вычисление разницы Минковского, по-видимому, очень затратно по производительности, поэтому я хотел бы знать, существует ли быстрый алгоритм для этого.
Когда гуглил, я видел алгоритм, который это делает, называемый GJK, но кажется, что он возвращает только общее минимальное расстояние, а не направленное расстояние.
Заранее спасибо за ваши ответы!
PS: Пожалуйста, извините за мой плохой английский и мой полный недостаток художественного таланта, используя краску.