2D Физика для игр - Separate Axis Theorem - Вектор сдвига

Как и обещал продолжаю перевод серии статей про игровую физику. Сегодня я напишу как получить вектор сдвига и разьединить 2 столкнувшихся многоугольника. Как было точно подмечено анонимным комментатором метод отделяющей оси работает только для выпуклых многоугольников. Итак, дано: 2 столкнувшихся многоугольника Задача: Разьединить 2 многоугольника, причём минимальным сдвигом. В прошлом посте я писал как узнать пересекаются ли 2 многоугольника, это полезная информация, однако мы можем узнать больше. В случае если 2 многоугольника пересекаются хотелось бы сдвинуть их от друг друга, чтобы они не пересекались.