2015-12-02 199 views
0

我需要從旋轉矩形的邊界框和旋轉角度找到旋轉矩形的座標。從包圍矩形和角度獲取旋轉矩形座標

下面的圖片將解釋我需要找到什麼?

enter image description here

我得找點P1,P2,P3,P4

其中,

R1,R2,R3,R4,angle中給出。

+0

如何指定矩形進行旋轉? 4分?原點,寬度,高度?邊緣線的等式?另外,旋轉的方向是什麼? – uliwitness

+0

旋轉是基於中心。實際上最初我有一個矩形A,並將它旋轉到R,然後找到R的邊界框。現在我有數據邊界框和角度。其實旋轉是從一些軟件做的,我只有數據邊界框和角度作爲來自軟件的信息。 – Haris

+0

如何指定矩形A? – uliwitness

回答

1

考慮以下非旋轉矩形:

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

有多麼邊框可以定義兩種選擇。或者:

  • 其寬度由A和C所定義並且其高度由B和d或定義
  • 其寬度由B和d定義的並且其高度爲A定義和C.

邊界框的寬度和高度(我們稱之爲w_bh_b)可以很容易地根據給定的R來計算。

在下面,我假定矩形的中心位於原點。這使得計算更容易遵循。該中心可能會在之後加入。

由於未旋轉矩形的寬度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 | 

除了w所有變量和h是已知的。因此,你可以求解線性方程組來得到它們。然後,使用這些值計算未旋轉的點,然後計算旋轉的點。

在計算案例的解決方案後,您需要檢查假設是否仍然成立。即如果邊界框實際上是由您假設的角定義的。否則,這種情況是無法解決的。

請注意,如果angle爲45°,因爲正弦和餘弦相等,LSE會變得不確定。因此,您可以自由選擇wh