创建一个矩形以覆盖旋转的Microsoft.XNA.Framework.Rectangle

时间:2010-12-28 10:04:57

标签: c# xna rotation

如果我在C#中有一个Rectangle类,怎么能在旋转时得到一个包含它的矩形?

基本上我想找到旋转矩形的矩形。

2 个答案:

答案 0 :(得分:2)

我很好奇你如何将Rectangle作为数据结构,我的意思是,一个矩形是2D,XNA让我想到3D。

然而,即使在2D和3D中,我认为你想要的是AABB(轴对齐边界框),这很容易找到,因为它是由最小值和相应的最大值形成的两个点定义的。用旋转变换原始矩形的每个点的每个轴。

LATER EDIT:

对于包含X,Y,Width和Height的Rectangle结构,矩形有两点:

(x1, y1) = (X, Y) and 
(x2, y2) = (X + Width, Y + Width).

旋转矩形时,实际上旋转这两个点并获得:

(xr1, yr1) = rotate(x1, y1)
(xr2, yr2) = rotate(x2, y2).

现在,您想要的矩形由这些坐标的点定义:

p1 = new Point(Min(xr1, xr2), Min(yr1, yr2))
p2 = new Point(Max(xr1, xr2), Max(yr1, yr2))

rotate是将矩形旋转一定角度的方法。

答案 1 :(得分:0)

如何旋转矩形开始?要获得边界框,您需要查看四个结果点并找到Y和X的最小值和最大值,