【问题标题】:Rectangle's dimensions, given only the top left and bottom right coordinates, and rotation angle矩形的尺寸,仅给出左上角和右下角坐标,以及旋转角度
【发布时间】:2014-04-02 06:35:31
【问题描述】:

我有一个应用了旋转的矩形。我知道旋转角度,以及左上角和右下角坐标。

我的问题是,给定这三个信息,我如何计算矩形的尺寸?

【问题讨论】:

  • 旋转的原点在哪里(中心...)?左上角和右下角坐标是在旋转之后还是之前给出的?
  • 假设原点在矩形的中心。
  • 对两点进行逆变换。

标签: math trigonometry


【解决方案1】:

如果您的旋转是根据矩形上的中心点进行的,首先您必须获取相对于该原点的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-21
    • 2013-12-22
    • 2011-04-14
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2016-06-08
    相关资源
    最近更新 更多