我有两个旋转矩阵(让我们称它们为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角的每个分量之间的最小距离来确定要使用的角度。这肯定会产生我想要的那种旋转,但我想不出一个合适的方法来确定在哪些角度之间进行插值,因为有时导致最小误差的角度集会导致围绕错误的轴旋转。我也尝试了四元数,但基本上得到了相同的结果。有谁能给我指个方向吗?
发布于 2011-04-07 19:44:12
使用四元数(SLERP)。旋转矩阵和欧拉角都不适合插值。
参见45:05 here (David Sachs, Google Tech Talk)。
发布于 2012-03-08 22:04:44
我个人的观点是,使用四元数来处理这类事情更有意义。也就是说,你不需要使用四元数就可以做到这一点。
需要注意的是,“差”矩阵,也就是将“A
”方向转化为“B
”方向的矩阵可以由T = A.tranpose() * B
计算(考虑到你是在右边乘法)。拥有旋转矩阵表示后,可以将其转换为轴角表示(例如,请参见http://en.wikipedia.org/wiki/Axis-angle_representation)。
最后,由于您知道将A
带到B
的旋转轴,因此可以线性插值从零到之前从T
计算出的角度。
这相当于使用SLERP。
https://stackoverflow.com/questions/5580283
复制相似问题