感谢一叶斋技术分享:http://www.cnblogs.com/yiyezhai/p/3176725.html
本文基于一叶斋博客内容做更详细分析,如果错误,恳请指正。
四元数
四元数是今天的主角,它能够很方便的刻画刚体绕任意轴的旋转。四元数是一种高阶复数,四元数q表示为:
其中,i,j,k满足:
由于i,j,k的性质和笛卡尔坐标系三个轴叉乘的性质很像,所以可以将四元数写成一个向量和一个实数组合的形式:
可以推导出四元数的一些运算性质,包括:
* 四元数乘法
* 共轭四元数
* 四元数的平方模
* 四元数的逆
四元数可以看做是向量和实数的一种更加一般的形式,向量可以视作为实部为0的四元数,而实数可以是作为虚部为0的四元数。上述四元数的运算性质也是实数或向量的运算性质的更一般的形式。
四元数可用来刻画三维空间中的旋转,绕单位向量(x,y,z)表示的轴旋转θ,可令:
刚体坐标系中的点p(P,0)(写成四元数的形式),旋转后的坐标p'为:
接下来我们来证明这一点。
首先,我们证明
qpq−1=(sq)p(sq)−1
qpq1sqpsq1
其中s为实数。显然
注:此处原文貌似有误,实为(sq)p(sq)−1=sqpq−1s−1=qpp−1
常数的逆为常数的倒数
此时,我们可以将q看做是单位矩阵,因为如果q不是单位矩阵,我们就可以乘以一个常数s将其化为单位矩阵。
然后,我们证明qpq^{-1}和p的模长相等
下面将q视为单位四元数:
四元数q的标量:
那么:
最后,我们证明
如图所示,u为旋转轴,旋转角度为σ,向量v旋转到w处。旋转到σ/2处为k(图中未标出)。
下面也用相同的字母指代四元数,如u就表示向量u的四元数形式((ux,uy,uz),0)。
首先,令u方向上的单位向量为u(为了方便,命名不变,后面的u都是指旋转轴方向的单位四元数),那么根据q的定义,参见四元数乘法法则:
注:单位向量点积:a·b表示b在a上的投影。单位向量的差积:a*b表示垂直于a和b向量平面的向量
原文有误:实为(k,0)(-v,0),才能得到kv*
现在令
如果能证明w与v的夹角是σ,那么就说明w确实是v旋转σ得到的,整个命题就得证了。
注意v,k和w都是实部为0的单位四元数,表示单位向量,我们有:
注:单位四元数vv相乘的结果为1
所以
上面的式子拆分成实部和虚部,虚部表明w与-k的平面和k与-v的平面重合,实部表明w和-k之间的夹角与k和-v之间的夹角相等,都是π-σ/2。这就说明了w与v的夹角是σ,原命题就得证了。