从边界矩形和角度获得旋转的矩形坐标

时间:2015-12-02 14:02:56

标签: math geometry

我需要从旋转的矩形和旋转角度的边界框中找到旋转矩形的坐标。

下图将说明我需要找到的内容?

enter image description here

我必须找到分P1,P2,P3,P4

其中,

R1,R2,R3,R4,angle

1 个答案:

答案 0 :(得分:1)

考虑以下未旋转的矩形:

A -------- B
|          |
D -------- C

如何定义边界框有两种选择。之一:

  • 其宽度由A和C定义,其高度由B和D或
  • 定义
  • 其宽度由B和D定义,其高度由A和C定义。

可以从给定的w_b轻松计算边界框的宽度和高度(让我们称之为h_bR)。

在下文中,我假设矩形的中心位于原点。这使得计算更容易遵循。该中心可能会在之后合并。

给定未旋转矩形的宽度w和高度h,位置为:

A = (-w/2, -h/2)
B = ( w/2, -h/2)
C = ( w/2,  h/2)
D = (-w/2,  h/2)

使用角度A围绕原点旋转angle,我们得到A'

A'.x = -w/2 * cos angle - h/2 * sin angle
A'.y =  w/2 * sin angle - h/2 * cos angle

可以计算剩余点的类似方程。在下文中,我将重点介绍边界框定义的第一个选项(第二个选项类似,我留给您)。

假设边界框的宽度由AC定义,我们得到:

w_b = | C'.x - A'.x |

然后:

w_b = | w * cos angle + h * sin angle |

类似:

h_b = | w * sin angle + h * cos angle |

除了wh之外的所有变量都是已知的。因此,您可以求解线性方程组来得到它们。然后,使用这些值计算未旋转的点,然后计算旋转的点。

在计算案例的解决方案后,您需要检查假设是否仍然有效。即如果边界框实际上由您假设的角定义。否则,这种情况没有解决方案。

请注意,如果angle为45°,则LSE变得不足,因为正弦和余弦相等。因此,您可以获得一个额外的自由度来选择wh