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

一、四元数

1.1 定义 与运算法则

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

四元数也可以表示为:
q=s+v⃗=[ s,v⃗ ]=(sv⃗) \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=qq∗=s2+∥v⃗∥2=s2+vx2+vy2+vz2\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∗​

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

  • 数乘:kq=[ks, kv⃗]k\boldsymbol q= [ks,~k\vec{\boldsymbol v}]kq=[ks, kv]
  • 加法:qa+qb=[ sa+sb,  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​,  va​+vb​ ]
  • 乘法:qaqb=[sasb−v⃗aTv⃗b,  sav⃗b+sbv⃗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​−vaT​vb​,  sa​vb​+sb​va​+va​×vb​]
  • 点乘:qa⋅qb=sasb+v⃗aTv⃗b=qa∗qb+qb∗qa2\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​+vaT​vb​=2qa∗​qb​+qb∗​qa​​
  • 共轭性质:(qaqb)∗=qb∗qa∗(\boldsymbol q_a\boldsymbol q_b)^*=\boldsymbol q_b^*\boldsymbol q_a^*(qa​qb​)∗=qb∗​qa∗​
  • 向量叉乘:v⃗a×v⃗b=12(qaqb+qbqa∗)[附录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]}va​×vb​=21​(qa​qb​+qb​qa∗​)[附录B.1]

1.2 单位四元数

单位四元数,指模长为 111 的四元数,即 ∥q∥=1\Vert\boldsymbol q\Vert=1∥q∥=1
任意四元数乘以单位四元数,模长不变
qq∗=l2,  ququ∗=1    ⟹    qqu(qqu)∗=qququ∗q∗=l2 \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θ​, usin2θ​ ]

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θ​, usin2θ​ ] 是我们常用的旋转四元数,
其中 u⃗\vec{\boldsymbol u}u 表示旋转轴,θ\thetaθ 表示绕旋转轴旋转的角度,
对于空间向量 v⃗\vec{\boldsymbol v}v,使用四元数 q\boldsymbol qq 对其旋转可以表示为:
v′=qvq∗ \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α​, usin2α​ ],qβ=[ cos⁡β2, u⃗sin⁡β2 ]\displaystyle\boldsymbol q_\beta = [~\cos\frac{\beta}{2}, ~\vec{\boldsymbol u}\sin\frac{\beta}{2}~]qβ​=[ cos2β​, usin2β​ ]
那么:
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α+β​, usin2α+β​ ]=qα+β​

易得:
qt=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θ​)+usin(2tθ​)

1.4 旋转四元数的求导

假设四元数 q\boldsymbol qq 是关于时间 ttt 的函数,该四元数旋转的角速度为 ω⃗\vec{\boldsymbol \omega}ω
那么,
qt=cos⁡(∥ω⃗∥t2)+ω⃗∥ω⃗∥sin⁡(∥ω⃗∥t2) \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​)

则,
qt′=−∥ω⃗∥2sin⁡(∥ω⃗∥t2)+ω⃗2cos⁡(∥ω⃗∥t2)=−ω⃗Tω⃗2∥ω⃗∥sin⁡(∥ω⃗∥t2)+ω⃗2cos⁡(∥ω⃗∥t2)=−ω⃗2⋅ω⃗∥ω⃗∥sin⁡(∥ω⃗∥t2)+ω⃗2cos⁡(∥ω⃗∥t2) \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ω​ ],那么,
qt′=qωqt \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^) 在 aaa 点使用泰勒展开式
f′(a+εb)=f(a)+εbf′(a)+ε2b22!f′′(a)+…=f(a)+εbf′(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^=q0+εqε \hat{\boldsymbol q} = \boldsymbol q_0 + \varepsilon\boldsymbol q_\varepsilon q^​=q0​+εqε​

3.1 定义 与运算法则

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

  • 共轭:q^∗=q0∗+εqε∗\hat{ \boldsymbol q }^* = \boldsymbol q_0^* + \varepsilon\boldsymbol q_\varepsilon^*q^​∗=q0∗​+εqε∗​
  • 对偶共轭:q^‾=q0−εqε\overline{\hat{ \boldsymbol q }} = \boldsymbol q_0 - \varepsilon\boldsymbol q_\varepsilonq^​​=q0​−εqε​
  • 双共轭:q^∗‾=q0∗−εqε∗\overline{\hat{ \boldsymbol q }^*} = \boldsymbol q_0^* - \varepsilon\boldsymbol q_\varepsilon^*q^​∗​=q0∗​−εqε∗​
  • 模长:∥q^∥=q^∗q^=q^q^∗=∥q0∥+εq0⋅qε∥q0∥\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=qa0+εqaε\hat{\boldsymbol q}_a = \boldsymbol q_{a0} + \varepsilon\boldsymbol q_{a\varepsilon}q^​a​=qa0​+εqaε​ 和 q^b=qb0+εqbε\hat{\boldsymbol q}_b = \boldsymbol q_{b0} + \varepsilon\boldsymbol q_{b\varepsilon}q^​b​=qb0​+εqbε​ ,运算性质如下:

  • 数乘:kq^=kq0+εkqεk\hat{\boldsymbol q}= k\boldsymbol q_{0} + \varepsilon k\boldsymbol q_{\varepsilon}kq^​=kq0​+εkqε​
  • 加法:q^a+q^b=qa0+qb0+ε(qaε+qbε)\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^aq^b=qa0qb0+ε(qa0qbε+qaεqb0)\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^aq^b)∗=q^b∗q^a∗,     q^aq^b‾=q^a‾ q^b‾,     (q^aq^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⟶{∥q0∥=1q0⋅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=0qε​=0,q0\boldsymbol q_0q0​ 为任意单位四元数。如 q^=q0=(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θ​,usin2θ​),其中 ∥u⃗∥=1\Vert\vec{\boldsymbol u}\Vert = 1∥u∥=1
② q0=1\boldsymbol q_0=1q0​=1,qε\boldsymbol q_\varepsilonqε​ 标量部分为 000。如 q^=1+εt⃗\displaystyle\hat{\boldsymbol q} = 1 + \varepsilon \vec{\boldsymbol t}q^​=1+εt
③ q0\boldsymbol q_0q0​ 为单位向量,qε\boldsymbol q_\varepsilonqε​ 是与 q0\boldsymbol q_0q0​ 垂直的向量。如 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 旋转

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

3.3.2 平移

对偶四元数 可以表示 普通四元数 无法表示的三维空间平移
对于三维坐标的平移: t⃗=(tx,ty,tz)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 vv 进行平移可以表示为:
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+ε(r0vr0∗+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+εr0(v⃗+t⃗)r0∗ \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=lb+εmb\hat{\boldsymbol l}_b = \boldsymbol l_b + \varepsilon \boldsymbol m_bl^b​=lb​+εmb​ 经过旋转与平移 (R,t⃗)(\boldsymbol R, \vec{\boldsymbol t})(R,t) 后,成为了直线 l^a=la+εma\hat{\boldsymbol l}_a = \boldsymbol l_a + \varepsilon \boldsymbol m_al^a​=la​+εma​,
那么他们满足:
l⃗a=Rl⃗bm⃗a=p⃗a×l⃗a=(Rp⃗b+t⃗)×Rl⃗b=R(p⃗b×l⃗b)+t⃗×Rl⃗b=Rm⃗b+t⃗×Rl⃗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} la​ma​​=Rlb​=p​a​×la​=(Rp​b​+t)×Rlb​=R(p​b​×lb​)+t×Rlb​=Rmb​+t×Rlb​​

改写为四元数形式,记 q\boldsymbol qq 为旋转四元数,记四元数 t=0+t⃗\boldsymbol t = 0+\vec{\boldsymbol t}t=0+t,得:
la=qlbq∗ma=qmbq∗+12(t qlbq∗+qlbq∗ 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′=12tq\displaystyle\boldsymbol q' = \frac{1}{2}\boldsymbol t\boldsymbol qq′=21​tq,则:
la=qlbq∗ma=qmbq∗+q′lbq∗+qlbq′∗ \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′∗​

得到
la+εma=(q+εq′)(lb+εmb)(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^bq^∗ \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 qq表示q^=q0+εqε\hat{\boldsymbol q} = \boldsymbol q_0 + \varepsilon\boldsymbol q_\varepsilonq^​=q0​+εqε​对偶四元数在普通四元数上加^
共轭四元数q∗=[ s, −v⃗ ]\boldsymbol q^* = [~s,~-\vec{\boldsymbol v}~]q∗=[ s, −v ]-q^∗=q0∗+εqε∗\hat{\boldsymbol q}^* = \boldsymbol q_0^* + \varepsilon\boldsymbol q_\varepsilon^*q^​∗=q0∗​+εqε∗​四元数部分共轭
共轭对偶--q^‾=q0−εqε\overline{\hat{\boldsymbol q}} = \boldsymbol q_0 - \varepsilon\boldsymbol q_\varepsilonq^​​=q0​−εqε​对偶部分共轭
共轭对偶四元数--q^∗‾=q0∗−εqε∗\overline{\hat{\boldsymbol q}^* } = \boldsymbol q_0^* - \varepsilon\boldsymbol q_\varepsilon^*q^​∗​=q0∗​−εqε∗​两部分都共轭
单位四元数q∗q=1⟶s2+∥v⃗∥2=1\boldsymbol q^*\boldsymbol q=1 \longrightarrow \\s^2+\Vert\vec{\boldsymbol v}\Vert^2 =1q∗q=1⟶s2+∥v∥2=1-q^∗q^=1⟶∥q0∥=1,  q0⋅qε=0\hat{\boldsymbol q}^*\hat{\boldsymbol q}=1 \longrightarrow \\ \Vert\boldsymbol q_0\Vert = 1,~~ \boldsymbol q_0\cdot\boldsymbol q_\varepsilon = 0q^​∗q^​=1⟶∥q0​∥=1,  q0​⋅qε​=0非对偶部分是单位四元数
运算四元数对偶四元数
数乘kq=[ks, kv⃗]k\boldsymbol q= [ks,~k\vec{\boldsymbol v}]kq=[ks, kv]kq^=kq0+kεqεk\hat{\boldsymbol q} = k\boldsymbol q_{0}+k\varepsilon\boldsymbol q_{\varepsilon}kq^​=kq0​+kεqε​
加法qa+qb=[sa+sb,  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​,  va​+vb​]q^a+q^b=qa0+qb0+ε(qaε+qbε)\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ε​)
乘法qaqb=[sasb−v⃗aTv⃗b,  sav⃗b+sbv⃗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​−vaT​vb​,  sa​vb​+sb​va​+va​×vb​]q^aq^b=qa0qb0+ε(qa0qbε+qaεqb0)\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​)
点乘q1⋅q2=s1s2+v⃗1Tv⃗2=q1∗q2+q2∗q12\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​+v1T​v2​=2q1∗​q2​+q2∗​q1​​-
模长∥q∥2=q⋅q=q∗q=s2+∥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^∗=∥q0∥2+2εq0⋅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实部为0p^=1+εv\hat{\boldsymbol p} = 1+ \varepsilon \boldsymbol vp^​=1+εv非对偶部分为实数1,对偶部分实数为0
旋转p′=qpq∗\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^=q0+ε⋅0\hat{\boldsymbol q} = \boldsymbol q_0 + \varepsilon\cdot0q^​=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+εt2\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θ​+usin2θ​只能表示旋转,不能表示平移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\\dd为沿着轴的移动距离,m\boldsymbol mm为矩

附录B 公式证明

B.1

记四元数 qa=va,   qb=vb\boldsymbol q_a = \boldsymbol v_a,~~~\boldsymbol q_b = \boldsymbol v_bqa​=va​,   qb​=vb​,即两个实部为0的四元数
那么:
qaqb=−v⃗aTv⃗b+v⃗a×v⃗bqbqa∗=v⃗aTv⃗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​=−vaT​vb​+va​×vb​qb​qa∗​=vaT​vb​−vb​×va​

两式相加,得
qaqb+qbqa∗=2(v⃗a×v⃗b)orv⃗a×v⃗b=12(qaqb+qbqa∗) \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(va​×vb​)orva​×vb​=21​(qa​qb​+qb​qa∗​)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐