这是我的第一个:
如上图所示:
众所周知,仿射变换可以用以下形式写出:
1) 90 > 50 ----> No change
2) now check the second and third number 90 < 1 ---> 1 and 90 swap.
3) check if the first number is lesser than the new second number(1) - 50 < 1 - swap again 50 and 1.
4) 1 is the first number in the array, so go back to 90 and check the number after 90.
假设M1和M2的组件对我们来说是已知的,我需要计算O2和O1之间的旋转和平移。 关于翻译,我可以在上面的图像中找到它。但对于轮换,我不清楚我是如何得到它的。基于矩阵计算,我最终得到了这个:
A = Shearing(3*3).Scaling(3*3).Rotation(3*3)
然后,为了得到Shearing(O2->O1).Scaling(O2->O1).Rotation(O2->O1) = Inverse(Shearing(2->O2).Scaling(O->O2).Rotation(O->O2)).Shearing(O->O1).Scaling(O->O1).Rotation(O->O1)
,我想我必须分解rotation(O2->O1)
。所以我在Inverse(Shearing(2->O2).Scaling(O->O2).Rotation(O->O2)).Shearing(O->O1).Scaling(O->O1).Rotation(O->O1)
中寻找一种方法,c++
分解仿射矩阵。还有,还有其他方法可以得到我想要的东西吗?