旋转矩阵
问题描述:
我有2个旋转矩阵之间的插值(让我们称之为A和B),其中:旋转矩阵
A = 1 0 0
0 0 -1
0 1 0
和
B = -1 0 0
0 0 -1
0 -1 0
这基本上是在相机打转看旋转在它后面。 显然,我不能直接插入矩阵中的值,因为它看起来很奇怪。 我曾尝试将矩阵转换为欧拉角,产生2组X,Y,Z角度,并尝试根据X,Y,Z角度的每个分量之间的最小距离确定使用哪个角度。这肯定会导致我想要的旋转类型,但我想不出一种体面的方式来确定在哪个角度之间进行插值,因为有时导致最小误差的角度集导致围绕错误轴/轴的旋转。 我也试过四元数,但基本上给了我相同的结果。任何人都可以将我指向正确的方向吗?
答
我的个人意见是,使用四元数这种类型的事情更有意义。这就是说,你可以做到这一点,而不使用四元数。
需要注意的一点是,“差异化”矩阵,即,这需要“方向” A
为“方向” B
矩阵可以通过T = A.tranpose() * B
计算(考虑你是乘在右边)。一旦你有了旋转矩阵T
,你可以转换为轴角表示(例如参见http://en.wikipedia.org/wiki/Axis-angle_representation)。
最后,由于要知道的旋转轴这需要A
到B
,可以线性插入从零角度先前从T
计算的角度。
这相当于使用SLERP。