四元数几何

四元数在机器人,SLAM,自动驾驶领域有十分重要的应用。本文从罗德里格斯公式出发,详细介绍四元数的定义,运算,并给出四元数在旋转表示中的应用和四元数的运动学表示,同时给出旋转向量,旋转矩阵和四元数间的转换,在最后,还本文还写明了SLerp插值方式。

1、旋转向量和旋转矩阵

下面求向量 v \mathbf{v} v绕单位旋转轴 u \mathbf{u} u旋转 θ \theta θ弧度得到的新向量 v ′ \mathbf{v}^{\prime} v

可以把向量 v \mathbf{v} v拆分成平行于旋转轴的 v ∥ \mathbf{v}_{\parallel} v和垂直于旋转轴的 v ⊥ \mathbf{v}_{\perp} v和,即
v = v ∥ + v ⊥ (1) \mathbf{v}=\mathbf{v}_{\parallel}+\mathbf{v}_{\perp}\tag{1} v=v+v(1)
分别将这两个向量旋转,获得 v ∥ ′ \mathbf{v}^{\prime}_{\parallel} v v ⊥ ′ \mathbf{v}^{\prime}_{\perp} v,将二者相加即得到原向量旋转之后的结果
v ′ = v ∥ ′ + v ⊥ ′ (2) \mathbf{v}^{\prime}=\mathbf{v}^{\prime}_{\parallel}+\mathbf{v}^{\prime}_{\perp}\tag{2} v=v+v(2)
旋转过程如下图所示

在这里插入图片描述

可以看到, v ∥ \mathbf{v}_{\parallel} v v \mathbf{v} v u \mathbf{u} u上的正交投影
v ∥ = ( v ⋅ u ) ∥ u ∥ u = ( v ⋅ u ) u (3) \mathbf{v}_{\parallel}=\frac{(\mathbf{v}\cdot\mathbf{u})}{\|\mathbf{u}\|}\mathbf{u}=(\mathbf{v}\cdot\mathbf{u})\mathbf{u}\tag{3} v=u(vu)u=(vu)u(3)
( 1 ) , ( 3 ) (1),(3) (1),(3)
v ⊥ = v − ( v ⋅ u ) u (4) \mathbf{v}_{\bot}=\mathbf{v}-(\mathbf{v}\cdot\mathbf{u})\mathbf{u}\tag{4} v=v(vu)u(4)
由示意图知, v ∥ \mathbf{v}_{\parallel} v实际并未旋转
v ∥ ′ = v ∥ (5) \mathbf{v}^{\prime}_{\parallel}=\mathbf{v}_{\parallel}\tag{5} v=v(5)
v ⊥ \mathbf{v}_{\perp} v的旋转可以看成是在与 u \mathbf{u} u垂直的圆面内进行的,且不改变模长

要求 v ⊥ ′ \mathbf{v}^{\prime}_{\perp} v,可首先定义同时正交于 u \mathbf{u} u v ⊥ \mathbf{v}_{\perp} v的向量
w = u × v ⊥ \mathbf{w}=\mathbf{u}\times\mathbf{v}_{\perp} w=u×v
按照右手定则可以发现 w \mathbf{w} w指向 v ⊥ \mathbf{v}_{\perp} v u \mathbf{u} u旋转 π 2 \frac{\pi}{2} 2π弧度后的方向

根据上面的讨论, v ⊥ ′ \mathbf{v}^{\prime}_{\perp} v表示成其在 v ⊥ \mathbf{v}_{\perp} v方向上的投影与其在 w \mathbf{w} w方向上的投影之和

在这里插入图片描述

可以得到
v ⊥ ′ = v ⊥ ′ ⋅ v ⊥ ∥ v ⊥ ∥ v ⊥ ∥ v ⊥ ∥ + v ⊥ ′ ⋅ w ∥ w ∥ w ∥ w ∥ = cos ⁡ θ v ⊥ + sin ⁡ θ w = cos ⁡ θ v ⊥ + sin ⁡ θ ( u × v ⊥ ) \begin{align*} \mathbf{v}^{\prime}_{\perp} &=\frac{\mathbf{v}^{\prime}_{\perp}\cdot\mathbf{v}_{\perp}}{\|\mathbf{v}_{\perp}\|}\frac{\mathbf{v}_{\perp}}{\|\mathbf{v}_{\perp}\|}+\frac{\mathbf{v}^{\prime}_{\perp}\cdot\mathbf{w}}{\|\mathbf{w}\|}\frac{\mathbf{w}}{\|\mathbf{w}\|}\\ &=\cos\theta\mathbf{v}_{\perp}+\sin\theta\mathbf{w}\\ &=\cos\theta\mathbf{v}_{\perp}+\sin\theta(\mathbf{u}\times\mathbf{v}_{\perp})\tag{6} \end{align*} v=vvvvv+wvwww=cosθv+sinθw=cosθv+sinθ(u×v)(6)
上式从第一行推导至第二行用到了 ∥ w ∥ = ∥ u × v ⊥ ∥ = ∥ u ∥ ∥ v ⊥ ∥ = ∥ v ⊥ ∥ \|\mathbf{w}\|=\|\mathbf{u}\times\mathbf{v}_{\perp}\|=\|\mathbf{u}\|\|\mathbf{v}_{\perp}\|=\|\mathbf{v}_{\perp}\| w=u×v=u∥∥v=v ∥ v ⊥ ′ ∥ = ∥ v ⊥ ∥ \|\mathbf{v}^{\prime}_{\perp}\|=\|\mathbf{v}_{\perp}\| v=v

考虑到 u × v = u × v ⊥ \mathbf{u}\times\mathbf{v}=\mathbf{u}\times\mathbf{v}_{\perp} u×v=u×v,由 ( 2 ) , ( 3 ) , ( 4 ) , ( 5 ) , ( 6 ) (2),(3),(4),(5),(6) (2),(3),(4),(5),(6)可得
v ′ = v ∥ + cos ⁡ θ v ⊥ + sin ⁡ θ ( u × v ⊥ ) = ( v ⋅ u ) u + cos ⁡ θ ( v − ( v ⋅ u ) u ) + sin ⁡ θ ( u × v ) = cos ⁡ θ v + ( 1 − cos ⁡ θ ) u u T v + sin ⁡ θ u ∧ v = ( cos ⁡ θ I + ( 1 − cos ⁡ θ ) u u T + sin ⁡ θ u ∧ ) v \begin{align*} \mathbf{v}^{\prime}&=\mathbf{v}_{\parallel}+\cos\theta\mathbf{v}_{\perp}+\sin\theta(\mathbf{u}\times\mathbf{v}_{\perp})\\ &=(\mathbf{v}\cdot\mathbf{u})\mathbf{u}+\cos\theta(\mathbf{v}-(\mathbf{v}\cdot\mathbf{u})\mathbf{u})+\sin\theta(\mathbf{u}\times\mathbf{v})\\ &=\cos\theta\mathbf{v}+(1-\cos\theta)\mathbf{u}\mathbf{u}^{T}\mathbf{v}+\sin\theta\mathbf{u}^{\wedge}\mathbf{v}\\ &=(\cos\theta\mathbf{I}+(1-\cos\theta)\mathbf{u}\mathbf{u}^{T}+\sin\theta\mathbf{u}^{\wedge})\mathbf{v}\tag{7} \end{align*} v=v+cosθv+sinθ(u×v)=(vu)u+cosθ(v(vu)u)+sinθ(u×v)=cosθv+(1cosθ)uuTv+sinθuv=(cosθI+(1cosθ)uuT+sinθu)v(7)
可以认为 ( 7 ) (7) (7)中关于 v \mathbf{v} v如何旋转的信息包含在如下旋转向量中
ϕ = θ u (8) \boldsymbol\phi=\theta\mathbf{u}\tag{8} ϕ=θu(8)
需要注意的是,对应于同一旋转过程的旋转向量并不唯一,有以下两个原因:

原因一:对于固定的旋转轴,角度相差 2 k π 2k\pi 2表示同一旋转

原因二:对于从 v \mathbf{v} v v ′ \mathbf{v}^{\prime} v的旋转过程,转轴可以为二者角平分面上的任意单位向量,其中一个特殊情况是绕 u \mathbf{u} u旋转 θ \theta θ弧度等价于绕 − u -\mathbf{u} u旋转 − θ -\theta θ弧度

考虑到上述两个原因,通常限制旋转角度 θ ∈ [ 0 , π ] \theta\in[0,\pi] θ[0,π],但仍无法完全避免原因二带来的不唯一性,这实际上也导致了对应于同一旋转过程的旋转矩阵和四元数的不唯一性

还可以将该 ( 7 ) (7) (7)写成旋转矩阵的形式,即
v ′ = R v (9) \mathbf{v}^{\prime}=\mathbf{R}\mathbf{v}\tag{9} v=Rv(9)
不难看出
R = cos ⁡ θ I + ( 1 − cos ⁡ θ ) u u T + sin ⁡ θ u ∧ (10) \mathbf{R}=\cos\theta\mathbf{I}+(1-\cos\theta)\mathbf{u}\mathbf{u}^{T}+\sin\theta\mathbf{u}^{\wedge}\tag{10} R=cosθI+(1cosθ)uuT+sinθu(10)
下面研究两种旋转方式之间的转换

1.1、旋转向量和旋转矩阵间的转换
1.1.1、从旋转向量到旋转矩阵

从旋转向量 ϕ = θ [ u 1 , u 2 , u 3 ] T ∈ R 3 ,   θ ∈ [ 0 , π ] \boldsymbol\phi=\theta[u_{1},u_{2}, u_{3}]^{T}\in\R^{3},\,\theta\in[0,\pi] ϕ=θ[u1,u2,u3]TR3,θ[0,π]出发求旋转矩阵 R ∈ S O ( 3 ) \mathbf{R}\in{SO}(3) RSO(3)

( 10 ) (10) (10)等号右侧的矩阵写开
R = [ cos ⁡ θ + ( 1 − cos ⁡ θ ) u 1 2 ( 1 − cos ⁡ θ ) u 1 u 2 − sin ⁡ ( θ ) u 3 ( 1 − cos ⁡ θ ) u 1 u 3 + sin ⁡ ( θ ) u 2 ( 1 − cos ⁡ θ ) u 1 u 2 + sin ⁡ ( θ ) u 3 cos ⁡ θ + ( 1 − cos ⁡ θ ) u 2 2 ( 1 − cos ⁡ θ ) u 2 u 3 − sin ⁡ ( θ ) u 1 ( 1 − cos ⁡ θ ) u 1 u 3 − sin ⁡ ( θ ) u 2 ( 1 − cos ⁡ θ ) u 2 u 3 + sin ⁡ ( θ ) u 1 cos ⁡ θ + ( 1 − cos ⁡ θ ) u 3 2 ] (11) \mathbf{R}=\begin{bmatrix} \cos\theta+(1-\cos\theta)u^{2}_{1}&(1-\cos\theta)u_{1}u_{2}-\sin(\theta)u_{3}&(1-\cos\theta)u_{1}u_{3}+\sin(\theta)u_{2}\\ (1-\cos\theta)u_{1}u_{2}+\sin(\theta)u_{3}&\cos\theta+(1-\cos\theta)u^{2}_{2}&(1-\cos\theta)u_{2}u_{3}-\sin(\theta)u_{1}\\ (1-\cos\theta)u_{1}u_{3}-\sin(\theta)u_{2}&(1-\cos\theta)u_{2}u_{3}+\sin(\theta)u_{1}&\cos\theta+(1-\cos\theta)u^{2}_{3} \end{bmatrix}\tag{11} R= cosθ+(1cosθ)u12(1cosθ)u1u2+sin(θ)u3(1cosθ)u1u3sin(θ)u2(1cosθ)u1u2sin(θ)u3cosθ+(1cosθ)u22(1cosθ)u2u3+sin(θ)u1(1cosθ)u1u3+sin(θ)u2(1cosθ)u2u3sin(θ)u1cosθ+(1cosθ)u32 (11)
可以证明通过 ( 10 ) (10) (10) ( 11 ) (11) (11)求出的旋转矩阵 R ∈ S O ( 3 ) \mathbf{R}\in{SO}(3) RSO(3)

1.1.2、从旋转矩阵到旋转向量

从旋转矩阵 R ∈ S O ( 3 ) \mathbf{R}\in{SO}(3) RSO(3)出发求旋转向量 ϕ = θ u ∈ R 3 ,   θ ∈ [ 0 , π ] \boldsymbol\phi=\theta\mathbf{u}\in\R^{3},\,\theta\in[0,\pi] ϕ=θuR3,θ[0,π]

首先求转轴向量,由于转轴向量在旋转前后不改变,故
R u = u (12) \mathbf{R}\mathbf{u}=\mathbf{u}\tag{12} Ru=u(12)
也即转轴向量是旋转矩阵特征值为 1 1 1的特征向量,可以证明,对于 R ∈ S O ( 3 ) {\mathbf{R}}\in{SO(3)} RSO(3),且 R ≠ I \mathbf{R}\neq\mathbf{I} R=I ( 12 ) (12) (12)具有唯一一组线性无关解,因为转轴为单位向量,故其可取为大小相等,方向相反的两个值

再求转角,根据 ( 10 ) (10) (10),可得
cos ⁡ θ = t r ( R ) − 1 2 (13) \cos\theta=\frac{\mathrm{tr}(\mathbf{R})-1}{2}\tag{13} cosθ=2tr(R)1(13)
可以看出,因为要求 θ ∈ [ 0 , π ] \theta\in[0,\pi] θ[0,π],故 θ \theta θ有唯一解,若 θ = 0 \theta=0 θ=0,此时 R = I \mathbf{R}=\mathbf{I} R=I ϕ = 0 \boldsymbol\phi=\mathbf{0} ϕ=0为所求值;若 θ = π \theta=\pi θ=π,此时 t r ( R ) = − 1 \mathrm{tr}(\mathbf{R})=-1 tr(R)=1 u \mathbf{u} u可任取一个可能值;若 θ ∈ ( 0 , π ) \theta\in(0,\pi) θ(0,π),任取 u \mathbf{u} u为一个可能值,并代入 ( 10 ) (10) (10) ( 11 ) (11) (11)验证是否产生了正确的旋转矩阵 R \mathbf{R} R,若是,则该可能值即为所求;若不是,则将 u \mathbf{u} u的符号取反。最终求出的旋转向量为 ϕ = θ u ∈ R 3 ,   θ ∈ [ 0 , π ] \boldsymbol\phi=\theta\mathbf{u}\in\R^{3},\,\theta\in[0,\pi] ϕ=θuR3,θ[0,π]

根据上面的讨论可看到,在上述要求下,旋转向量到旋转矩阵的映射是单射,而旋转矩阵到旋转向量的映射则非单射

2、四元数的定义和运算

四元数定义为基 { 1 , i , j , k } \{1,\mathrm{i},\mathrm{j},\mathrm{k}\} {1,i,j,k}的线性组合
q = q 0 + q 1 i + q 2 j + q 3 k \mathbf{q}=q_{0}+q_{1}\mathrm{i}+q_{2}\mathrm{j}+q_{3}\mathrm{k} q=q0+q1i+q2j+q3k
其中 q 0 ∈ R q_{0}\in\mathbb{R} q0R为实部, q 1 , q 2 , q 3 ∈ R q_{1},q_{2},q_{3}\in\mathbb{R} q1,q2,q3R为虚部。 i , j , k \mathrm{i},\mathrm{j},\mathrm{k} i,j,k满足运算法则
{ i 2 = j 2 = k 2 = − 1 i j = k , j i = − k j k = i , k j = − i k i = j , i k = − j \left\{ \begin{array}{l} \mathrm{i}^{2}=\mathrm{j}^{2}=\mathrm{k}^{2}=-1\\ \mathrm{ij}=\mathrm{k},\mathrm{ji}=-\mathrm{k}\\ \mathrm{jk}=\mathrm{i},\mathrm{kj}=-\mathrm{i}\\ \mathrm{ki}=\mathrm{j},\mathrm{ik}=-\mathrm{j}\\ \end{array} \right. i2=j2=k2=1ij=k,ji=kjk=i,kj=iki=j,ik=j
因为基固定,故也可将四元数看作由一个标量和一个向量组合而成
q = [ s , v ] , s = q 0 v = [ q 1 , q 2 , q 3 ] T \mathbf{q}=[s,\mathbf{v}],\quad s=q_{0}\quad \mathbf{v}=\begin{bmatrix} q_{1}, q_{2}, q_{3}\end{bmatrix}^{T} q=[s,v],s=q0v=[q1,q2,q3]T
注意,四元数与四维向量不同,二者各自具有对方不具有的运算,但在某些运算上又有相似之处。记全体四元数的集合为 H \mathbb{H} H,特别地,若 q 0 = 0 q_{0}=0 q0=0,则称 q = [ 0 , v ] \mathbf{\mathbf{q}}=[0,\mathbf{v}] q=[0,v]为纯虚四元数;若 v = 0 \mathbf{v}=\mathbf{0} v=0,则 q = [ q 0 , 0 ] \mathbf{\mathbf{q}}=[q_{0},\mathbf{0}] q=[q0,0]称为纯实四元数

对四元数定义如下运算:

  • 加法
    q 1 + q 2 = [ s 1 + s 2 , v 1 + v 2 ] \mathbf{q}_{1}+{\mathbf{q}}_{2}=[s_{1}+{s}_{2},\mathbf{v}_{1}+\mathbf{v}_{2}] q1+q2=[s1+s2,v1+v2]
    四元数加法和减法具有以下性质:
    q 1 + q 2 = q 2 + q 1 \mathbf{q}_{1}+\mathbf{q}_{2}=\mathbf{q}_{2}+\mathbf{q}_{1} q1+q2=q2+q1

  • 数乘
    r q = [ r s , r v ] , r ∈ R r\mathbf{q}=[rs,r\mathbf{v}],\quad{r}\in\mathbb{R} rq=[rs,rv],rR
    四元数数乘具有以下性质:
    r 1 ( r 2 q ) = r 1 r 2 q , ( r 1 + r 2 ) q = r 1 q + r 2 q , r ( q 1 + q 2 ) = r q 1 + r q 2 , \begin{align*} r_{1}(r_{2}\mathbf{q})=r_{1}r_{2}\mathbf{q},\quad (r_{1}+r_{2})\mathbf{q}=r_{1}\mathbf{q}+r_{2}\mathbf{q},\quad r(\mathbf{q}_{1}+\mathbf{q}_{2})=r\mathbf{q}_{1}+r\mathbf{q}_{2},\quad \end{align*} r1(r2q)=r1r2q,(r1+r2)q=r1q+r2q,r(q1+q2)=rq1+rq2,
    要求上式中 r 1 , r 2 , r ∈ R r_{1},r_{2},r\in\mathbb{R} r1,r2,rR q , q 1 , q 2 ∈ H \mathbf{\mathbf{q}},\mathbf{\mathbf{q}}_{1},\mathbf{\mathbf{q}}_{2}\in\mathbb{H} q,q1,q2H

  • 减法
    q 1 − q 2 = q 1 + ( − q 2 ) \mathbf{q}_{1}-\mathbf{q}_{2}=\mathbf{q}_{1}+(-\mathbf{q}_{2}) q1q2=q1+(q2)

  • 乘法

    乘法运算是将的左边因数的每一项与右边因数的每一项非交换地相乘,最后相加

    可以验证,乘法结果可写为
    q 1 q 2 = [ s 1 s 2 − v 1 T v 2 , s 1 v 2 + s 2 v 1 + v 1 × v 2 ] \begin{align*} \mathbf{q}_{1}\mathbf{q}_{2}=[s_{1}s_{2}-\mathbf{v}^{T}_{1}\mathbf{v}_{2},s_{1}\mathbf{v}_{2}+s_{2}\mathbf{v}_{1}+\mathbf{v}_{1}\times\mathbf{v}_{2}] \end{align*} q1q2=[s1s2v1Tv2,s1v2+s2v1+v1×v2]
    四元数乘法具有以下性质:
    ( r q 1 ) q 2 = q 1 ( r q 2 ) = r ( q 1 q 2 ) , q 1 ( q 2 q 3 ) = ( q 1 q 2 ) q 3 , q 1 ( q 2 ± q 3 ) = q 1 q 2 ± q 1 q 3 , ( q 1 ± q 2 ) q 3 = q 1 q 3 ± q 2 q 3 (r\mathbf{q}_{1})\mathbf{q}_{2}=\mathbf{q}_{1}(r\mathbf{q}_{2})={r}(\mathbf{q}_{1}\mathbf{q}_{2}),\quad \mathbf{q}_{1}(\mathbf{q}_{2}\mathbf{q}_{3})=(\mathbf{q}_{1}\mathbf{q}_{2})\mathbf{q}_{3},\quad \mathbf{q}_{1}(\mathbf{q}_{2}\pm{\mathbf{q}}_{3})=\mathbf{q}_{1}\mathbf{q}_{2}\pm{\mathbf{q}}_{1}\mathbf{q}_{3},\quad (\mathbf{q}_{1}\pm{\mathbf{q}}_{2})\mathbf{q}_{3}=\mathbf{q}_{1}\mathbf{q}_{3}\pm{\mathbf{q}}_{2}\mathbf{q}_{3} (rq1)q2=q1(rq2)=r(q1q2),q1(q2q3)=(q1q2)q3,q1(q2±q3)=q1q2±q1q3,(q1±q2)q3=q1q3±q2q3
    要求上式中 r ∈ R r\in\mathbb{R} rR q 1 , q 2 , q 3 ∈ H \mathbf{\mathbf{q}}_{1},\mathbf{\mathbf{q}}_{2},\mathbf{\mathbf{q}}_{3}\in\mathbb{H} q1,q2,q3H,注意四元数乘法不满足交换律,即 q 1 q 2 \mathbf{\mathbf{q}}_{1}\mathbf{\mathbf{q}}_{2} q1q2不一定等于 q 2 q 1 {\mathbf{\mathbf{q}}}_{2}\mathbf{\mathbf{q}}_{1} q2q1

  • 点乘
    q 1 ⋅ q 2 = s 1 s 2 + v 1 T v 2 \mathbf{q}_{1}\cdot\mathbf{q}_{2}=s_{1}s_{2}+\mathbf{v}^{T}_{1}\mathbf{v}_{2} q1q2=s1s2+v1Tv2
    类似向量点乘,上式还可以写成
    q 1 ⋅ q 2 = ∥ q 1 ∥ ∥ q 2 ∥ cos ⁡ Ω \mathbf{q}_{1}\cdot\mathbf{q}_{2}=\|\mathbf{q}_{1}\|\|\mathbf{q}_{2}\|\cos\Omega q1q2=q1∥∥q2cosΩ
    其中 Ω ∈ [ 0 , π ] \Omega\in[0,\pi] Ω[0,π]表示理解成向量的 q 1 \mathbf{q}_{1} q1 q 2 \mathbf{q}_{2} q2之间的夹角

  • 模长

    四元数的模长定义为
    ∥ q ∥ = s 2 + v v T \|\mathbf{q}\|=\sqrt{s^{2}+\mathbf{v}\mathbf{v}^{T}} q=s2+vvT
    特别地,若 ∥ q ∥ = 1 \|\mathbf{\mathbf{q}}\|=1 q=1,则称 q \mathbf{\mathbf{q}} q为单位四元数,记作 q ∈ H 1 \mathbf{\mathbf{q}}\in\mathbb{H}_{1} qH1,此时存在唯一的 θ ∈ [ 0 , π ] \theta\in[0,\pi] θ[0,π] v ∈ R 3 \mathbf{v}\in\mathbb{R}^{3} vR3,使
    q = [ cos ⁡ θ , sin ⁡ θ v ] \mathbf{q}=[\cos\theta,\sin\theta\mathbf{v}] q=[cosθ,sinθv]
    四元数模长具有以下性质:
    ∥ r q ∥ = r ∥ q ∥ , ∥ q 1 q 2 ∥ = ∥ q 1 ∥ ∥ q 2 ∥ \|r\mathbf{q}\|=r\|\mathbf{q}\|,\quad \|\mathbf{q}_{1}\mathbf{q}_{2}\|=\|\mathbf{q}_{1}\|\|\mathbf{q}_{2}\|\\ rq=rq,q1q2=q1∥∥q2
    要求上式中 r ∈ R r\in\mathbb{R} rR q , q 1 , q 2 ∈ H \mathbf{\mathbf{q}},\mathbf{\mathbf{q}}_{1},\mathbf{\mathbf{q}}_{2}\in\mathbb{H} q,q1,q2H

  • 共轭
    q ∗ = [ s , − v ] \mathbf{q}^{\ast}=[s,-\mathbf{v}] q=[s,v]
    四元数共轭具有以下性质:
    ∥ q ∗ ∥ = ∥ q ∥ , ( q ∗ ) ∗ = q , ( r q ) ∗ = r q ∗ , ( q 1 ± q 2 ) ∗ = q 1 ∗ ± q 2 ∗ , ( q 1 q 2 ) ∗ = q 2 ∗ q 1 ∗ \begin{align*} \|\mathbf{q}^{\ast}\|=\|\mathbf{q}\|,\quad (\mathbf{q}^{\ast})^{\ast}=\mathbf{q},\quad (r\mathbf{q})^{\ast}=r\mathbf{q}^{\ast},\quad (\mathbf{q}_{1}\pm{\mathbf{q}}_{2})^{\ast}=\mathbf{q}_{1}^{\ast}\pm{\mathbf{q}}_{2}^{\ast},\quad (\mathbf{q}_{1}\mathbf{q}_{2})^{\ast}=\mathbf{q}_{2}^{\ast}\mathbf{q}^{\ast}_{1} \end{align*} q=q,(q)=q,(rq)=rq,(q1±q2)=q1±q2,(q1q2)=q2q1
    要求上式中 r ∈ R r\in\mathbb{R} rR q , q 1 , q 2 ∈ H \mathbf{\mathbf{q}},\mathbf{\mathbf{q}}_{1},\mathbf{\mathbf{q}}_{2}\in\mathbb{H} q,q1,q2H

  • H ˚ = H \ { [ 0 , 0 ] } \mathring{\mathbb{H}}=\mathbb{H}\backslash\{[0,\mathbf{0}]\} H˚=H\{[0,0]},则可以证明 H ˚ \mathring{\mathbb{H}} H˚和四元数乘法构成群,群 H ˚ \mathring{\mathbb{H}} H˚的单位元为 1 = [ 1 , 0 ] \mathbf{1}=[1,\mathbf{0}] 1=[1,0],即对于 ∀ q ∈ H ˚ \forall{\mathbf{\mathbf{q}}}\in\mathring{\mathbb{H}} qH˚
    q 1 = 1 q = q \mathbf{q}\mathbf{1}=\mathbf{1}\mathbf{q}=\mathbf{q} q1=1q=q
    q ∈ H ˚ \mathbf{\mathbf{q}}\in\mathring{\mathbb{H}} qH˚,则 q − 1 \mathbf{\mathbf{q}}^{-1} q1定义为 q \mathbf{\mathbf{q}} q H ˚ \mathring{\mathbb{H}} H˚中的逆元,即满足
    q − 1 q = q q − 1 = 1 \mathbf{q}^{-1}\mathbf{q}=\mathbf{q}\mathbf{q}^{-1}=\mathbf 1 q1q=qq1=1
    可以证明, q − 1 \mathbf{\mathbf{q}}^{-1} q1的值为
    q − 1 = q ∗ ∥ q ∥ 2 \mathbf{q}^{-1}=\frac{\mathbf{q}^{\ast}}{\|\mathbf{q}\|^{2}} q1=q2q
    四元数的逆具有以下性质:
    ∥ q − 1 ∥ = 1 ∥ q ∥ , ( q − 1 ) − 1 = q , ( r q ) − 1 = q − 1 r , ( q 1 q 2 ) − 1 = q 2 − 1 q 1 − 1 \begin{align*} \|\mathbf{q}^{-1}\|=\frac{1}{\|\mathbf{q}\|},\quad (\mathbf{q}^{-1})^{-1}=\mathbf{q},\quad (r\mathbf{q})^{-1}=\frac{\mathbf{q}^{-1}}{r},\quad (\mathbf{q}_{1}\mathbf{q}_{2})^{-1}=\mathbf{q}^{-1}_{2}\mathbf{q}^{-1}_{1} \end{align*} q1=q1,(q1)1=q,(rq)1=rq1,(q1q2)1=q21q11
    要求上式中 r ≠ 0 r\neq0 r=0 q , q 1 , q 2 ∈ H ˚ \mathbf{\mathbf{q}},\mathbf{\mathbf{q}}_{1},\mathbf{\mathbf{q}}_{2}\in\mathring{\mathbb{H}} q,q1,q2H˚

  • 指数

    q = [ 0 , θ v ] ,   θ ∈ R , v ∈ R 3 \mathbf{\mathbf{q}}=[0,\theta\mathbf{v}],\,\theta\in\mathbb{R},\mathbf{v}\in\mathbb{R}^{3} q=[0,θv],θR,vR3,则 q \mathbf{q} q的指数为
    exp ⁡ ( q ) = ∑ k = 0 ∞ 1 k ! q k \exp(\mathbf{q})=\sum_{k=0}^{\infty}\frac{1}{k!}\mathbf{q}^{k} exp(q)=k=0k!1qk
    可以求出
    exp ⁡ ( q ) = [ cos ⁡ θ , sin ⁡ θ v ] \exp(\mathbf{q})=[\cos\theta,\sin\theta\mathbf{v}] exp(q)=[cosθ,sinθv]
    能够看到,任何纯虚四元数的指数映射都为单位四元数

  • 对数

    q ∈ H 1 \mathbf{\mathbf{q}}\in\mathbb{H}_{1} qH1,则存在唯一的 θ ∈ [ 0 , π ] \theta\in[0,\pi] θ[0,π] v ∈ R 3 \mathbf{v}\in\mathbb{R}^{3} vR3,使 q = [ cos ⁡ θ , sin ⁡ θ v ] \mathbf{\mathbf{q}}=[\cos\theta,\sin\theta\mathbf{v}] q=[cosθ,sinθv],此时 q \mathbf{\mathbf{q}} q的对数定义为
    log ⁡ ( q ) = [ 0 , θ v ] \log(\mathbf{q})=[0,\theta\mathbf{v}] log(q)=[0,θv]

  • 实数次幂

    q ∈ H 1 \mathbf{\mathbf{q}}\in\mathbb{H}_{1} qH1,则 q \mathbf{\mathbf{q}} q t ∈ R t\in\R tR次幂 q t \mathbf{\mathbf{q}}^{t} qt
    q t = exp ⁡ ( t log ⁡ q ) \mathbf{q}^{t}=\exp(t\log \mathbf{q}) qt=exp(tlogq)
    代入指数和对数的定义,可以得到
    q t = [ cos ⁡ ( t θ ) , sin ⁡ ( t θ ) v ] \mathbf{q}^{t}=[\cos(t\theta),\sin(t\theta)\mathbf{v}] qt=[cos(),sin()v]
    四元数的幂具有以下性质:
    log ⁡ ( q t ) = t log ⁡ ( q ) , q t 1 q t 2 = q t 1 + t 2 , ( q t 1 ) t 2 = q t 1 t 2 \log(\mathbf{q}^{t})=t\log(\mathbf{q}),\quad \mathbf{q}^{t_{1}}\mathbf{\mathbf{q}}^{t_{2}}=\mathbf{q}^{t_{1}+t_{2}},\quad (\mathbf{q}^{t_{1}})^{t_{2}}=\mathbf{q}^{t_{1}t_{2}} log(qt)=tlog(q),qt1qt2=qt1+t2,(qt1)t2=qt1t2
    要求上式中 t , t 1 , t 2 ∈ R t,t_{1},t_{2}\in\R t,t1,t2R q ∈ H 1 \mathbf{\mathbf{q}}\in\mathbb{H}_{1} qH1

3、用四元数表示旋转

仍关注向量 v \mathbf{v} v绕单位旋转轴 u \mathbf{u} u旋转 θ \theta θ弧度得到的新向量 v ′ \mathbf{v}^{\prime} v的过程,符号与第1节保持一致

首先根定义如下纯虚四元数
p ← [ 0 , v ] p ∥ = [ 0 , v ∥ ] p ⊥ = [ 0 , v ⊥ ] p ′ = [ 0 , v ′ ] p ∥ ′ = [ 0 , v ∥ ′ ] p ⊥ ′ = [ 0 , v ⊥ ′ ] (14) \begin{align*} \mathbf{p}&\leftarrow[0,\mathbf{v}] & \mathbf{p}_{\parallel}&=[0,\mathbf{v}_{\parallel}] & \mathbf{p}_{\perp}&=[0,\mathbf{v}_{\perp}]\\ \mathbf{p}^{\prime}&=[0,\mathbf{v}^{\prime}] & \mathbf{p}^{\prime}_{\parallel}&=[0,\mathbf{v}^{\prime}_{\parallel}] & \mathbf{p}^{\prime}_{\perp}&=[0,\mathbf{v}^{\prime}_{\perp}]\\ \end{align*}\tag{14} pp[0,v]=[0,v]pp=[0,v]=[0,v]pp=[0,v]=[0,v](14)
下面寻找四元数 q \mathbf{\mathbf{q}} q,使得 p ′ \mathbf{p}^{\prime} p可以用 p \mathbf{p} p q \mathbf{\mathbf{q}} q表示

在求解之前,首先给出如下引理

引理1:若 q = [ cos ⁡ θ , sin ⁡ θ u ] \mathbf{\mathbf{q}}=[\cos\theta,\sin\theta\mathbf{u}] q=[cosθ,sinθu] u \mathbf{u} u为单位向量, θ ∈ R \theta\in\mathbb{R} θR,则 q q = [ cos ⁡ ( 2 θ ) , sin ⁡ ( 2 θ ) u ] \mathbf{\mathbf{q}}\mathbf{\mathbf{q}}=[\cos(2\theta),\sin(2\theta)\mathbf{u}] qq=[cos(2θ),sin(2θ)u]

引理2:设 p ∥ = [ 0 , v ∥ ] \mathbf{p}_{\parallel}=[0,\mathbf{v}_{\parallel}] p=[0,v] q = [ α , β u ] \mathbf{\mathbf{q}}=[\alpha,\beta\mathbf{u}] q=[α,βu] u \mathbf{u} u为单位向量, α , β ∈ R \alpha,\beta\in\mathbb{R} α,βR,若 v ∥ ∥ u \mathbf{v}_{\parallel}\parallel\mathbf{u} vu,则 q p ∥ = p ∥ q \mathbf{\mathbf{q}}\mathbf{p}_{\parallel}=\mathbf{p}_{\parallel}\mathbf{\mathbf{q}} qp=pq

引理3:设 p ⊥ = [ 0 , v ⊥ ] \mathbf{p}_{\perp}=[0,\mathbf{v}_{\perp}] p=[0,v] q = [ α , β u ] \mathbf{\mathbf{q}}=[\alpha,\beta\mathbf{u}] q=[α,βu] u \mathbf{u} u为单位向量, α , β ∈ R \alpha,\beta\in\mathbb{R} α,βR,若 v ⊥ ⊥ u \mathbf{v}_{\perp}\perp\mathbf{u} vu,则 q p ⊥ = p ⊥ q ∗ \mathbf{\mathbf{q}}\mathbf{p}_{\perp}=\mathbf{p}_{\perp}\mathbf{\mathbf{q}}^{\ast} qp=pq

根据 ( 1 ) , ( 2 ) , ( 14 ) (1),(2),(14) (1),(2),(14),得到
p = p ⊥ + p ∥ p ′ = p ⊥ ′ + p ∥ ′ \begin{align*} \mathbf{p}&=\mathbf{p}_{\perp}+\mathbf{p}_{\parallel}\tag{15}\\ \mathbf{p}^{\prime}&=\mathbf{p}^{\prime}_{\perp}+\mathbf{p}^{\prime}_{\parallel}\tag{16} \end{align*} pp=p+p=p+p(15)(16)
根据 ( 5 ) (5) (5),得到
p ∥ ′ = p ∥ (17) \mathbf{p}^{\prime}_{\parallel}=\mathbf{p}_{\parallel}\tag{17} p=p(17)
定义单位四元数 q t e m p = [ cos ⁡ θ , sin ⁡ θ u ] \mathbf{q}_{\mathrm{temp}}=[\cos\theta,\sin\theta\mathbf{u}] qtemp=[cosθ,sinθu],根据 ( 6 ) (6) (6),得到
p ⊥ ′ = q t m e p p ⊥ (18) \mathbf{p}^{\prime}_{\perp}=\mathbf{q}_{\mathrm{tmep}}\mathbf{p}_{\perp}\tag{18} p=qtmepp(18)
根据 ( 16 ) , ( 17 ) , ( 18 ) (16),(17),(18) (16),(17),(18),得到
p ′ = p ∥ + q t e m p p ⊥ (18) \mathbf{p}^{\prime}=\mathbf{p}_{\parallel}+\mathbf{q}_{\mathrm{temp}}\mathbf{p}_{\perp}\tag{18} p=p+qtempp(18)
定义一个新的单位四元数
q = [ cos ⁡ θ 2 , sin ⁡ θ 2 u ] (19) \mathbf{q}=[\cos\frac{\theta}{2},\sin\frac{\theta}{2}\mathbf{u}]\tag{19} q=[cos2θ,sin2θu](19)
因为 q \mathbf{\mathbf{q}} q为单位四元数,故 q ∗ = q − 1 \mathbf{\mathbf{q}}^{\ast}=\mathbf{\mathbf{q}}^{-1} q=q1,根据引理1-3,可将 ( 18 ) (18) (18)变形为
p ′ = q q ∗ p ∥ + q q p ⊥ = q p ∥ q ∗ + q p ⊥ q ∗ = q ( p ⊥ + p ∥ ) q ∗ = q p q ∗ \begin{align*} \mathbf{p}^{\prime} &=\mathbf{q}\mathbf{q}^{\ast }\mathbf{p}_{\parallel}+\mathbf{q}\mathbf{q}\mathbf{p}_{\perp}\\ &=\mathbf{q}\mathbf{p}_{\parallel}\mathbf{q}^{\ast}+\mathbf{q}\mathbf{p}_{\perp}\mathbf{q}^{\ast}\\ &=\mathbf{q}(\mathbf{p}_{\perp}+\mathbf{p}_{\parallel})\mathbf{q}^{\ast}\\ &=\mathbf{q}\mathbf{p}\mathbf{q}^{\ast}\tag{20} \end{align*} p=qqp+qqp=qpq+qpq=q(p+p)q=qpq(20)
至此,得到了用四元数表示旋转的方式,因为旋转向量 θ ∈ [ 0 , π ] \theta\in[0,\pi] θ[0,π],故要求四元数实部在 [ 0 , 1 ] [0,1] [0,1]之间

下面研究同一旋转过程对应的四元数和旋转向量及旋转矩阵之间的转换

3.1、四元数和旋转向量间的转换
3.1.1、从旋转向量到四元数

从旋转向量 ϕ = θ [ u 1 , u 2 , u 3 ] T ∈ R 3 ,   θ ∈ [ 0 , π ] \boldsymbol\phi=\theta[u_{1},u_{2},u_{3}]^{T}\in\R^{3},\,\theta\in[0,\pi] ϕ=θ[u1,u2,u3]TR3,θ[0,π]出发求四元数 q = [ q 0 ; [ q 1 , q 2 , q 3 ] T ] ∈ H 1 ,   q 0 ∈ [ 0 , 1 ] \mathbf{\mathbf{q}}=[q_{0};[q_{1},q_{2},q_{3}]^{T}]\in\mathbb{H}_{1},\,q_{0}\in[0,1] q=[q0;[q1,q2,q3]T]H1,q0[0,1]

( 19 ) (19) (19)写开
q = [ q 0 ; [ q 1 , q 2 , q 3 ] T ] = [ cos ⁡ θ 2 , sin ⁡ θ 2 [ u 1 , u 2 , u 3 ] T ] (21) \mathbf{q}=[q_{0};[q_{1},q_{2},q_{3}]^{T}]=[\cos\frac{\theta}{2},\sin\frac{\theta}{2}[u_{1},u _{2},u_{3}]^{T}]\tag{21} q=[q0;[q1,q2,q3]T]=[cos2θ,sin2θ[u1,u2,u3]T](21)
容易看出求出的四元数满足 q ∈ H 1 ,   s ∈ [ 0 , 1 ] \mathbf{\mathbf{q}}\in\mathbb{H}_{1},\,s\in[0,1] qH1,s[0,1]

3.1.2、从四元数到旋转向量

q = [ q 0 , [ q 1 , q 2 , q 3 ] T ] ∈ H 1 ,   q 0 ∈ [ 0 , 1 ] \mathbf{\mathbf{q}}=[q_{0},[q_{1},q_{2},q_{3}]^{T}]\in\mathbb{H}_{1},\,q_{0}\in[0,1] q=[q0,[q1,q2,q3]T]H1,q0[0,1]出发求旋转向量 ϕ = θ [ u 1 , u 2 , u 3 ] T ∈ R 3 ,   θ ∈ [ 0 , π ] \boldsymbol\phi=\theta[u_{1},u_{2},u_{3}]^{T}\in\R^{3},\,\theta\in[0,\pi] ϕ=θ[u1,u2,u3]TR3,θ[0,π]

首先求转角,根据 ( 21 ) (21) (21),可得
cos ⁡ θ 2 = q 0 (22) \cos\frac{\theta}{2}=q_{0}\tag{22} cos2θ=q0(22)
可以看出,因为要求 θ ∈ [ 0 , π ] \theta\in[0,\pi] θ[0,π],故 θ \theta θ有唯一解,若 q 0 = 1 q_{0}=1 q0=1,则 θ = 0 \theta=0 θ=0 ϕ = 0 \boldsymbol\phi=\mathbf{0} ϕ=0为所求值;否则取
n = [ u 1 , u 2 , u 3 ] T = [ q 1 , q 2 , q 3 ] T sin ⁡ θ 2 (23) \mathbf{n}=[u_{1},u_{2},u_{3}]^{T}=\frac{[q_{1},q_{2},q_{3}]^{T}}{\sin\frac{\theta}{2}}\tag{23} n=[u1,u2,u3]T=sin2θ[q1,q2,q3]T(23)
即可求出转轴。最终求出的旋转向量为 ϕ = θ u ,   θ ∈ [ 0 , π ] \boldsymbol\phi=\theta\mathbf{u},\,\theta\in[0,\pi] ϕ=θu,θ[0,π]

根据上面的讨论可以看到,在上述要求下,四元数和旋转向量是一一对应的

3.2、四元数和旋转矩阵间的转换
3.2.1、从四元数到旋转矩阵

从四元数 q = [ q 0 , [ q 1 , q 2 , q 3 ] T ] ∈ H 1 ,   s ∈ [ 0 , 1 ] \mathbf{\mathbf{q}}=[q_{0},[q_{1},q_{2},q_{3}]^{T}]\in\mathbb{H}_{1},\,s\in[0,1] q=[q0,[q1,q2,q3]T]H1,s[0,1]出发求旋转矩阵 R ∈ S O ( 3 ) \mathbf{R}\in SO(3) RSO(3)

根据 ( 11 ) , ( 22 ) , ( 23 ) (11),(22),(23) (11),(22),(23)可得
R = [ 1 − 2 q 2 2 − 2 q 3 2 2 ( q 1 q 2 − q 0 q 3 ) 2 ( q 1 q 3 + q 0 q 2 ) 2 ( q 2 + q 0 q 3 ) 1 − 2 q 1 2 − 2 q 3 2 2 ( q 2 q 3 − q 0 q 1 ) 2 ( q 1 q 3 − q 0 q 2 ) 2 ( q 2 q 3 + q 0 q 1 ) 1 − 2 q 1 2 − 2 q 2 2 ] (24) \mathbf{R}=\begin{bmatrix} 1-2q_{2}^{2}-2q_{3}^{2}&2(q_{1}q_{2}-q_{0}q_{3})&2(q_{1}q_{3}+q_{0}q_{2})\\ 2(q_{2}+q_{0}q_{3})&1-2q_{1}^{2}-2q_{3}^{2}&2(q_{2}q_{3}-q_{0}q_{1})\\ 2(q_{1}q_{3}-q_{0}q_{2})&2(q_{2}q_{3}+q_{0}q_{1})&1-2q_{1}^{2}-2q_{2}^{2} \end{bmatrix}\tag{24} R= 12q222q322(q2+q0q3)2(q1q3q0q2)2(q1q2q0q3)12q122q322(q2q3+q0q1)2(q1q3+q0q2)2(q2q3q0q1)12q122q22 (24)
上式推导过程中主要用到 sin ⁡ θ = 2 sin ⁡ θ 2 cos ⁡ θ 2 \sin\theta=2\sin\frac{\theta}{2}\cos\frac{\theta}{2} sinθ=2sin2θcos2θ cos ⁡ θ = 1 − 2 sin ⁡ 2 θ 2 \cos\theta=1-2\sin^{2}\frac{\theta}{2} cosθ=12sin22θ这两个三角函数公式

因为 ( 24 ) (24) (24)实际上是通过将四元数转换成旋转向量再代入 ( 11 ) (11) (11)得到,故实际求出的旋转矩阵 R ∈ S O ( 3 ) \mathbf{R}\in{SO}(3) RSO(3)

3.2.2、从旋转矩阵到四元数

从旋转矩阵 R = [ r i j ] 3 × 3 ∈ S O ( 3 ) \mathbf{R}=[r_{ij}]_{3\times3}\in SO(3) R=[rij]3×3SO(3)出发求出四元数 q = [ q 0 , [ q 1 , q 2 , q 3 ] T ] ∈ H 1 ,   q 0 ∈ [ 0 , 1 ] \mathbf{\mathbf{q}}=[q_{0},[q_{1},q_{2},q_{3}]^{T}]\in\mathbb{H}_{1},\,q_{0}\in[0,1] q=[q0,[q1,q2,q3]T]H1,q0[0,1]

根据 ( 24 ) (24) (24)可得
{ 1 + r 11 + r 22 + r 33 = 4 q 0 2 r 32 − r 23 = 4 q 0 q 1 r 13 − r 31 = 4 q 0 q 2 r 21 − r 12 = 4 q 0 q 3 \left\{ \begin{align*} 1+r_{11}+r_{22}+r_{33} &=4q_{0}^{2}\\ r_{32}-r_{23}&=4q_{0}q_{1}\\ r_{13}-r_{31}&=4q_{0}q_{2}\\ r_{21}-r_{12}&=4q_{0}q_{3} \end{align*}\right. 1+r11+r22+r33r32r23r13r31r21r12=4q02=4q0q1=4q0q2=4q0q3
因为要求 q 0 ∈ [ 0 , 1 ] q_{0}\in[0,1] q0[0,1],若 q 0 = 0 q_{0}=0 q0=0,此时 t r ( R ) = − 1 \mathrm{tr}(\mathbf{R})=-1 tr(R)=1,故此时对应的旋转向量角度为 π \pi π,根据 ( 12 ) , ( 23 ) (12),(23) (12),(23)可知, [ q 1 , q 2 , q 3 ] T [q_{1},q_{2},q_{3}]^{T} [q1,q2,q3]T为旋转矩阵 R \mathbf{R} R特征值为 1 1 1的特征向量,有两个可能值,任取一个即可;若 q 0 ∈ [ 0 , 1 ] q_{0}\in[0,1] q0[0,1],则
{ q 0 = 1 2 1 + r 11 + r 22 + r 33 q 1 = r 32 − r 23 4 q 0 q 2 = r 13 − r 31 4 q 0 q 3 = r 21 − r 12 4 q 0 (25) \left\{ \begin{align*} q_{0}&=\frac{1}{2}\sqrt{1+r_{11}+r_{22}+r_{33}}\\ q_{1}&=\frac{r_{32}-r_{23}}{4q_{0}}\\ q_{2}&=\frac{r_{13}-r_{31}}{4q_{0}}\\ q_{3}&=\frac{r_{21}-r_{12}}{4q_{0}}\\ \end{align*}\tag{25}\right. q0q1q2q3=211+r11+r22+r33 =4q0r32r23=4q0r13r31=4q0r21r12(25)
可以证明,通过 ( 25 ) (25) (25)得到的四元数满足 q ∈ H 1 ,   q 0 ∈ [ 0 , 1 ] \mathbf{\mathbf{q}}\in\mathbb{H}_{1},\,q_{0}\in[0,1] qH1,q0[0,1]

根据上面的讨论可以看到,在上述要求下,四元数到旋转矩阵的映射是单射,而旋转矩阵到四元数的映射则非单射

4、四元数视角下的运动学

下面确定单位四元数 q \mathbf{q} q的时间导数 q ˙ \dot{\mathbf{q}} q˙和旋转矩阵 R \mathbf{R} R的时间导数 R ˙ \dot{\mathbf{R}} R˙的关系

因为单位四元数满足约束 q ∗ q = 1 \mathbf{q}^{\ast}\mathbf{q}=1 qq=1,故在等号两侧对时间求导得到
q ˙ ∗ q + q ∗ q ˙ = 0 \dot{\mathbf{q}}^{\ast}\mathbf{q}+\mathbf{q}^{\ast}\dot{\mathbf{q}}=0 q˙q+qq˙=0
进一步得到
q ∗ q ˙ = − q ˙ ∗ q = − ( q ∗ q ˙ ) ∗ \mathbf{q}^{\ast}\dot{\mathbf{q}}=-\dot{\mathbf{q}}^{\ast}\mathbf{q}=-(\mathbf{q}^{\ast}\dot{\mathbf{q}})^{\ast} qq˙=q˙q=(qq˙)
q ∗ q ˙ \mathbf{q}^{\ast}\dot{\mathbf{q}} qq˙是一个纯虚四元数,令
q ∗ q ˙ = ϖ \mathbf{q}^{\ast}\dot{\mathbf{q}}=\boldsymbol\varpi qq˙=ϖ
上式等号两侧同时乘以 q \mathbf{q} q得到
q ˙ = q ϖ (26) \dot{\mathbf{q}}=\mathbf{q}\boldsymbol\varpi\tag{26} q˙=qϖ(26)
考虑空间中固定的一点 p \mathbf{p} p,因为四元数和旋转矩阵表示同一旋转过程,故
I m ( q [ 0 , p ] q ∗ ) = R p (27) \mathrm{Im}(\mathbf{q}[0,\mathbf{p}]\mathbf{q}^{\ast})=\mathbf{R}\mathbf{p}\tag{27} Im(q[0,p]q)=Rp(27)
在等号两侧对时间求导得
I m ( q ˙ [ 0 , p ] q ∗ + q ˙ [ 0 , p ] ( q ∗ ) ˙ ) = R ˙ p \mathrm{Im}(\dot{\mathbf{q}}[0,\mathbf{p}]\mathbf{q}^{\ast}+\dot{\mathbf{q}}[0,\mathbf{p}]\dot{(\mathbf{q}^{\ast})})=\dot{\mathbf{R}}\mathbf{p} Im(q˙[0,p]q+q˙[0,p](q)˙)=R˙p
代入 ( 26 ) (26) (26) R ˙ = R ω \dot{\mathbf{R}}=\mathbf{R}\boldsymbol\omega R˙=Rω,化简得到
I m ( q ˙ ( ϖ [ 0 , p ] + [ 0 , p ] ϖ ∗ ) q ∗ ) = R ω ∧ p (28) \mathrm{Im}(\dot{\mathbf{q}}(\boldsymbol\varpi[0,\mathbf{p}]+[0,\mathbf{p}]\boldsymbol\varpi^{\ast})\mathbf{q}^{\ast})=\mathbf{R}\boldsymbol\omega^{\wedge}\mathbf{p}\tag{28} Im(q˙(ϖ[0,p]+[0,p]ϖ)q)=Rωp(28)
ϖ = [ 0 , v ] \boldsymbol\varpi=[0,\mathbf{v}] ϖ=[0,v],则
ϖ [ 0 , p ] + [ 0 , p ] ϖ ∗ = [ 0 , 2 v ∧ p ] (29) \boldsymbol\varpi[0,\mathbf{p}]+[0,\mathbf{p}]\boldsymbol\varpi^{\ast}=[0,2\mathbf{v}^{\wedge}\mathbf{p}]\tag{29} ϖ[0,p]+[0,p]ϖ=[0,2vp](29)
( 29 ) (29) (29)代入 ( 28 ) (28) (28),再根据旋转结果相同则被旋转向量相同可以得到
2 v ∧ p = ω ∧ p 2\mathbf{v}^{\wedge}\mathbf{p}=\boldsymbol\omega^{\wedge}\mathbf{p} 2vp=ωp

v = 1 2 ω \mathbf{v}=\frac{1}{2}\boldsymbol\omega v=21ω
因此
ϖ = [ 0 , 1 2 ω ] (30) \boldsymbol\varpi=\left[0,\frac{1}{2}\boldsymbol\omega\right]\tag{30} ϖ=[0,21ω](30)
根据 ( 26 ) , ( 30 ) (26),(30) (26),(30),有
q ˙ = q [ 0 , 1 2 ω ] (31) \dot{\mathbf{q}}=\mathbf{q}\left[0,\frac{1}{2}\boldsymbol\omega\right]\tag{31} q˙=q[0,21ω](31)
上式还可以写成
q ˙ = 1 2 Ω ( ω ) q (32) \dot{\mathbf{q}}=\frac{1}{2}\Omega(\boldsymbol\omega)\mathbf{q}\tag{32} q˙=21Ω(ω)q(32)
其中 Ω ( ω ) = [ 0 − ω T ω ω ∧ ] \Omega(\boldsymbol\omega)=\begin{bmatrix} 0&-\boldsymbol\omega^{T}\\ \boldsymbol\omega&\boldsymbol\omega^{\wedge} \end{bmatrix} Ω(ω)=[0ωωTω]

下面考虑在一段时间 [ t 0 , t ] [t_{0},t] [t0,t]内四元数得变化,若 ω \boldsymbol\omega ω转轴保持不变,即 ω ( t ) = u ω ( t ) , t ∈ [ t 0 , t ] \boldsymbol\omega(t)=\mathbf{u}\omega(t),t\in[t_{0},t] ω(t)=uω(t),t[t0,t],可以证明
q ( t ) = q ( t 0 ) exp ⁡ ( ∫ t 0 t [ 0 , 1 2 ω ( τ ) ] d τ ) = q ( t 0 ) exp ⁡ ( [ 0 , θ 2 u ] ) = q ( t 0 ) [ cos ⁡ θ 2 , sin ⁡ θ 2 u ] \begin{align*} \mathbf{q}(t) &=\mathbf{q}(t_{0})\exp\left(\int_{t_{0}}^{t}\left[0,\frac{1}{2}\boldsymbol\omega(\tau)\right]d\tau\right)\\ &=\mathbf{q}(t_{0})\exp\left(\left[0,\frac{\theta}{2}\mathbf{u}\right]\right)\\ &=\mathbf{q}(t_{0})\left[\cos\frac{\theta}{2},\sin\frac{\theta}{2}\mathbf{u}\right]\tag{33} \end{align*} q(t)=q(t0)exp(t0t[0,21ω(τ)]dτ)=q(t0)exp([0,2θu])=q(t0)[cos2θ,sin2θu](33)
其中, θ = ∫ t 0 t ω ( τ ) d τ \theta=\int_{t_{0}}^{t}\omega(\tau)d\tau θ=t0tω(τ)dτ,当时间段 [ t 0 , t ] [t_{0},t] [t0,t]较短时, cos ⁡ θ 2 ≈ 1 \cos\frac{\theta}{2}\approx1 cos2θ1 sin ⁡ θ 2 u ≈ θ 2 u \sin\frac{\theta}{2}\mathbf{u}\approx\frac{\theta}{2}\mathbf{u} sin2θu2θu,故此时 ( 33 ) (33) (33)可以写成
q ( t ) = q ( t 0 ) [ 1 , θ 2 u ] (34) \mathbf{q}(t)=\mathbf{q}(t_{0})\left[1,\frac{\theta}{2}\mathbf{u}\right]\tag{34} q(t)=q(t0)[1,2θu](34)

5、四元数插值

t 1 t_{1} t1时刻旋转对应的单位四元数为 q ( t 1 ) \mathbf{q}(t_{1}) q(t1) t 2 t_{2} t2时刻旋转对应的单位四元数为 q ( t 2 ) \mathbf{q}(t_{2}) q(t2),则四元数插值可理解为对 t 1 + α ( t 2 − t 1 ) ∈ [ t 1 , t 2 ] ,   α ∈ [ 0 , 1 ] t_{1}+\alpha(t_{2}-t_{1})\in[t_{1},t_{2}],\,\alpha\in[0,1] t1+α(t2t1)[t1,t2],α[0,1]时刻旋转对应的单位四元数 q ( t 1 + α ( t 2 − t 1 ) ) \mathbf{q}(t_{1}+\alpha(t_{2}-t_{1})) q(t1+α(t2t1))进行估计

球面线性插值(Sphere Linear Interpolation,SLerp)是常用的四元数插值方法,其做法如下:

首先确定两个单位四元数夹角。 q ( t 1 ) \mathbf{q}(t_{1}) q(t1) q ( t 2 ) \mathbf{q}(t_{2}) q(t2)间的夹角余弦值满足
cos ⁡ Ω = q ( t 1 ) ⋅ q ( t 2 ) (35) \cos\Omega=\mathbf{q}(t_{1})\cdot\mathbf{q}(t_{2})\tag{35} cosΩ=q(t1)q(t2)(35)
上式在 Ω ∈ [ 0 , π ] \Omega\in[0,\pi] Ω[0,π]范围内具有唯一解,实际上,该夹角对应的弧是 q ( t 1 ) \mathbf{q}(t_{1}) q(t1) q ( t 2 ) \mathbf{q}(t_{2}) q(t2)间的较短弧

插值结果是从 q ( t 1 ) \mathbf{q}(t_{1}) q(t1)开始,在该弧上转动 α Ω \alpha\Omega αΩ角度得到的四元数。通过正弦定理可证明,插值结果为
q ( t 1 + α ( t 2 − t 1 ) ) = sin ⁡ ( ( 1 − α ) Ω ) sin ⁡ ( Ω ) q ( t 1 ) + sin ⁡ ( α Ω ) sin ⁡ ( Ω ) q ( t 2 ) (36) \mathbf{q}(t_{1}+\alpha(t_{2}-t_{1}))=\frac{\sin((1-\alpha)\Omega)}{\sin(\Omega)}\mathbf{q}(t_{1})+\frac{\sin(\alpha\Omega)}{\sin(\Omega)}\mathbf{q}(t_{2})\tag{36} q(t1+α(t2t1))=sin(Ω)sin((1α)Ω)q(t1)+sin(Ω)sin(αΩ)q(t2)(36)
可以看出,插值结果始终保持在四维空间中以原点为中心的单位超球面的某条弧上,为可视化插值过程,不妨将四元数画在三维空间上
在这里插入图片描述

附录

§1、向量积的定义和计算

向量 v 1 = x 1 i + y 1 j + z 1 k \mathbf{v}_{1}=x_{1}\mathbf{i}+y_{1}\mathbf{j}+z_{1}\mathbf{k} v1=x1i+y1j+z1k和向量 v 2 = x 2 i + y 2 j + z 2 k \mathbf{v}_{2}=x_{2}\mathbf{i}+y_{2}\mathbf{j}+z_{2}\mathbf{k} v2=x2i+y2j+z2k间的向量积记为 v 1 × v 2 \mathbf{v}_{1}\times\mathbf{v}_{2} v1×v2 v 1 × v 2 \mathbf{v}_{1}\times\mathbf{v}_{2} v1×v2仍为向量,其可按照大小和方向分别定义

大小: ∥ v 1 × v 2 ∥ = ∥ v 1 ∥ ∥ v 2 ∥ sin ⁡ Ω \|\mathbf{v}_{1}\times\mathbf{v}_{2}\|=\|\mathbf{v}_{1}\|\|\mathbf{v}_{2}\|\sin\Omega v1×v2=v1∥∥v2sinΩ Ω ∈ [ 0 , π ] \Omega\in[0,\pi] Ω[0,π] v 1 \mathbf{v}_{1} v1 v 2 \mathbf{v}_{2} v2之间的向量夹角

方向: v 1 × v 2 \mathbf{v}_{1}\times\mathbf{v}_{2} v1×v2方向可按右手定则从 v 1 \mathbf{v}_{1} v1转向 v 2 \mathbf{v}_{2} v2确定

根据定义,可以得出向量积的如下运算性质:
反交换律 : v 1 × v 2 = − v 2 × v 1 对加减法的左分配律 : v 1 × ( v 2 ± v 3 ) = v 1 × v 2 ± v 1 × v 3 对加减法的右分配律 : ( v 1 ± v 2 ) × v 3 = v 1 × v 3 ± v 2 × v 3 与标量乘法兼容 : ( λ v 1 ) × v 2 = v 1 × ( λ v 2 ) = λ ( v 1 × v 2 ) 雅可比恒等式 : v 1 × ( v 2 × v 3 ) + v 2 × ( v 3 × v 1 ) + v 3 ( v 1 × v 2 ) = 0 \begin{align*} 反交换律&:\mathbf{v}_{1}\times\mathbf{v}_{2}=-\mathbf{v}_{2}\times\mathbf{v}_{1}\\ 对加减法的左分配律&:\mathbf{v}_{1}\times(\mathbf{v}_{2}\pm\mathbf{v}_{3})=\mathbf{v}_{1}\times\mathbf{v}_{2}\pm\mathbf{v}_{1}\times\mathbf{v}_{3}\\ 对加减法的右分配律 &:(\mathbf{v}_{1}\pm\mathbf{v}_{2})\times\mathbf{v}_{3}=\mathbf{v}_{1}\times\mathbf{v}_{3}\pm\mathbf{v}_{2}\times\mathbf{v}_{3}\\ 与标量乘法兼容&:(\lambda\mathbf{v}_{1})\times\mathbf{v}_{2}=\mathbf{v}_{1}\times(\lambda\mathbf{v}_{2})=\lambda(\mathbf{v}_{1}\times\mathbf{v}_{2})\\ 雅可比恒等式&:\mathbf{v}_{1}\times(\mathbf{v}_{2}\times\mathbf{v}_{3})+\mathbf{v}_{2}\times(\mathbf{v}_{3}\times\mathbf{v}_{1})+\mathbf{v}_{3}(\mathbf{v}_{1}\times\mathbf{v}_{2})=0 \end{align*} 反交换律对加减法的左分配律对加减法的右分配律与标量乘法兼容雅可比恒等式:v1×v2=v2×v1:v1×(v2±v3)=v1×v2±v1×v3:(v1±v2)×v3=v1×v3±v2×v3:(λv1)×v2=v1×(λv2)=λ(v1×v2):v1×(v2×v3)+v2×(v3×v1)+v3(v1×v2)=0
注意向量积不满足结合律,即 v 1 × ( v 2 × v 3 ) ≠ ( v 1 × v 2 ) × v 3 \mathbf{v}_{1}\times(\mathbf{v}_{2}\times\mathbf{v}_{3})\neq(\mathbf{v}_{1}\times\mathbf{v}_{2})\times\mathbf{v}_{3} v1×(v2×v3)=(v1×v2)×v3

根据向量积的定义和运算律可以推导得到
v 1 × v 2 = ∣ i j k x 1 y 1 z 1 x 2 y 2 z 2 ∣ (A1) \mathbf{v}_{1}\times\mathbf{v}_{2}=\left| \begin{array}{lll} \mathbf{i}&\mathbf{j}&\mathbf{k}\\ x_{1}&y_{1}&z_{1}\\ x_{2}&y_{2}&z_{2} \end{array} \right|\tag{A1} v1×v2= ix1x2jy1y2kz1z2 (A1)
进一步,上式的计算结果为
v 1 × v 2 = ( y 1 z 2 − z 1 y 2 ) i + ( z 1 x 2 − x 1 z 2 ) j + ( x 1 y 2 − y 1 x 2 ) k (A2) \mathbf{v}_{1}\times\mathbf{v}_{2}=(y_{1}z_{2}-z_{1}y_{2})\mathbf{i}+(z_{1}x_{2}-x_{1}z_{2})\mathbf{j}+(x_{1}y_{2}-y_{1}x_{2})\mathbf{k}\tag{A2} v1×v2=(y1z2z1y2)i+(z1x2x1z2)j+(x1y2y1x2)k(A2)
若将向量写成矩阵形式,则 v 1 = [ x 1 , y 1 , z 1 ] T \mathbf{v}_{1}=[x_{1},y_{1},z_{1}]^{T} v1=[x1,y1,z1]T v 2 = [ x 2 , y 2 , z 2 ] T \mathbf{v}_{2}=[x_{2},y_{2},z_{2}]^{T} v2=[x2,y2,z2]T
v 1 × v 2 = [ y 1 z 2 − z 1 y 2 , z 1 x 2 − x 1 z 2 , x 1 y 2 − y 1 x 2 ] T (A3) \mathbf{v}_{1}\times\mathbf{v}_{2}=[y_{1}z_{2}-z_{1}y_{2},z_{1}x_{2}-x_{1}z_{2},x_{1}y_{2}-y_{1}x_{2}]^{T}\tag{A3} v1×v2=[y1z2z1y2,z1x2x1z2,x1y2y1x2]T(A3)
还可定义矩阵
v 1 ∧ = [ 0 − z 1 y 1 z 1 0 − x 1 − y 1 x 1 0 ] (A4) \mathbf{v}^{\wedge}_{1}=\begin{bmatrix} 0&-z_{1}&y_{1}\\ z_{1}&0&-x_{1}\\ -y_{1}&x_{1}&0 \end{bmatrix}\tag{A4} v1= 0z1y1z10x1y1x10 (A4)
可以证明
v 1 × v 2 = v 1 ∧ v 2 (A5) \mathbf{v}_{1}\times\mathbf{v}_{2}=\mathbf{v}^{\wedge}_{1}\mathbf{v}_{2}\tag{A5} v1×v2=v1v2(A5)

§2、构成群的条件

若一个集合 G G G和一个在 G G G上的二元运算 ⋅ \cdot 满足下列要求
封闭性 : ∀ a , b ∈ G ,   a ⋅ b ∈ G 结合律 : ∀ a , b , c ∈ G ,   a ⋅ ( b ⋅ c ) = ( a ⋅ b ) ⋅ c 存在单位元 : ∃ e ∈ G ,   s . t .   ∀ a ∈ G ,   a ⋅ e = e ⋅ a = a 存在逆元 : ∀ a ∈ G ,   ∃ a − 1 ∈ G ,   s . t .   a ⋅ a − 1 = a − 1 ⋅ a = e \begin{align*} 封闭性&:\forall a,b\in G,\,a\cdot b\in G\\ 结合律&:\forall a,b,c\in G,\,a\cdot(b\cdot c)=(a\cdot b)\cdot c\\ 存在单位元&:\exists e\in G,\,\mathrm{s.t.}\,\forall a\in G,\,a\cdot e=e\cdot a=a\\ 存在逆元&:\forall a\in G,\,\exists a^{-1}\in G,\,\mathrm{s.t.}\,a\cdot a^{-1}=a^{-1}\cdot a=e \end{align*} 封闭性结合律存在单位元存在逆元:a,bG,abG:a,b,cG,a(bc)=(ab)c:eG,s.t.aG,ae=ea=a:aG,a1G,s.t.aa1=a1a=e
则称二者组成的代数结构构成群,记作 ( G , ⋅ ) (G,\cdot) (G,)

可以证明,群的单位元具有唯一性,对于群中的任意元素,其逆元也是唯一的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小于小于大橙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值