我有一个已应用旋转的矩形。我知道旋转角度,以及左上角和右下角坐标。
我的问题是,在给出这三条信息的情况下,如何计算矩形的尺寸?
答案 0 :(得分:0)
如果你的旋转是以矩形的中心点为基础的,首先你必须得到相对于那个原点的TL和BR。
设A,B,C,D为四个顶点TL,TR,BR,BL。
您正在尝试找到TR和BL,它们将是B和D.
B_x = C_x*Cos(a) - A_y*Sin(a)
B_y = C_x*Sin(a) + A_y*Cos(a)
同样地
D_x = A_x*Cos(a) - C_y*Sin(a)
D_y = A_x*Sin(a) + C_y*Cos(a)
想想在轮换之前会发生什么。您只需使用A和C的组件来定义B和D.上面只是将它乘以rotation matrix。其中a是角度。
如果旋转已经应用于A和B,那么在旋转之前得到原始点,这只是rotation matrix的转置:
A'_x = A_x*Cos(a) + A_y*Sin(a)
A'_y = -A_x*Sin(a) + A_y*Cos(a)
同样适用于C
然后使用A'和C'在第一组方程中找到带旋转的结果点。
如果您只对长度和宽度感兴趣,A'和C'就足够了:
width = C'_x - A'_x
Height = A'_y - C'_y