图形学中的旋转主要分两种:欧拉旋转和轴角式旋转。
欧拉曾经证明过,任何旋转都可以表示为物体绕自身三轴的旋转。所以欧拉旋转就是物体以特定的顺序,依次绕自身的三轴进行的旋转。但是这种旋转在绕第二个轴旋转90°时会失去一个自由度,导致万向节锁的现象。
轴角式,顾名思义是绕某个特定轴旋转某个角度,通过四元数和Rodriguez公式都可以表示这一旋转过程。
复数可以表示为a+bi,其中i²=-1,而复数的相乘与矩阵相乘可以看做是等价的。四元数与复数相似但不是复数。四元数的定义a+bi+cj+dk,其中i²=j²=k²=ijk=-1。令向量V=(b,c,d),则四元数也可表示为[a,V]。四元数和矩阵一样,不满足乘法的交换律。
假设有两个四元数q1=[a,V],q2=[b,U],则两个四元数相乘的方法如下
对于一个向量V,将其表示为v=[0,V],令q=[cos(θ/2),sin(θ/2)U],其中U为旋转轴,θ为绕轴旋转的角度。则v'=qvq*,q*为q的共轭,v'就是V绕U轴旋转θ后的结果。
四元数的另一个优点是可以比较方便地进行插值,从而产生较为平滑的连续旋转。插值的方法有:Lerp,NLerp,Slerp.