【发布时间】:2014-04-02 06:35:31
【问题描述】:
我有一个应用了旋转的矩形。我知道旋转角度,以及左上角和右下角坐标。
我的问题是,给定这三个信息,我如何计算矩形的尺寸?
【问题讨论】:
-
旋转的原点在哪里(中心...)?左上角和右下角坐标是在旋转之后还是之前给出的?
-
假设原点在矩形的中心。
-
对两点进行逆变换。
标签: math trigonometry
我有一个应用了旋转的矩形。我知道旋转角度,以及左上角和右下角坐标。
我的问题是,给定这三个信息,我如何计算矩形的尺寸?
【问题讨论】:
标签: math trigonometry
如果您的旋转是根据矩形上的中心点进行的,首先您必须获取相对于该原点的 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
【讨论】: