我有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角的每个分量之间的最小距离确定使用哪个角。这肯定会导致我想要的那种旋转,但是我想不出一种合适的方法来确定插入哪些角度,因为有时导致最小误差的角度组会导致围绕错误的轴/轴旋转。 我也尝试了四元数,但这基本上给了我相同的结果。有人能指出我正确的方向吗?
答案 0 :(得分:25)
使用四元数(SLERP)。旋转矩阵和欧拉角都不适合插值。
答案 1 :(得分:9)
我个人的观点是,使用四元数来做这类事情更有意义。也就是说,你可以在不使用四元数的情况下完成它。
要注意的是,“差异”矩阵,即将“方向”A
变为“方向”B
的矩阵可以通过T = A.tranpose() * B
计算(考虑你正在乘以右边)。获得旋转矩阵T
后,您可以转换为Axis-Angle表示(请参阅例如http://en.wikipedia.org/wiki/Axis-angle_representation)。
最后,由于您知道一个将A
转换为B
的旋转轴,因此您可以线性插补从零到先前从T
计算的角度的角度。
这相当于使用SLERP。