2010-10-24 4 views
1

Если у меня есть заданный прямоугольник с шириной w, высота h и углом rповернутого размера прямоугольника ограничивающего прямоугольника

Как велико это будет еще один прямоугольник, который содержит все точки повернутого прямоугольника потребности?

мне нужно было бы, чтобы это выполнить быструю проверку ограничительной рамки для 2D-физический движок творю

+0

Я знаю, что один из способов чтобы повернуть все угловые точки прямоугольника и использовать их, но я подумал, что может быть лучше. – Markus

+0

И @mojuba: Если вы (или любой из двух человек, кто поддержал ваш комментарий), знаете ответ, было бы очень приятно, если бы вы могли опубликовать его также ... – Markus

+0

Возможный дубликат [Вычислить координаты прямоугольника окна из повернутого прямоугольника , Изображение внутри.] (Http://stackoverflow.com/questions/622140/calculate-bounding-box-coordinates-from-a-rotated-rectangle-picture-inside) –

ответ

0

Обычно вы должны рассматривать вращающиеся прямоугольники в двигателе обнаружения столкновений, так как это будет довольно просто реализовать (я имею в виду рассматривать вращающийся прямоугольник как есть).

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

Если вы действительно действительно хотите рассмотреть вращающийся прямоугольник, вы можете легко вычислить его, выбирая самую верхнюю вершину вашего прямоугольника (xT, yT) и самый левый (xL, yL) (после поворота, конечно), чтобы получить точную точку, которая будет (xL, yT). Затем вы делаете то же самое для нижний угол принимает (xR, yB) от самой правой и самой низкой точки вашего прямоугольника, и у вас оно есть. Это будет прямоугольник, включенный в (xL, yY) (xR, yB).

+0

Спасибо за полезный совет! – Markus

1

это может быть то, что вам нужно:

Calculate Bounding box coordinates from a rotated rectangle, ответил некто Markus.

+0

Я просто добавил следующий комментарий к ответу Маркуса: На самом деле, из-за симметрии вам нужно преобразовать только 2 угла, и если вы дадите немного дополнительную мысль, это всего лишь 1 угол для поворота. – ysap