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

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

最佳答案

我很好奇您如何将Rectangle保持为数据结构,我的意思是,矩形是2D的,而XNA使我想到了3D。

但是,即使在2D和3D中,我认为您想要的也是AABB(轴对齐边界框),它很容易找到,因为它是由两个点组成的,这两个点是由每个轴的最小值和最大值分别形成的随旋转旋转的原始矩形的每个点。

之后编辑:

对于包含X,Y,宽度和高度的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))


旋转是将矩形围绕某个点旋转一定角度的方法。

关于c# - 创建一个矩形以覆盖旋转的Microsoft.XNA.Framework.Rectangle,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4545213/

10-13 02:02
查看更多