Как определить направление MTV для данного объекта в теореме о разделяющей оси?

У меня есть неправильные многоугольники 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% и где математическое обоснование этих решений?

0 ответов

Другие вопросы по тегам