У меня есть неправильные многоугольники A и B. Они пересекаются, и я хочу переместить многоугольник A из многоугольника B, чтобы избавиться от пересечения.У меня есть MTV.MTV - это величина (минимальное перекрытие проекции полигонов) + ось, которая содержит это минимальное перекрытие.Мне нужно знать направление MTV вдоль оси, чтобы правильно перемещать A.Я нашел решение для моего вопроса в следующих ссылках: ссылка 1 и ссылка 2
Решение по ссылке 1:
Решение состоит в том, чтобы просто повернуть вектор смещения (умножить его на -1), если он указывает на форму, из которой объект нужно оттолкнуть.Чтобы выяснить, направлен ли вектор смещения на фигуру, сначала необходимо получить общее направление от объекта a к объекту b, вычитая их центры друг из друга.После этого вы проверяете произведение точек между вектором смещения и вектором направления (a, b), который вы только что создали.Если это> 0, вектор смещения и направление (a, b) указывают в одном и том же направлении, поэтому вам необходимо перевернуть вектор смещения.
Насколько я понимаю решение по ссылке 2такой же, как в ссылке 1, но другими словами.
Но у меня есть вопрос для решения из ссылки 1 - как вычислить центр неправильного выпуклого многоугольника?Я думаю, что вы можете сделать это в одном случае: вы будете представлять полигон как AABB.Я хотел бы знать, правильны ли решения по ссылке 1 и ссылке 2 на 100% и где математическое обоснование этих решений?