讓c(0), c(1), c(2), c(3)
成爲C
的四個角,讓b(0)
成爲B的座標系所在的轉角B.令q
爲B的X軸的旋轉角度。所有這些角度和點必須在相同的座標系中給出。
要找到B中的c(i)
的座標,請將矢量c(i) - b(0)
旋轉角度q
(或-q
,具體取決於測量方式)。你可以使用這個旋轉矩陣。設cq = cos(q)
,sq = sin(q)
和(dx, dy) = c(i) - b(0)
。的c(i)
B中的座標然後
讓c = (c(0) + c(2))/2
是C的中心設S(s)
是由s
縮放矩陣,讓R(q)
是由q
旋轉矩陣。 B的角落由
b(i) = c + S(s) * R(q) * (c(i) - c)
矩形A的角落a(0), a(1), a(2), a(3)
也是已知的。我們希望確定縮放參數的最大可能值s
,使得所有的點B的b(i)
是矩形A.
我覺得這裏最安全,最簡單的方法是考慮有關對b(i)
和a(i)
和這樣的內對計算最大值s(i, j)
,使得如果s = s(i, j)
則b(i)
位於a(j)
的拐角區域內。
a(0)
讓和a(2)
是A的相對的角,並讓c(0)
和c(1)
是C的相鄰角讓r(j) = a(j) - c
和d(i) = R(q) * (c(i) - c)
。
每個對角線i
可以通過
s(i, j) = min (|r(j).x|/|d(i).x|, |r(j).y|/|d(i).y|)
之前乙通過r(j)
限定的區域外移動時進行縮放。計算s(i, j)
爲i = 0, 1
和j = 0, 2
並且s
爲這4個值中的最小值。
根據q
如何衡量你可能需要一個轉換應用於q' = atan2(kx * sin(q), ky * cos(q))
到q
佔的縱橫比的問題。
我沒有足夠清楚地描述已知變量。只有矩形C的座標和從X軸(全部在座標系A中)的旋轉角度是已知的。 B的座標未知。然而,已知A和B的縱橫比都相同,並且B是可以放入A內部的最大矩形。矩形C實際上可以位於矩形A內的任何位置,並且可以具有不同的縱橫比。 – JPK
額外的約束,應該使B的計算更容易:矩形B在矩形A內居中。 – JPK