将2d方形旋转到另一个方形

Vik*_*tor 1 math geometry affinetransform

我有两个正方形,S1 =(x1,y1,x2,y2)和S2 =(a1,b1,a2,b2)

我正在寻找A*S1 = S2的A变换矩阵

据我所知,A是一个仿射3x3矩阵,所以我有9个未知值.

我该如何计算这些值?

谢谢,最好,Viktor

Chr*_*ris 6

这里真的只有四个未知值.旋转角度,比例因子和x和y平移.在你的三乘三矩阵中,底行始终0,0,1会将你减少到六个未知数.右栏将Tx,Ty,1是您的翻译(以及我们已经知道的1).

左边两个"矩阵"将是你的旋转和缩放.这将(在我的头顶)是这样的:

ACos(B), -Asin(B)
ASin(B),  aCos(B)
Run Code Online (Sandbox Code Playgroud)

所以总的来说:

ACos(B), -Asin(B), Tx
ASin(B),  ACos(B), Ty
0      ,  0      , 1
Run Code Online (Sandbox Code Playgroud)

您可以使用每个坐标末尾的1来扩展坐标矩阵,得到2x3矩阵,然后它们相乘以得到四个变量需要求解的四个方程式.这留给读者练习.