如果我在C#中有一个Rectangle类,怎么能在旋转时得到一个包含它的矩形?
基本上我想找到旋转矩形的矩形。
答案 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的最小值和最大值,