四元数与空间旋转

单位四元数Unit quaternion)可以用于表示三维空间裡的旋转。它与常用的另外两种表示方式(三维正交矩阵和欧拉角)是等价的,但是避免了欧拉角表示法中的万向锁问题。比起三维正交矩阵表示,四元数表示能够更方便地给出旋转的转轴与旋转角。

基本方法
用四元数来表示旋转要解决两个问题,一是如何用四元数表示三维空间裡的点,二是如何用四元数表示三维空间的旋转。

四元数表示空间中的点
若三维空间裡的一个点的笛卡尔坐标为 (,,),则它用纯四元数(类似于纯虚数,即实部为0的四元数)++ 表示。

单位四元数表示一个三维空间旋转
设 为一个单位四元数,而 是一个纯四元数,定义
:R_q(p)=qpq^{-1}
则 () 也是一个纯四元数,可以证明 确实表示一个旋转,这个旋转将空间的点 旋转为空间的另一个点 ()。

与正交矩阵表示的关系
四元数的表示与正交矩阵表示是等价的,这可以通过直接的代数计算得到。

仿照关于单位复数的欧拉公式的证明方法,可以得到单位四元数的欧拉公式:
:e^{\frac\theta2(xi+yj+zk)}=\cos\frac\theta2+(xi+yj+zk)\sin\frac\theta2,\quad\text{for }x,y,z\in\mathbb{R} \text{ s.t. } x^2+y^2+z^2=1

显然,当 =1, ==0 的时候就回到一般的欧拉公式。


:q=e^{\frac\theta2(u_xi+u_yj+u_zk)}=\cos\frac\theta2+(u_xi+u_yj+u_zk)\sin\frac\theta2
:p=xi+yj+zk
:p'=q^{-1}pq=w+x'i+y'j+z'k
(通过下面的计算可以知道,=0,即计算结果是纯四元数)


:q^{-1}=e^{-\frac\theta2(u_xi+u_yj+u_zk)}=\cos\frac\theta2-(u_xi+u_yj+u_zk)\sin\frac\theta2

为简便起见,令
:c=\cos\frac\theta2, s=\sin\frac\theta2

\begin{array}{rcl}
q^{-1}pq&=&c-(u_xi+u_yj+u_zk)s[c+(u_xi+u_yj+u_zk)s]\\
&=&[c-(u_xi+u_yj+u_zk)s]\{-(u_xx+u_yy+u_zz)s+i[xc+(u_zy-u_yz)s]+j[yc+(u_xz-u_zx)s]+k[zc+(u_yx-u_xy)s]\}\\
&=&i\{xc^2+2(u_zy-u_yz)sc+[u_x(u_xx+u_yy+u_zz)-u_y(u_yx-u_xy)+u_z(u_xz-u_zx)]s^2\}+\ldots
\end{array}

省略号表示由第一项通过简单的轮换可以得到的项。最后得到四元数的矩阵表示为

\begin{bmatrix}x'\\y'\\z'\end{bmatrix}=M(q)\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}
c^2-(1-2u_x^2)s^2 & 2u_xu_ys^2+2u_zsc & 2u_xu_zs^2-2u_ysc\\
2u_xu_ys^2-2u_zsc & c^2-(1-2u_y^2)s^2 & 2u_yu_zs^2+2u_xsc\\
2u_xu_zs^2+2u_ysc & 2u_yu_zs^2-2u_xsc & c^2-(1-2u_z^2)s^2\\
\end{bmatrix}\begin{bmatrix}x\\y\\z\end{bmatrix}


:C=\cos\theta,S=\sin\theta
运用简单的三角恒等变形可以得到,
:
M(q)=\begin{bmatrix}
C+u_x^2(1-C) & u_xu_y(1-C)+u_zS & u_xu_z(1-C)-u_yS\\
u_xu_y(1-C)-u_zS & C+u_y^2(1-C) & u_yu_z(1-C)+u_xS\\
u_xu_z(1-C)+u_yS & u_yu_z(1-C)-u_xS & C+u_z^2(1-C)\\
\end{bmatrix}

容易验证,()是正交矩阵,且行列式为+1,于是我们得到了四元数对应于正交矩阵的关系。即我们证明了的确表示三维空间中的一个旋转。进一步由旋转的正交矩阵表示的相关知识知,上式中的 就是旋转角。

旋转轴与旋转角
由四元数的结合律马上可以得到,若为单位纯四元数,则
:R_{e^{i\lambda r}}(kr)=e^{-i\lambda r}kre^{i\lambda r}=kr,\ \forall\lambda,k\in\mathbb{R}
这表明在旋转操作下不变,也就是给出旋转的旋转轴(当然也给出旋转的旋转轴),不妨取=,由四元数的欧拉公式我们马上知道,任给一个单位四元数,计算它的虚部,我们就马上可以知道转轴是什么。

同时,根据四元数的正交矩阵表示,我们又可以马上得到,计算一个单位四元数的实部,它的反余弦值给出旋转角的一半。于是我们马上可以看到用四元数相对于正交矩阵表示的优势:在四元数表示下,计算转轴和旋转角变得异常简单。

进一步地,这表明了三维空间中的每一个旋转都可以用单位四元数表出。若进一步要求 非负,则这种表出是唯一的。

旋转操作的复合
显然有:
:R_{q_1q_2}(p)=(q_1q_2)p(q_1q_2)^{-1}=q_1q_2pq_2^{-1}q_1^{-1}=R_{q_1}[R_{q_2}(p)]

于是两个旋转操作的复合,只需要将对应的单位四元数相乘,这一点比欧拉角表示要简单。

与超球面、典型群、自旋群的关系
首先很容易看到,单位四元数与3-球面3(或三维实射影空间,RP3)同构。

其次,根据单位四元数的矩阵表示,我们又知道,存在一个单位四元数到特殊正交群 SO(3) 的同态,但这不是同构。给定一个角 , 2π+ 与 对应的正交矩阵相同,但是由欧拉公式给出的单位四元数不同(恰好相反)。实际上,这反映了在三维空间中旋转 2π 弧度和旋转 4π 弧度是不等价的,参见旋量。

事实上,单位四元数群与自旋群 Spin(3) 同构。这也表明,3与自旋群 Spin(3) 同构。进一步地,它们微分同胚。

另一方面,单位四元数群与复数域上的2-球面同构,于是与特殊正交群 SO(2,C) 同构,而后者实际上就是特殊酉群 SU(2)。3 与 SU(2) 也是微分同胚的。

参考
Simon L. Altman (1986) Rotations, Quaternions, and Double Groups*, Dover Publications.
Du Val, Patrick (1964), "Homographies, quaternions, and rotations*". Oxford, Clarendon Press (Oxford mathematical monographs). LCCN 64056979

外部連結

评论 (0)

  • 还没有评论,来抢沙发吧。