Обычно вы должны учитывать вращающиеся прямоугольники в механизме обнаружения столкновений, поскольку реализовать его будет довольно просто (я имею в виду, что повернутый прямоугольник как есть).
В любом случае, если вы действительно хотите упростить, чтобы иметь грубый уровень обнаружения столкновений, лучше всего встроить прямоугольник в круг, потому что он действительно прост (центрируется по центру прямоугольника и имеет радиус полуоси. диагональ прямоугольника) и по сравнению с использованием поля это может быть достаточно точным для грубого обнаружения. На самом деле вы можете иметь угловой порог, чтобы решить, лучше ли использовать круг или рассмотреть исходный прямоугольник (большинство вырождающихся случаев - это когда угол близок к k*PI
с k = 0,1,2,3
Если вы действительно хотите рассмотреть повернутый прямоугольник, вы можете легко рассчитать его, выбрав самую верхнюю вершину вашего прямоугольника (xT, yT)
и самую левую (xL, yL)
(после поворота курса), чтобы получить точку поворота, которая будет (xL, yT)
. Затем вы делаете то же самое для нижнего правого угла, беря (xR, yB)
из самой правой и нижней точки вашего прямоугольника, и у вас это есть. Это будет прямоугольник, включенный в (xL, yY) (xR, yB)
.