:本文中,
带箭头的粗体字母(如 n ⃗ \vec{\boldsymbol n} n )表示 三维向量
不带箭头的粗体字母(如 q \boldsymbol q q)表示 四元数
顶上带尖尖的粗体字母(如 q ^ \hat{\boldsymbol q} q^​)表示 对偶四元数

一、四元数

1.1 定义 与运算法则

四元数可以理解为一种4维超复数,由一个实数部分和一个三维复数部分组成:
q = s + v x i + v y j + v z k \boldsymbol q = s + v_x\boldsymbol i + v_y\boldsymbol j + v_z\boldsymbol k q=s+vx​i+vy​j+vz​k
其中: i 2 = j 2 = k 2 = i j k = − 1 \boldsymbol i^2=\boldsymbol j^2=\boldsymbol k^2=\boldsymbol {ijk} = -1 i2=j2=k2=ijk=−1

四元数也可以表示为:
q = s + v ⃗ = [ s , v ⃗ ] = ( s v ⃗ ) \boldsymbol q = s + \vec{\boldsymbol v} = [~s, \vec{\boldsymbol v} ~] = \begin{pmatrix} s \\ \vec{\boldsymbol v} \end{pmatrix} q=s+v =[ s,v  ]=(sv ​)
都是可以的。

对于一个四元数 q = [ s , v ⃗ ] \boldsymbol q = [~s , ~ \vec{\boldsymbol v}~] q=[ s, v  ] ,有如下定义:

  • 共轭: q ∗ = [ s , − v ⃗ ] \boldsymbol q^* = [~s , ~ - \vec{\boldsymbol v}~] q∗=[ s, −v  ]
  • 模长: ∥ q ∥ = q ∗ q = q q ∗ = s 2 + ∥ v ⃗ ∥ 2 = s 2 + v x 2 + v y 2 + v z 2 \Vert\boldsymbol q\Vert = \sqrt{\boldsymbol q^*\boldsymbol q} = \sqrt{\boldsymbol q\boldsymbol q^*} = \sqrt{s^2 + \Vert\vec{\boldsymbol v}\Vert^2} = \sqrt{s^2 + v_x^2 + v_y^2 + v_z^2} ∥q∥=q∗q ​=qq∗ ​=s2+∥v ∥2 ​=s2+vx2​+vy2​+vz2​ ​
  • : q − 1 = q ∗ ∥ q ∥ 2 \displaystyle\boldsymbol q^{-1} = \frac{\boldsymbol q^*}{\Vert\boldsymbol q\Vert^2} q−1=∥q∥2q∗​

对于两个四元数 q a = [ s a , v ⃗ a ] \boldsymbol q_a = [~s_a , ~ \vec{\boldsymbol v}_a~] qa​=[ sa​, v a​ ] 和 q b = [ s b , v ⃗ b ] \boldsymbol q_b = [~s_b , ~ \vec{\boldsymbol v}_b~] qb​=[ sb​, v b​ ] ,运算性质如下:

  • 数乘: k q = [ k s , k v ⃗ ] k\boldsymbol q= [ks,~k\vec{\boldsymbol v}] kq=[ks, kv ]
  • 加法: q a + q b = [ s a + s b , v ⃗ a + v ⃗ b ] \boldsymbol q_a + \boldsymbol q_b = [~s_a+s_b,~~ \vec{\boldsymbol v}_a+\vec{\boldsymbol v}_b~] qa​+qb​=[ sa​+sb​,  v a​+v b​ ]
  • 乘法: q a q b = [ s a s b − v ⃗ a T v ⃗ b , s a v ⃗ b + s b v ⃗ a + v ⃗ a × v ⃗ b ] \boldsymbol q_a \boldsymbol q_b = [s_as_b - \vec{\boldsymbol v}_a^{\mathrm T}\vec{\boldsymbol v}_b, ~~s_a\vec{\boldsymbol v}_b + s_b\vec{\boldsymbol v}_a + \vec{\boldsymbol v}_a\times\vec{\boldsymbol v}_b] qa​qb​=[sa​sb​−v aT​v b​,  sa​v b​+sb​v a​+v a​×v b​]
  • 点乘: q a ⋅ q b = s a s b + v ⃗ a T v ⃗ b = q a ∗ q b + q b ∗ q a 2 \displaystyle \boldsymbol q_a \cdot \boldsymbol q_b = s_as_b + \vec{\boldsymbol v}_a^{\mathrm T}\vec{\boldsymbol v}_b=\frac{\boldsymbol q_a^*\boldsymbol q_b+\boldsymbol q_b^*\boldsymbol q_a}{2} qa​⋅qb​=sa​sb​+v aT​v b​=2qa∗​qb​+qb∗​qa​​
  • 共轭性质: ( q a q b ) ∗ = q b ∗ q a ∗ (\boldsymbol q_a\boldsymbol q_b)^*=\boldsymbol q_b^*\boldsymbol q_a^* (qa​qb​)∗=qb∗​qa∗​
  • 向量叉乘: v ⃗ a × v ⃗ b = 1 2 ( q a q b + q b q a ∗ ) [ 附录 B . 1 ] \displaystyle\vec{\boldsymbol v}_a\times\vec{\boldsymbol v}_b = \frac{1}{2}\big(\boldsymbol q_a \boldsymbol q_b + \boldsymbol q_b \boldsymbol q_a^*\big) ^{[附录B.1]} v a​×v b​=21​(qa​qb​+qb​qa∗​)[附录B.1]

1.2 单位四元数

单位四元数,指模长为 1 1 1 的四元数,即 ∥ q ∥ = 1 \Vert\boldsymbol q\Vert=1 ∥q∥=1
任意四元数乘以单位四元数,模长不变
q q ∗ = l 2 , q u q u ∗ = 1 ⟹ q q u ( q q u ) ∗ = q q u q u ∗ q ∗ = l 2 \boldsymbol q\boldsymbol q^* = l^2, ~~\boldsymbol q_u\boldsymbol q_u^* = 1 ~~~~\Longrightarrow~~~~\boldsymbol q\boldsymbol q_u(\boldsymbol q\boldsymbol q_u)^*=\boldsymbol q\boldsymbol q_u\boldsymbol q_u^*\boldsymbol q^*=l^2 qq∗=l2,  qu​qu∗​=1    ⟹    qqu​(qqu​)∗=qqu​qu∗​q∗=l2
两个单位四元数相乘仍是单位四元数
此性质对 对偶四元数 同样成立

有三种比较特殊的单位四元数:

  1. q = [ 1 , 0 ] \boldsymbol q = [~1, ~\boldsymbol 0~] q=[ 1, 0 ]
  2. q = [ 0 , u ⃗ ] \boldsymbol q = [~0, ~\vec{\boldsymbol u}~] q=[ 0, u  ],其中 u ⃗ \vec{\boldsymbol u} u 为单位向量
  3. q = [ cos ⁡ θ 2 , u ⃗ sin ⁡ θ 2 ] \displaystyle\boldsymbol q = [~\cos\frac{\theta}{2}, ~\vec{\boldsymbol u}\sin\frac{\theta}{2}~] q=[ cos2θ​, u sin2θ​ ]

1.3 旋转四元数

单位四元数中的第 3 种 q = [ cos ⁡ θ 2 , u ⃗ sin ⁡ θ 2 ] \displaystyle\boldsymbol q = [~\cos\frac{\theta}{2}, ~\vec{\boldsymbol u}\sin\frac{\theta}{2}~] q=[ cos2θ​, u sin2θ​ ] 是我们常用的旋转四元数,
其中 u ⃗ \vec{\boldsymbol u} u 表示旋转轴, θ \theta θ 表示绕旋转轴旋转的角度,
对于空间向量 v ⃗ \vec{\boldsymbol v} v ,使用四元数 q \boldsymbol q q 对其旋转可以表示为:
v ′ = q v q ∗ \boldsymbol v'=\boldsymbol q\boldsymbol v\boldsymbol q^* v′=qvq∗
其中 v = [ 0 , v ⃗ ] \boldsymbol v = [~0, ~\vec{\boldsymbol v}~] v=[ 0, v  ], v ′ = [ 0 , v ⃗ ′ ] \boldsymbol v' = [~0, ~\vec{\boldsymbol v}'~] v′=[ 0, v ′ ]

这个单位四元数还有一个性质,若两个转轴相同的四元数: q α = [ cos ⁡ α 2 , u ⃗ sin ⁡ α 2 ] \displaystyle\boldsymbol q_\alpha = [~\cos\frac{\alpha}{2}, ~\vec{\boldsymbol u}\sin\frac{\alpha}{2}~] qα​=[ cos2α​, u sin2α​ ], q β = [ cos ⁡ β 2 , u ⃗ sin ⁡ β 2 ] \displaystyle\boldsymbol q_\beta = [~\cos\frac{\beta}{2}, ~\vec{\boldsymbol u}\sin\frac{\beta}{2}~] qβ​=[ cos2β​, u sin2β​ ]
那么:
q α q β = [ cos ⁡ α + β 2 , u ⃗ sin ⁡ α + β 2 ] = q α + β \boldsymbol q_\alpha\boldsymbol q_\beta = [~\cos\frac{\alpha+\beta}{2}, ~\vec{\boldsymbol u}\sin\frac{\alpha+\beta}{2}~] =\boldsymbol q_{\alpha+\beta} qα​qβ​=[ cos2α+β​, u sin2α+β​ ]=qα+β​

易得:
q t = cos ⁡ ( t θ 2 ) + u ⃗ sin ⁡ ( t θ 2 ) \boldsymbol q^t = \cos (\frac{t\theta}{2})+\vec{\boldsymbol u}\sin(\frac{t\theta}{2}) qt=cos(2tθ​)+u sin(2tθ​)

1.4 旋转四元数的求导

假设四元数 q \boldsymbol q q 是关于时间 t t t 的函数,该四元数旋转的角速度为 ω ⃗ \vec{\boldsymbol \omega} ω
那么,
q t = cos ⁡ ( ∥ ω ⃗ ∥ t 2 ) + ω ⃗ ∥ ω ⃗ ∥ sin ⁡ ( ∥ ω ⃗ ∥ t 2 ) \boldsymbol q_t = \cos (\frac{\Vert\vec{\boldsymbol \omega}\Vert t}{2})+\frac{\vec{\boldsymbol \omega}}{\Vert\vec{\boldsymbol \omega}\Vert}\sin(\frac{\Vert\vec{\boldsymbol \omega}\Vert t}{2}) qt​=cos(2∥ω ∥t​)+∥ω ∥ω ​sin(2∥ω ∥t​)

则,
q t ′ = − ∥ ω ⃗ ∥ 2 sin ⁡ ( ∥ ω ⃗ ∥ t 2 ) + ω ⃗ 2 cos ⁡ ( ∥ ω ⃗ ∥ t 2 ) = − ω ⃗ T ω ⃗ 2 ∥ ω ⃗ ∥ sin ⁡ ( ∥ ω ⃗ ∥ t 2 ) + ω ⃗ 2 cos ⁡ ( ∥ ω ⃗ ∥ t 2 ) = − ω ⃗ 2 ⋅ ω ⃗ ∥ ω ⃗ ∥ sin ⁡ ( ∥ ω ⃗ ∥ t 2 ) + ω ⃗ 2 cos ⁡ ( ∥ ω ⃗ ∥ t 2 ) \begin{aligned} \boldsymbol q'_t &= -\frac{\Vert\vec{\boldsymbol \omega}\Vert}{2}\sin(\frac{\Vert\vec{\boldsymbol \omega}\Vert t}{2})+\frac{\vec{\boldsymbol \omega}}{2}\cos (\frac{\Vert\vec{\boldsymbol \omega}\Vert t}{2}) \\ &= -\frac{\vec{\boldsymbol \omega}^{\mathrm T}\vec{\boldsymbol \omega}}{2\Vert\vec{\boldsymbol \omega}\Vert}\sin(\frac{\Vert\vec{\boldsymbol \omega}\Vert t}{2})+\frac{\vec{\boldsymbol \omega}}{2}\cos (\frac{\Vert\vec{\boldsymbol \omega}\Vert t}{2}) \\ &= -\frac{\vec{\boldsymbol \omega}}{2}\cdot\frac{\vec{\boldsymbol \omega}}{\Vert\vec{\boldsymbol \omega}\Vert}\sin(\frac{\Vert\vec{\boldsymbol \omega}\Vert t}{2})+\frac{\vec{\boldsymbol \omega}}{2}\cos (\frac{\Vert\vec{\boldsymbol \omega}\Vert t}{2}) \\ \end{aligned} qt′​​=−2∥ω ∥​sin(2∥ω ∥t​)+2ω ​cos(2∥ω ∥t​)=−2∥ω ∥ω Tω ​sin(2∥ω ∥t​)+2ω ​cos(2∥ω ∥t​)=−2ω ​⋅∥ω ∥ω ​sin(2∥ω ∥t​)+2ω ​cos(2∥ω ∥t​)​

记四元数 q ω = [ 0 , ω ⃗ 2 ] \displaystyle\boldsymbol q_\omega = [~0, ~\frac{\vec{\boldsymbol \omega}}{2}~] qω​=[ 0, 2ω ​ ],那么,
q t ′ = q ω q t \boldsymbol q'_t = \boldsymbol q_\omega\boldsymbol q_t qt′​=qω​qt​

二、对偶数

对偶数给我感觉就是一种特殊的复数,它表示为:
d ^ = a + ε b \hat{d}=a+\varepsilon b d^=a+εb
其中: ε 2 = 0 \varepsilon^2=0 ε2=0

性质:
将 f ( d ^ ) f(\hat{d}) f(d^) 在 a a a 点使用泰勒展开式
f ′ ( a + ε b ) = f ( a ) + ε b f ′ ( a ) + ε 2 b 2 2 ! f ′ ′ ( a ) + … = f ( a ) + ε b f ′ ( a ) \begin{aligned} f'(a+\varepsilon b) &= f(a) + \varepsilon b f'(a) + \varepsilon^2\frac{b^2}{2!} f''(a)+\dots \\ &= f(a) + \varepsilon b f'(a) \end{aligned} f′(a+εb)​=f(a)+εbf′(a)+ε22!b2​f′′(a)+…=f(a)+εbf′(a)​

三、对偶四元数

融合了 四元数 和 对偶数 两个玩意的东西:
q ^ = q 0 + ε q ε \hat{\boldsymbol q} = \boldsymbol q_0 + \varepsilon\boldsymbol q_\varepsilon q^​=q0​+εqε​

3.1 定义 与运算法则

对于一个对偶四元数 q ^ = q 0 + ε q ε \hat{ \boldsymbol q }= \boldsymbol q_0 + \varepsilon\boldsymbol q_\varepsilon q^​=q0​+εqε​ ,有如下定义:

  • 共轭: q ^ ∗ = q 0 ∗ + ε q ε ∗ \hat{ \boldsymbol q }^* = \boldsymbol q_0^* + \varepsilon\boldsymbol q_\varepsilon^* q^​∗=q0∗​+εqε∗​
  • 对偶共轭: q ^ ‾ = q 0 − ε q ε \overline{\hat{ \boldsymbol q }} = \boldsymbol q_0 - \varepsilon\boldsymbol q_\varepsilon q^​​=q0​−εqε​
  • 双共轭: q ^ ∗ ‾ = q 0 ∗ − ε q ε ∗ \overline{\hat{ \boldsymbol q }^*} = \boldsymbol q_0^* - \varepsilon\boldsymbol q_\varepsilon^* q^​∗​=q0∗​−εqε∗​
  • 模长: ∥ q ^ ∥ = q ^ ∗ q ^ = q ^ q ^ ∗ = ∥ q 0 ∥ + ε q 0 ⋅ q ε ∥ q 0 ∥ \displaystyle\Vert\hat{\boldsymbol q}\Vert = \sqrt{\hat{ \boldsymbol q }^*\hat{ \boldsymbol q }} = \sqrt{\hat{ \boldsymbol q }\hat{ \boldsymbol q }^*} = \Vert\boldsymbol q_0\Vert + \varepsilon\frac{\boldsymbol q_0 \cdot \boldsymbol q_\varepsilon}{\Vert\boldsymbol q_0\Vert} ∥q^​∥=q^​∗q^​ ​=q^​q^​∗ ​=∥q0​∥+ε∥q0​∥q0​⋅qε​​
  • : q ^ − 1 = q ^ ∗ ∥ q ^ ∥ 2 \displaystyle\hat{\boldsymbol q}^{-1} = \frac{\hat{\boldsymbol q}^*}{\Vert\hat{\boldsymbol q}\Vert^2} q^​−1=∥q^​∥2q^​∗​

对于两个四元数 q ^ a = q a 0 + ε q a ε \hat{\boldsymbol q}_a = \boldsymbol q_{a0} + \varepsilon\boldsymbol q_{a\varepsilon} q^​a​=qa0​+εqaε​ 和 q ^ b = q b 0 + ε q b ε \hat{\boldsymbol q}_b = \boldsymbol q_{b0} + \varepsilon\boldsymbol q_{b\varepsilon} q^​b​=qb0​+εqbε​ ,运算性质如下:

  • 数乘: k q ^ = k q 0 + ε k q ε k\hat{\boldsymbol q}= k\boldsymbol q_{0} + \varepsilon k\boldsymbol q_{\varepsilon} kq^​=kq0​+εkqε​
  • 加法: q ^ a + q ^ b = q a 0 + q b 0 + ε ( q a ε + q b ε ) \hat{\boldsymbol q}_a + \hat{\boldsymbol q}_b = \boldsymbol q_{a0}+\boldsymbol q_{b0}+\varepsilon(\boldsymbol q_{a\varepsilon}+\boldsymbol q_{b\varepsilon}) q^​a​+q^​b​=qa0​+qb0​+ε(qaε​+qbε​)
  • 乘法: q ^ a q ^ b = q a 0 q b 0 + ε ( q a 0 q b ε + q a ε q b 0 ) \hat{\boldsymbol q}_a \hat{\boldsymbol q}_b = \boldsymbol q_{a0}\boldsymbol q_{b0} + \varepsilon(\boldsymbol q_{a0}\boldsymbol q_{b\varepsilon}+\boldsymbol q_{a\varepsilon}\boldsymbol q_{b0}) q^​a​q^​b​=qa0​qb0​+ε(qa0​qbε​+qaε​qb0​)
  • 共轭性质: ( q ^ a q ^ b ) ∗ = q ^ b ∗ q ^ a ∗ , q ^ a q ^ b ‾ = q ^ a ‾ q ^ b ‾ , ( q ^ a q ^ b ) ∗ ‾ = q ^ b ∗ ‾ q ^ a ∗ ‾ (\hat{\boldsymbol q}_a\hat{\boldsymbol q}_b)^*=\hat{\boldsymbol q}_b^*\hat{\boldsymbol q}_a^*,~~~~~\overline{\hat{\boldsymbol q}_a\hat{\boldsymbol q}_b}=\overline{\hat{\boldsymbol q}_a}~\overline{\hat{\boldsymbol q}_b},~~~~~\overline{(\hat{\boldsymbol q}_a\hat{\boldsymbol q}_b)^*}=\overline{\hat{\boldsymbol q}_b^*}~\overline{\hat{\boldsymbol q}_a^*} (q^​a​q^​b​)∗=q^​b∗​q^​a∗​,     q^​a​q^​b​​=q^​a​​ q^​b​​,     (q^​a​q^​b​)∗​=q^​b∗​​ q^​a∗​​

3.2 单位 对偶四元数

满足 ∥ q ^ ∥ = 1 \Vert\hat{\boldsymbol q}\Vert=1 ∥q^​∥=1 的对偶四元数,称为单位对偶四元数。

q ^ ∗ q ^ = 1 ⟶ { ∥ q 0 ∥ = 1 q 0 ⋅ q ε = 0 \hat{\boldsymbol q}^*\hat{\boldsymbol q}=1 \longrightarrow \left\{ \begin{aligned} &\Vert\boldsymbol q_0\Vert = 1 \\ &\boldsymbol q_0\cdot\boldsymbol q_\varepsilon = 0 \end{aligned} \right. q^​∗q^​=1⟶{​∥q0​∥=1q0​⋅qε​=0​

常用单位对偶四元数有3种
① q ε = 0 \boldsymbol q_\varepsilon=0 qε​=0, q 0 \boldsymbol q_0 q0​ 为任意单位四元数。如 q ^ = q 0 = ( cos ⁡ θ 2 , u ⃗ sin ⁡ θ 2 ) \displaystyle\hat{\boldsymbol q} = \boldsymbol q_0 = (\cos\frac{\theta}{2}, \vec{\boldsymbol u}\sin\frac{\theta}{2}) q^​=q0​=(cos2θ​,u sin2θ​),其中 ∥ u ⃗ ∥ = 1 \Vert\vec{\boldsymbol u}\Vert = 1 ∥u ∥=1
② q 0 = 1 \boldsymbol q_0=1 q0​=1, q ε \boldsymbol q_\varepsilon qε​ 标量部分为 0 0 0。如 q ^ = 1 + ε t ⃗ \displaystyle\hat{\boldsymbol q} = 1 + \varepsilon \vec{\boldsymbol t} q^​=1+εt
③ q 0 \boldsymbol q_0 q0​ 为单位向量, q ε \boldsymbol q_\varepsilon qε​ 是与 q 0 \boldsymbol q_0 q0​ 垂直的向量。如 q ^ = u ⃗ + ε m ⃗ \displaystyle\hat{\boldsymbol q} = \vec{\boldsymbol u} + \varepsilon \vec{\boldsymbol m} q^​=u +εm ,其中 ∥ u ⃗ ∥ = 1 , m ⃗ ⊥ u ⃗ \Vert\vec{\boldsymbol u}\Vert = 1, \vec{\boldsymbol m} \perp \vec{\boldsymbol u} ∥u ∥=1,m ⊥u


3.3 对偶四元数表示旋转与平移

在使用 四元数 和 对偶四元数 表示旋转时,我们一般将被操作的三维向量 v ⃗ \vec{\boldsymbol v} v 的四元数和对偶四元数分别记为:
{ v = 0 + v ⃗ v ^ = 1 + ε v ⃗ \left\{ \begin{aligned} \boldsymbol v &= 0 + \vec{\boldsymbol v} \\ \hat{\boldsymbol v} &= 1 + \varepsilon\vec{\boldsymbol v} \end{aligned} \right. {vv^​=0+v =1+εv ​

3.3.1 旋转

对偶四元数表示旋转,与普通四元数非常类似,即对偶部分为 0 0 0: r ε = 0 \boldsymbol r_\varepsilon = 0 rε​=0
记:
r ^ = cos ⁡ θ 2 + u ⃗ sin ⁡ θ 2 \hat{\boldsymbol r} = \cos\frac{\theta}{2}+\vec{\boldsymbol u}\sin\frac{\theta}{2} r^=cos2θ​+u sin2θ​
则对 对偶四元数 v ^ \hat{\boldsymbol v} v^ 进行旋转可以表示为:
v ^ ′ = r ^ v ^ r ^ ∗ ‾ = 1 + ε r 0 v r 0 ∗ \hat{\boldsymbol v}'= \hat{\boldsymbol r}\hat{\boldsymbol v}\overline{\hat{\boldsymbol r}^*}=1+\varepsilon\boldsymbol r_0\boldsymbol v\boldsymbol r_0^* v^′=r^v^r^∗=1+εr0​vr0∗​
因为 r ε = 0 \boldsymbol r_\varepsilon = 0 rε​=0,所以这里其实 r ^ ∗ ‾ \overline{\hat{\boldsymbol r}^*} r^∗ 就是 r 0 ∗ \boldsymbol r_0^* r0∗​

3.3.2 平移

对偶四元数 可以表示 普通四元数 无法表示的三维空间平移
对于三维坐标的平移: t ⃗ = ( t x , t y , t z ) T \vec{\boldsymbol t}=(t_x, t_y, t_z)^{\mathrm T} t =(tx​,ty​,tz​)T,将其对偶四元数记为:
t ^ = 1 + ε t ⃗ 2 \hat{\boldsymbol t}= 1+\varepsilon\frac{\vec{\boldsymbol t}}{2} t^=1+ε2t ​

则对 对偶四元数 v \boldsymbol v v 进行平移可以表示为:
v ^ ′ = t ^ v ^ t ^ ∗ ‾ = 1 + ε ( v ⃗ + t ⃗ ) \hat{\boldsymbol v}'= \hat{\boldsymbol t}\hat{\boldsymbol v}\overline{\hat{\boldsymbol t}^*}=1+\varepsilon(\vec{\boldsymbol v}+\vec{\boldsymbol t}) v^′=t^v^t^∗=1+ε(v +t )

3.3.3 旋转+平移

使用对偶四元数表示旋转与平移的方式都知道了以后,对一个物体同时进行旋转平移 最简单的办法就是:
v ^ ′ = t ^ ( r ^ v ^ r ^ ∗ ‾ ) t ^ ∗ ‾ = 1 + ε ( r 0 v r 0 ∗ + t ⃗ ) \hat{\boldsymbol v}'= \hat{\boldsymbol t}(\hat{\boldsymbol r}\hat{\boldsymbol v}\overline{\hat{\boldsymbol r}^*})\overline{\hat{\boldsymbol t}^*}=1+\varepsilon(\boldsymbol r_0\boldsymbol v\boldsymbol r_0^*+\vec{\boldsymbol t}) v^′=t^(r^v^r^∗)t^∗=1+ε(r0​vr0∗​+t )

v ^ ′ = r ^ ( t ^ v ^ t ^ ∗ ‾ ) r ^ ∗ ‾ = 1 + ε r 0 ( v ⃗ + t ⃗ ) r 0 ∗ \hat{\boldsymbol v}'= \hat{\boldsymbol r}(\hat{\boldsymbol t}\hat{\boldsymbol v}\overline{\hat{\boldsymbol t}^*})\overline{\hat{\boldsymbol r}^*}=1+\varepsilon\boldsymbol r_0(\vec{\boldsymbol v}+\vec{\boldsymbol t})\boldsymbol r_0^* v^′=r^(t^v^t^∗)r^∗=1+εr0​(v +t )r0∗​
分别表示 先旋转后平移先平移后旋转

3.3.4 使用对偶四元数对直线进行三维变换

3.3.4.1 普吕克坐标系(Plücker coordinates) 与 四元数

我们可以使用 直线的方向向量 l ⃗ \vec{\boldsymbol l} l 和 直线上一点 p ⃗ \vec{\boldsymbol p} p ​ 来确定一条直线。
此时,我们称 m ⃗ = p ⃗ × l ⃗ \vec{\boldsymbol m} = \vec{\boldsymbol p}\times \vec{\boldsymbol l} m =p ​×l 为直线的矩。
那么直线的对偶四元数可以表示为:
l ^ = l + ε m \hat{\boldsymbol l} = \boldsymbol l + \varepsilon \boldsymbol m l^=l+εm
其中,四元数 { l = 0 + l ⃗ m = 0 + m ⃗ \left\{ \begin{aligned} \boldsymbol l&=0+\vec{\boldsymbol l} \\ \boldsymbol m&=0+\vec{\boldsymbol m} \end{aligned} \right. {lm​=0+l =0+m ​,且 l ⃗ \vec{\boldsymbol l} l 为单位向量

3.3.4.2 对直线的三维变换

假设一条直线 l ^ b = l b + ε m b \hat{\boldsymbol l}_b = \boldsymbol l_b + \varepsilon \boldsymbol m_b l^b​=lb​+εmb​ 经过旋转与平移 ( R , t ⃗ ) (\boldsymbol R, \vec{\boldsymbol t}) (R,t ) 后,成为了直线 l ^ a = l a + ε m a \hat{\boldsymbol l}_a = \boldsymbol l_a + \varepsilon \boldsymbol m_a l^a​=la​+εma​,
那么他们满足:
l ⃗ a = R l ⃗ b m ⃗ a = p ⃗ a × l ⃗ a = ( R p ⃗ b + t ⃗ ) × R l ⃗ b = R ( p ⃗ b × l ⃗ b ) + t ⃗ × R l ⃗ b = R m ⃗ b + t ⃗ × R l ⃗ b \begin{aligned} \vec{\boldsymbol l}_a &= \boldsymbol R\vec{\boldsymbol l}_b \\ \vec{\boldsymbol m}_a &= \vec{\boldsymbol p}_a \times \vec{\boldsymbol l}_a = (\boldsymbol R\vec{\boldsymbol p}_b+\vec{\boldsymbol t}) \times \boldsymbol R\vec{\boldsymbol l}_b \\ &= \boldsymbol R ( \vec{\boldsymbol p}_b \times \vec{\boldsymbol l}_b)+\vec{\boldsymbol t} \times \boldsymbol R\vec{\boldsymbol l}_b \\ &= \boldsymbol R \vec{\boldsymbol m}_b +\vec{\boldsymbol t} \times \boldsymbol R\vec{\boldsymbol l}_b \end{aligned} l a​m a​​=Rl b​=p ​a​×l a​=(Rp ​b​+t )×Rl b​=R(p ​b​×l b​)+t ×Rl b​=Rm b​+t ×Rl b​​

改写为四元数形式,记 q \boldsymbol q q 为旋转四元数,记四元数 t = 0 + t ⃗ \boldsymbol t = 0+\vec{\boldsymbol t} t=0+t ,得:
l a = q l b q ∗ m a = q m b q ∗ + 1 2 ( t q l b q ∗ + q l b q ∗ t ∗ ) \begin{aligned} \boldsymbol l_a &= \boldsymbol q\boldsymbol l_b\boldsymbol q^* \\ \boldsymbol m_a &= \boldsymbol q\boldsymbol m_b\boldsymbol q^* + \frac{1}{2}(\boldsymbol t~\boldsymbol q\boldsymbol l_b\boldsymbol q^* + \boldsymbol q\boldsymbol l_b\boldsymbol q^* ~\boldsymbol t^*) \end{aligned} la​ma​​=qlb​q∗=qmb​q∗+21​(t qlb​q∗+qlb​q∗ t∗)​

记四元数 q ′ = 1 2 t q \displaystyle\boldsymbol q' = \frac{1}{2}\boldsymbol t\boldsymbol q q′=21​tq,则:
l a = q l b q ∗ m a = q m b q ∗ + q ′ l b q ∗ + q l b q ′ ∗ \begin{aligned} \boldsymbol l_a &= \boldsymbol q\boldsymbol l_b\boldsymbol q^* \\ \boldsymbol m_a &= \boldsymbol q\boldsymbol m_b\boldsymbol q^* + \boldsymbol q'\boldsymbol l_b\boldsymbol q^* + \boldsymbol q\boldsymbol l_b\boldsymbol q'^* \end{aligned} la​ma​​=qlb​q∗=qmb​q∗+q′lb​q∗+qlb​q′∗​

得到
l a + ε m a = ( q + ε q ′ ) ( l b + ε m b ) ( q ∗ + ε q ′ ∗ ) \boldsymbol l_a + \varepsilon \boldsymbol m_a = (\boldsymbol q+\varepsilon\boldsymbol q')(\boldsymbol l_b + \varepsilon \boldsymbol m_b)(\boldsymbol q^*+\varepsilon\boldsymbol q'^*) la​+εma​=(q+εq′)(lb​+εmb​)(q∗+εq′∗)

记 q ^ = q + ε q ′ \hat{\boldsymbol q}=\boldsymbol q+\varepsilon\boldsymbol q' q^​=q+εq′, 即:
l ^ a = q ^ l ^ b q ^ ∗ \hat{\boldsymbol l}_a = \hat{\boldsymbol q}\hat{\boldsymbol l}_b\hat{\boldsymbol q}^* l^a​=q^​l^b​q^​∗


附录A 四元数、对偶四元数 对照表

表示 四元数 备注 对偶四元数 备注
原始 q = [ s , v ⃗ ] \boldsymbol q = [~s,~\vec{\boldsymbol v}~] q=[ s, v  ] 普通四元数用粗体字母 q \boldsymbol q q表示 q ^ = q 0 + ε q ε \hat{\boldsymbol q} = \boldsymbol q_0 + \varepsilon\boldsymbol q_\varepsilon q^​=q0​+εqε​ 对偶四元数在普通四元数上加^
共轭四元数 q ∗ = [ s , − v ⃗ ] \boldsymbol q^* = [~s,~-\vec{\boldsymbol v}~] q∗=[ s, −v  ] - q ^ ∗ = q 0 ∗ + ε q ε ∗ \hat{\boldsymbol q}^* = \boldsymbol q_0^* + \varepsilon\boldsymbol q_\varepsilon^* q^​∗=q0∗​+εqε∗​ 四元数部分共轭
共轭对偶 - - q ^ ‾ = q 0 − ε q ε \overline{\hat{\boldsymbol q}} = \boldsymbol q_0 - \varepsilon\boldsymbol q_\varepsilon q^​​=q0​−εqε​ 对偶部分共轭
共轭对偶四元数 - - q ^ ∗ ‾ = q 0 ∗ − ε q ε ∗ \overline{\hat{\boldsymbol q}^* } = \boldsymbol q_0^* - \varepsilon\boldsymbol q_\varepsilon^* q^​∗​=q0∗​−εqε∗​ 两部分都共轭
单位四元数 q ∗ q = 1 ⟶ s 2 + ∥ v ⃗ ∥ 2 = 1 \boldsymbol q^*\boldsymbol q=1 \longrightarrow \\s^2+\Vert\vec{\boldsymbol v}\Vert^2 =1 q∗q=1⟶s2+∥v ∥2=1 - q ^ ∗ q ^ = 1 ⟶ ∥ q 0 ∥ = 1 , q 0 ⋅ q ε = 0 \hat{\boldsymbol q}^*\hat{\boldsymbol q}=1 \longrightarrow \\ \Vert\boldsymbol q_0\Vert = 1,~~ \boldsymbol q_0\cdot\boldsymbol q_\varepsilon = 0 q^​∗q^​=1⟶∥q0​∥=1,  q0​⋅qε​=0 非对偶部分是单位四元数
运算 四元数 对偶四元数
数乘 k q = [ k s , k v ⃗ ] k\boldsymbol q= [ks,~k\vec{\boldsymbol v}] kq=[ks, kv ] k q ^ = k q 0 + k ε q ε k\hat{\boldsymbol q} = k\boldsymbol q_{0}+k\varepsilon\boldsymbol q_{\varepsilon} kq^​=kq0​+kεqε​
加法 q a + q b = [ s a + s b , v ⃗ a + v ⃗ b ] \boldsymbol q_a + \boldsymbol q_b = [s_a+s_b,~~ \vec{\boldsymbol v}_a+\vec{\boldsymbol v}_b] qa​+qb​=[sa​+sb​,  v a​+v b​] q ^ a + q ^ b = q a 0 + q b 0 + ε ( q a ε + q b ε ) \hat{\boldsymbol q}_a + \hat{\boldsymbol q}_b = \boldsymbol q_{a0}+\boldsymbol q_{b0}+\varepsilon(\boldsymbol q_{a\varepsilon}+\boldsymbol q_{b\varepsilon}) q^​a​+q^​b​=qa0​+qb0​+ε(qaε​+qbε​)
乘法 q a q b = [ s a s b − v ⃗ a T v ⃗ b , s a v ⃗ b + s b v ⃗ a + v ⃗ a × v ⃗ b ] \boldsymbol q_a \boldsymbol q_b = [s_as_b - \vec{\boldsymbol v}_a^{\mathrm T}\vec{\boldsymbol v}_b, ~~s_a\vec{\boldsymbol v}_b + s_b\vec{\boldsymbol v}_a + \vec{\boldsymbol v}_a\times\vec{\boldsymbol v}_b] qa​qb​=[sa​sb​−v aT​v b​,  sa​v b​+sb​v a​+v a​×v b​] q ^ a q ^ b = q a 0 q b 0 + ε ( q a 0 q b ε + q a ε q b 0 ) \hat{\boldsymbol q}_a \hat{\boldsymbol q}_b = \boldsymbol q_{a0}\boldsymbol q_{b0} + \varepsilon(\boldsymbol q_{a0}\boldsymbol q_{b\varepsilon}+\boldsymbol q_{a\varepsilon}\boldsymbol q_{b0}) q^​a​q^​b​=qa0​qb0​+ε(qa0​qbε​+qaε​qb0​)
点乘 q 1 ⋅ q 2 = s 1 s 2 + v ⃗ 1 T v ⃗ 2 = q 1 ∗ q 2 + q 2 ∗ q 1 2 \displaystyle \boldsymbol q_1 \cdot \boldsymbol q_2 = s_1s_2 + \vec{\boldsymbol v}_1^{\mathrm T}\vec{\boldsymbol v}_2=\frac{\boldsymbol q_1^*\boldsymbol q_2+\boldsymbol q_2^*\boldsymbol q_1}{2} q1​⋅q2​=s1​s2​+v 1T​v 2​=2q1∗​q2​+q2∗​q1​​ -
模长 ∥ q ∥ 2 = q ⋅ q = q ∗ q = s 2 + ∥ v ⃗ ∥ 2 \Vert\boldsymbol q\Vert^2 = \boldsymbol q\cdot\boldsymbol q = \boldsymbol q^*\boldsymbol q = s^2 + \Vert\vec{\boldsymbol v}\Vert^2 ∥q∥2=q⋅q=q∗q=s2+∥v ∥2 ∥ q ^ ∥ 2 = q ^ ∗ q ^ = q ^ q ^ ∗ = ∥ q 0 ∥ 2 + 2 ε q 0 ⋅ q ε \Vert\hat{\boldsymbol q}\Vert^2 = \hat{\boldsymbol q}^*\hat{\boldsymbol q} = \hat{\boldsymbol q}\hat{\boldsymbol q}^* = \Vert\boldsymbol q_0\Vert^2+2\varepsilon\boldsymbol q_0\cdot\boldsymbol q_\varepsilon ∥q^​∥2=q^​∗q^​=q^​q^​∗=∥q0​∥2+2εq0​⋅qε​
求逆 q − 1 = q ∗ ∥ q ∥ 2 \displaystyle \boldsymbol q^{-1} = \frac{\boldsymbol q^*}{\Vert\boldsymbol q\Vert^2} q−1=∥q∥2q∗​ q ^ − 1 = q ^ ∗ ∥ q ^ ∥ 2 \displaystyle \hat{\boldsymbol q}^{-1} = \frac{\hat{\boldsymbol q}^*}{\Vert\hat{\boldsymbol q}\Vert^2} q^​−1=∥q^​∥2q^​∗​
四元数 备注 对偶四元数 备注
待旋转向量 p = v ⃗ \boldsymbol p = \vec{\boldsymbol v} p=v 实部为0 p ^ = 1 + ε v \hat{\boldsymbol p} = 1+ \varepsilon \boldsymbol v p^​=1+εv 非对偶部分为实数1,对偶部分实数为0
旋转 p ′ = q p q ∗ \boldsymbol p' = \boldsymbol q\boldsymbol p\boldsymbol q^* p′=qpq∗ q − 1 = q ∗ \boldsymbol q^{-1}=\boldsymbol q^* q−1=q∗ p ^ ′ = q ^ p ^ q ^ ∗ ‾ \hat{\boldsymbol p}' = \hat{\boldsymbol q}\hat{\boldsymbol p}\overline{\hat{\boldsymbol q}^*} p^​′=q^​p^​q^​∗​ q ^ = q 0 + ε ⋅ 0 \hat{\boldsymbol q} = \boldsymbol q_0 + \varepsilon\cdot0 q^​=q0​+ε⋅0
平移 - 不支持 p ^ ′ = t ^ p ^ t ^ ∗ ‾ \hat{\boldsymbol p}' = \hat{\boldsymbol t}\hat{\boldsymbol p}\overline{\hat{\boldsymbol t}^*} p^​′=t^p^​t^∗ t ^ = 1 + ε t 2 \displaystyle \hat{\boldsymbol t}=1+\varepsilon\frac{\boldsymbol t}{2} t^=1+ε2t​
旋转+平移 - 不支持 p ^ ′ = q ^ t ^ p ^ t ^ ∗ q ^ ∗ ‾ \hat{\boldsymbol p}' =\hat{\boldsymbol q} \hat{\boldsymbol t}\hat{\boldsymbol p}\overline{\hat{\boldsymbol t}^*\hat{\boldsymbol q}^*} p^​′=q^​t^p^​t^∗q^​∗​ -
轴角表示 cos ⁡ θ 2 + u ⃗ sin ⁡ θ 2 \displaystyle \cos\frac{\theta}{2} + \vec{\boldsymbol u}\sin\frac{\theta}{2} cos2θ​+u sin2θ​ 只能表示旋转,不能表示平移 u ⃗ \\\vec{\boldsymbol u} u 为旋转轴, θ \theta θ为旋转角 cos ⁡ θ ^ 2 + u ⃗ ^ sin ⁡ θ ^ 2 \displaystyle\cos\frac{\hat{\theta}}{2} + \hat{\vec{\boldsymbol u}}\sin\frac{\hat{\theta}}{2} cos2θ^​+u ^sin2θ^​ θ ^ = θ + ε d , u ⃗ ^ = u ⃗ + ε m \hat{\theta}=\theta+\varepsilon d,~~\hat{\vec{\boldsymbol u}}=\vec{\boldsymbol u}+\varepsilon\boldsymbol m \\~ θ^=θ+εd,  u ^=u +εm 其中 u ⃗ ^ \hat{\vec{\boldsymbol u}} u ^为旋转轴, θ \theta θ为旋转角 d \\d d为沿着轴的移动距离, m \boldsymbol m m为矩

附录B 公式证明

B.1

记四元数 q a = v a , q b = v b \boldsymbol q_a = \boldsymbol v_a,~~~\boldsymbol q_b = \boldsymbol v_b qa​=va​,   qb​=vb​,即两个实部为0的四元数
那么:
q a q b = − v ⃗ a T v ⃗ b + v ⃗ a × v ⃗ b q b q a ∗ = v ⃗ a T v ⃗ b − v ⃗ b × v ⃗ a \boldsymbol q_a \boldsymbol q_b = - \vec{\boldsymbol v}_a^{\mathrm T}\vec{\boldsymbol v}_b + \vec{\boldsymbol v}_a\times\vec{\boldsymbol v}_b \\ \boldsymbol q_b \boldsymbol q_a^* = \vec{\boldsymbol v}_a^{\mathrm T}\vec{\boldsymbol v}_b - \vec{\boldsymbol v}_b\times\vec{\boldsymbol v}_a qa​qb​=−v aT​v b​+v a​×v b​qb​qa∗​=v aT​v b​−v b​×v a​

两式相加,得
q a q b + q b q a ∗ = 2 ( v ⃗ a × v ⃗ b ) o r v ⃗ a × v ⃗ b = 1 2 ( q a q b + q b q a ∗ ) \boldsymbol q_a \boldsymbol q_b + \boldsymbol q_b \boldsymbol q_a^* = 2( \vec{\boldsymbol v}_a\times\vec{\boldsymbol v}_b) \\ or \\ \vec{\boldsymbol v}_a\times\vec{\boldsymbol v}_b = \frac{1}{2}\big(\boldsymbol q_a \boldsymbol q_b + \boldsymbol q_b \boldsymbol q_a^*\big) qa​qb​+qb​qa∗​=2(v a​×v b​)orv a​×v b​=21​(qa​qb​+qb​qa∗​)

四元数,对偶四元数,三维旋转,平移相关推荐

  1. 三维旋转四元数系列(4.四元数三维旋转表达)

    三维旋转四元数系列(0.复数基本介绍)https://blog.csdn.net/SKANK911/article/details/90033451 三维旋转四元数系列(1.复数与二维旋转)https ...

  2. 三维旋转四元数系列(5.四元数的插值)

    三维旋转四元数系列(3.四元数定义与基本性质)https://blog.csdn.net/SKANK911/article/details/90186556 三维旋转四元数系列(4.四元数三维旋转表达 ...

  3. Quaternion and isoclinic rotation explaining more (四元数和等倾旋转)

    Quaternion and isoclinic rotations: explaining more (四元数和等倾旋转) 文章目录 I 四维空间中的旋转表示 II 四元数描述的三维空间中的旋转计算 ...

  4. 彻底搞懂“旋转矩阵/欧拉角/四元数”,让你体会三维旋转之美

    目录 旋转矩阵 坐标变换的作用 实现坐标变换所需的数据 位姿变换 坐标变换中旋转的实质 坐标变换中平移的实质 如何计算坐标系B各坐标轴在坐标系A上的投影?(多坐标变换) 如何实现坐标变换? 欧拉角 欧 ...

  5. 三维旋转四元数系列(3.四元数定义与基本性质)

    三维旋转四元数系列(0.复数基本介绍)https://blog.csdn.net/SKANK911/article/details/90033451 三维旋转四元数系列(1.复数与二维旋转)https ...

  6. 三维旋转四元数系列(2.三维旋转之轴角与罗德里格斯公式推导)

    序:上两节我们介绍了复数的基本概念与性质,以及复数与二维旋转的关系. 三维旋转四元数系列(0.复数基本介绍)https://blog.csdn.net/SKANK911/article/details ...

  7. 【飞控理论】【惯性导航基础】二维平面的旋转如何用代数表示?三维平面的旋转如何用代数表示?什么是四元数?四元数、欧拉角、方向余弦之间有什么关系?

    上一篇欧拉角 由于欧拉角在描述三维空间物体旋转问题时存在万向节死锁问题(详情戳这里),所以引入四元数概念. 目录 1.二维平面的旋转 2.三维平面的旋转(什么是四元数) 3.<捷联惯性导航> ...

  8. 资料分享:四元数与三维旋转 | 故事:四维虫子

    该分享来自鱼粉me,资料为pdf格式,主要阐述四元数和三维旋转,作者为Krasjet. 公众号后台回复:四元数 获取完整PDF 故事分享-四维虫子 他:"你好." 我:" ...

  9. 笔记-基于对偶四元数的姿轨耦合动力学模型1

    基于对偶四元数的航天器姿轨耦合建模 对偶四元数能一体化描述空间刚体转动和平动,基于对偶四元数建立航天器相对运动的姿轨耦合动力学模型.对偶四元数表示的动力学模型形式简洁,具有明确的物理意义,与四元数描述 ...

最新文章

  1. spring-data-jpa
  2. Scss、elementUI引入、transition动画 - 学习笔记
  3. python按字节读取_Python read函数按字节(字符)读取文件的实现
  4. Matlab增加块注释
  5. jQuery插件开发之windowScroll
  6. NYOJ--12--喷水装置(二)
  7. webpack分离打包css和less
  8. c语言二级选择题APP,C语言二级考试题库
  9. 【转载】双重身份:2017JCR既是SCI又是SSCI的期刊名单
  10. Java Web开发实战经典 李兴华 PDF pdf
  11. 硬件工程师综合训练 旋转图形设计
  12. 计算机网口速率修改,win7系统修改无线网卡连接速率的操作方法
  13. 影像变革之年 CP+2019展会五大看点
  14. 【无标题】免费源码资源,游戏源码下载
  15. 各种控制方法在抗干扰方面的区别
  16. java设计一个形状shape_编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接......
  17. excel空白处自动填充内容怎么操作,excel空白处填充0或上行方法
  18. nodejs __dirname 与 process.cwd(); 的区别
  19. KVM虚拟化配置详解
  20. 揭秘网络黑产链:为何普通黑客能月入 8 万美元?

热门文章

  1. Boost库命名规则
  2. 斯蒂夫乔布斯传札记:第一波
  3. 10条恶风水,你占了几条?
  4. 2021最新JVM夺命连环10问,你能答上来几道?
  5. 经验分享 | LCR数字电桥校准方法开路/短路清零
  6. redis 操作5中数据类型
  7. 树莓派摄像头配置mjpg-streamer安装及使用
  8. 运营商,虚拟运营商 电信行业的 crm,计费,账务,bss,boss 系统整套解决方案讨论和分享
  9. 外贸企业发开发信哪家邮箱好用?企业邮箱退信怎么办?
  10. java实战开发小工具-------搜题软件,导出jar包变成exe软件!可运行没有安装java jdk电脑中 快速用来巩javase知识