考虑以下未旋转的矩形:
A -------- B
| |
D -------- C
有两个选项可以定义边界框。任何一个:
边界框的宽度和高度(我们称它们为w_b
和h_b
)可以很容易地根据给定的来计算R
。
在下文中,我假设矩形的中心位于原点。这使得计算更容易遵循。该中心可随后成立。
给定未旋转矩形的widthw
和height 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
可以为其余点计算类似的方程式。在下面的内容中,我将重点介绍边界框定义的第一个选项(第二个选项类似,我留给您自己决定)。
假设边界框的宽度由A
和定义C
,我们得到:
w_b = | C'.x - A'.x |
然后:
w_b = | w * cos angle + h * sin angle |
相似的:
h_b = | w * sin angle + h * cos angle |
除w
和以外的所有变量h
都是已知的。因此,您可以求解方程的线性系统以获取它们。然后,使用这些值计算未旋转的点,然后计算旋转的点。
在计算完一个案例的解决方案之后,您需要检查这些假设是否仍然成立。即,如果边界框实际上是由您假设的角定义的。否则,这种情况将无法解决。
请注意,如果angle
正弦和余弦相等,则LSE不确定是否为45°。因此,您可以额外自由地选择w
和h
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句