四元数,对偶四元数,三维旋转,平移
注:本文中,
带箭头的粗体字母(如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+vxi+vyj+vzk
其中: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]qaqb=[sasb−vaTvb, savb+sbva+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=sasb+vaTvb=2qa∗qb+qb∗qa
- 共轭性质:(qaqb)∗=qb∗qa∗(\boldsymbol q_a\boldsymbol q_b)^*=\boldsymbol q_b^*\boldsymbol q_a^*(qaqb)∗=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(qaqb+qbqa∗)[附录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, ququ∗=1 ⟹ qqu(qqu)∗=qququ∗q∗=l2
两个单位四元数相乘仍是单位四元数
此性质对 对偶四元数 同样成立
有三种比较特殊的单位四元数:
- q=[ 1, 0 ]\boldsymbol q = [~1, ~\boldsymbol 0~]q=[ 1, 0 ]
- q=[ 0, u⃗ ]\boldsymbol q = [~0, ~\vec{\boldsymbol u}~]q=[ 0, u ],其中 u⃗\vec{\boldsymbol u}u 为单位向量
- 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!b2f′′(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^aq^b=qa0qb0+ε(qa0qbε+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^aq^b)∗=q^b∗q^a∗, q^aq^b=q^a q^b, (q^aq^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+εr0vr0∗
因为 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+ε(r0vr0∗+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}
lama=Rlb=pa×la=(Rpb+t)×Rlb=R(pb×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}
lama=qlbq∗=qmbq∗+21(t qlbq∗+qlbq∗ t∗)
记四元数 q′=12tq\displaystyle\boldsymbol q' = \frac{1}{2}\boldsymbol t\boldsymbol qq′=21tq,则:
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}
lama=qlbq∗=qmbq∗+q′lbq∗+qlbq′∗
得到
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^bq^∗
附录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]qaqb=[sasb−vaTvb, savb+sbva+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^aq^b=qa0qb0+ε(qa0qbε+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=s1s2+v1Tv2=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 | 实部为0 | p^=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
qaqb=−vaTvb+va×vbqbqa∗=vaTvb−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)
qaqb+qbqa∗=2(va×vb)orva×vb=21(qaqb+qbqa∗)
更多推荐



所有评论(0)