請下面的圖片如下:如何獲得從P1到P1'旋轉後的邊界矩形?
我想變換一個矩形的定位點是它的中心從P1到P1' 點。
我想旋轉後計算邊界矩形。
我使用的解決方案是得到新的4點:P1 => P1'和P2 => P2'等... 但問題是:矩形(我期望得到)更大。 請告訴我一種正確的方法。
謝謝。
請下面的圖片如下:如何獲得從P1到P1'旋轉後的邊界矩形?
我想變換一個矩形的定位點是它的中心從P1到P1' 點。
我想旋轉後計算邊界矩形。
我使用的解決方案是得到新的4點:P1 => P1'和P2 => P2'等... 但問題是:矩形(我期望得到)更大。 請告訴我一種正確的方法。
謝謝。
left = min (Pi'.X for 1<=i<=4)
bottom = min (Pi'.Y for 1<=i<=4)
right = max (Pi'.X for 1<=i<=4)
top = max (Pi'.Y for 1<=i<=4)
width = top - bottom
height = right - left
bounding_rectangle = [left, bottom, width, height]
更新:
要通過angle
弧度旋轉點p
各地center
:
v.x = p.x - center.x
v.y = p.y - center.y
newp = center.x + cos(angle) * v.x - sin(angle) * v.y, center.y + sin(angle) * v.x + cos(angle) * v.y
將此應用於每個丕你皮」
double halfDiagonal = sqrt((center.x - P1.x)*(center.x - P1.x) + (center.y - P1.y)*(center.y - P1.y));
double newAngle = rotationAngle + atan2(P1.y - center.y, P1.x - center.x);
newP1.x = center.x + halfDiagonal * cos(newangle);
剩餘座標和計算最小/最大值作爲re的練習阿德。
非常感謝您的回答。我知道你想告訴我什麼。 – vietean 2011-04-11 10:37:48
我假設你知道如何計算旋轉本身?當你知道P1'時,邊界框本身就會被微不足道地計算出來。等等 – Alnitak 2011-04-11 09:52:28
@Johnsyweb:問題是,我已經計算出像Andrey的第一個下面的答案,但是我得到的邊界矩更大。我不知道爲什麼?也許,我會更新一個圖像的細節。 – vietean 2011-04-11 10:31:38
您是否嘗試過使用我的解法計算新頂點? – Henrik 2011-04-12 06:56:35