在旋转matrix之间插值

我有2个旋转matrix(让我们叫他们A和B)在哪里:

A = 1 0 0 0 0 -1 0 1 0 

 B = -1 0 0 0 0 -1 0 -1 0 

这基本上只是一个旋转的地方,相机旋转后面看自己。 显然,我不能直接插入matrix中的值,因为它看起来很奇怪。 我已经尝试将matrix转换为欧拉angular,产生2组X,Y,Zangular,并基于X,Y,Zangular的每个分量之间的最小距离来尝试确定使用哪个angular度。 这肯定会导致我想要的旋转types,但我想不出一个体面的方式来确定哪个angular度插入之间,因为有时导致错误最less的angular度集导致围绕错误的轴/轴的旋转。 我也试过四元数,但基本上给了我相同的结果。 任何人都可以指向正确的方向吗?

使用四元数(SLERP)。 旋转matrix和欧拉angular都不适合插值。

见45:05 (David Sachs,Google Tech Talk) 。

我个人的观点是,用四元数来表示这种事情更有意义。 这就是说,你可以做到这一点,而不使用四元数。

需要注意的是,“差异”matrix,即将“方向” A取向为“方向” B的matrix可以通过T = A.tranpose() * B来计算(考虑到您正在相乘) 。 一旦你有旋转matrixT ,你可以转换成轴angular表示(参见http://en.wikipedia.org/wiki/Axis-angle_representation )。

最后,因为你知道一个旋转轴,它取AB ,所以你可以线性插入从零到先前从T计算的angular度的angular度。

这相当于使用SLERP。