我有一个矩形1:绿色,具有以下属性:
x: 102, y: 121, width: 900, height: 900
我有一个子矩形,红色(与绿色1相关的属性):
x: 327, y: 415, width: 271, height: 183
如何在缩放和旋转的绿色内计算红色孩子的大小和位置(灰色) ,与非相同旋转/缩放红色?
答案 0 :(得分:0)
让我们更加数学。我们有一个带坐标的绿色广场
g = {(102,121),(1002,121),(1002,1021),(102,1021)}
和带坐标的红色矩形
r={{327,415),(498,415),(498,598),(327,598)}.
G的中心是(552,571)。
设T是从中心到原点的平移。 S是原点的0.75,旋转30°。用矩阵表示
T = (-552)
(-571)
S = (0.75, 0 )
(0 , 0.75)
R = (cos 30, -sin 30)
(sin 30, cos 30)
完全转变为点p =(x,y)是
T' R S T' p
= T' R S (x-552, y-571)
= T' R (0.75*(x-552), 0.75*(y-571))
= T' (cos 30 * (0.75*(x-552) -sin 30 * 0.75*(y-571))
(sin 30 * (0.75*(x-552) +cos 30 * 0.75*(y-571))
= ( cos 30 * (0.75*(x-552) -sin 30 * 0.75*(y-571) + 552 )
(sin 30 * (0.75*(x-552) +cos 30 * 0.75*(y-571) + 571 )
如果我们让矩形具有边界x1,xh,yl,yh,则角是(x1,y1),...(xh,yh)。我们将变换应用于每个角,给予点A =(ax,ay),B,C,D。我们需要确保每个点都在矩形内,因此xl< = ah<< XH。
这给出了一组要求解的方程。哪个应该可行。