1 四元数的定义
形如 a + b i + c j + d k a+b\textbf{i}+c\textbf{j}+d\textbf{k} a+bi+cj+dk的量,其中 a 、 b 、 c 、 d a、b、c、d a、b、c、d为实数,而 i 、 j 、 k \textbf{i}、\textbf{j}、\textbf{k} i、j、k满足下列关系: i 2 = j 2 = k 2 = ijk = − 1 \textbf{i}^2=\textbf{j}^2=\textbf{k}^2=\textbf{ijk}=-1 i2=j2=k2=ijk=−1 ij = − ji = k , jk = − kj = i , ki = − ik = j \textbf{ij}=-\textbf{ji}=\textbf{k},\textbf{jk}=-\textbf{kj}=\textbf{i},\textbf{ki}=-\textbf{ik}=\textbf{j} ij=−ji=k,jk=−kj=i,ki=−ik=j
× \times × | 1 1 1 | i \textbf{i} i | j \textbf{j} j | k \textbf{k} k |
---|---|---|---|---|
1 1 1 | 1 1 1 | i \textbf{i} i | j \textbf{j} j | k \textbf{k} k |
i \textbf{i} i | i \textbf{i} i | − 1 -1 −1 | k \textbf{k} k | − j -\textbf{j} −j |
j \textbf{j} j | j \textbf{j} j | − k -\textbf{k} −k | − 1 -1 −1 | i \textbf{i} i |
k \textbf{k} k | k \textbf{k} k | j \textbf{j} j | − i -\textbf{i} −i | − 1 -1 −1 |
它是复数*的推广,因此亦称超复数。它除了乘法交换律不成立外,通常代数的其余运算律都成立。
2 四元数的产生
四元数是推广平面复数系结构的产物。大家知道, 复数能用来表示和研究平面上的向量, 而向量的概念在物理学上十分重要, 力、速度和加速度这些有大小和方向的量都是向量。用复数来表示向量的一个很大的优点, , 就是人们不一定要几何地做出这些向量, 但能够用代数的方法研究它们, 就像是曲线的方程能用来表示曲线和研究曲线而带给人们的便利一样。但是, 复数仅仅能够表示平面二维的向量, 如何表示三维空间中向量的运算, 这就需要对平面复数系结构进行推广。
爱尔兰数学家威廉·罗恩·哈密顿花了他一生中大部分时间寻找“三维复数”。据说,每天早上他儿子都会问他,找没找到三维的除法,但他总说“还没有”。但在1843年10月16日,走过都柏林的布鲁姆桥的时候,他灵光一闪,他需要给复数加上的不是一个维度,而是两个额外的假想的维度,即一共三个虚维度来描述空间,而实数则在第四个维度,垂直于全部三个虚数轴。为了防止忘记,他在桥上刻下了描述这三个虚数单位的等式。为了纪念这件事,人们又把他的等式刻在了一块石板上。
四元数理论是哈密顿于19世纪40-60年代创立,是复数在四维空间的不可交换延申,是有限维的实数结合除法代数,是Clifford代数上的一个子代数。
20世纪60年代末,四元数开始在经典力学中获得实际应用。1985年,Shoemake把四元数引入计算机图形学,从此四元数在计算机图形学、计算机动画、计算机视觉和机器人领域获得广泛应用。1996年,彩色图像的四元数模型被提出,四元数在彩色图像上的应用研究才开始发展。
3 四元数的基本知识
四元数满足结合律和分配律,但是不满足乘法交换律。
对四元数
q
=
s
+
x
i
+
y
j
+
z
k
\textbf{q}=s+x\textbf{i}+y\textbf{j}+z\textbf{k}
q=s+xi+yj+zk,也可以用有序对,即二元形式
[
s
,
v
]
[s,\textbf{v}]
[s,v]来表示,其中,
s
∈
R
,
v
∈
R
3
s\in R,v\in R^3
s∈R,v∈R3。通常称这两部分是四元数的标量部分和向量部分,这样表示能更好地展示四元数和复数之间的相似性。
3.1 四元数的模
∣ q ∣ = s 2 + v 2 = s 2 + x 2 + y 2 + z 2 |\textbf{q}|=\sqrt{s^2+\textbf{v}^2}=\sqrt{s^2+x^2+y^2+z^2} ∣q∣=s2+v2=s2+x2+y2+z2
3.2 共轭四元数
q ∗ = [ s , − v ] , q q ∗ = [ s 2 − < v , − v > , − s v + s v + v × ( − v ) ] = [ s 2 + v 2 , 0 ] = ∣ q ∣ 2 \textbf{q}^*=[s,-\textbf{v}], \textbf{q}\textbf{q}^*=[s^2-<\textbf{v},-\textbf{v}>,-s\textbf{v}+s\textbf{v}+\textbf{v}\times(-\textbf{v})]=[s^2+\textbf{v}^2,\textbf{0}]=|\textbf{q}|^2 q∗=[s,−v],qq∗=[s2−<v,−v>,−sv+sv+v×(−v)]=[s2+v2,0]=∣q∣2
3.3 四元数的逆
q
−
1
=
q
∗
∣
q
∣
2
\textbf{q}^{-1}=\frac{\textbf{q}^*}{|\textbf{q}|^2}
q−1=∣q∣2q∗
证明如下:
q
q
−
1
=
[
1
,
0
]
=
1
\textbf{q}\textbf{q}^{-1}=[1,\textbf{0}]=1
qq−1=[1,0]=1,两边同时乘以共轭四元数得
q
∗
q
q
−
1
=
q
∗
\textbf{q}^*\textbf{q}\textbf{q}^{-1}=\textbf{q}^*
q∗qq−1=q∗,即
∣
q
∣
2
q
−
1
=
q
∗
|\textbf{q}|^2\textbf{q}^{-1}=\textbf{q}^*
∣q∣2q−1=q∗,
q
−
1
=
q
∗
∣
q
∣
2
\textbf{q}^{-1}=\frac{\textbf{q}^*}{|\textbf{q}|^2}
q−1=∣q∣2q∗得证。
3.4 单位四元数
给定任意的向量
v
\textbf{v}
v,我们可以把这个向量写成一个系数和一个单位方向向量的乘积:
v
=
v
v
^
,
v
=
∣
v
∣
,
∣
v
^
∣
=
1
\textbf{v}=v\hat{\textbf{v}},v=|\textbf{v}|,|\hat{\textbf{v}}|=1
v=vv^,v=∣v∣,∣v^∣=1
单位四元数就是
s
2
+
v
2
=
1
s^2+\textbf{v}^2=1
s2+v2=1的四元数。
对于纯四元数
q
\textbf{q}
q可以这样表示,
q
=
v
[
0
,
v
^
]
\textbf{q}=v[0,\hat{\textbf{v}}]
q=v[0,v^]
3.5 四元数的幂
四元数幂运算一般公式为:
q
t
=
e
x
p
(
t
⋅
l
o
g
q
)
\textbf{q}^t=exp(t·log\textbf{q})
qt=exp(t⋅logq)
对于纯四元数的exp函数有:
e
q
=
e
x
p
(
q
)
=
e
x
p
(
[
0
,
θ
v
^
]
)
=
[
c
o
s
θ
,
s
i
n
θ
v
^
]
e^{\textbf{q}}=exp(\textbf{q})=exp([0,\theta\hat{\textbf{v}}])=[cos\theta,sin\theta\hat{\textbf{v}}]
eq=exp(q)=exp([0,θv^])=[cosθ,sinθv^]
纯四元数的对数公式:
l
o
g
q
=
l
o
g
(
c
o
s
θ
+
s
i
n
θ
v
^
)
=
l
o
g
(
e
x
p
(
θ
v
^
)
)
=
θ
v
^
=
[
0
,
θ
v
^
]
log\textbf{q}=log(cos\theta+sin\theta\hat{\textbf{v}})=log(exp(\theta\hat{\textbf{v}}))=\theta\hat{\textbf{v}}=[0,\theta\hat{\textbf{v}}]
logq=log(cosθ+sinθv^)=log(exp(θv^))=θv^=[0,θv^]
对于上述两式需要证明:
q
=
s
+
x
i
+
y
j
+
z
k
=
s
+
v
=
[
s
,
v
]
=
[
s
,
0
]
+
[
0
,
v
]
\textbf{q}=s+x\textbf{i}+y\textbf{j}+z\textbf{k}=s+\textbf{v}=[s,\textbf{v}]=[s,\textbf{0}]+[0,\textbf{v}]
q=s+xi+yj+zk=s+v=[s,v]=[s,0]+[0,v]则有:
e
q
=
e
s
+
v
=
e
s
e
v
=
e
s
(
c
o
s
∣
v
∣
+
v
s
i
n
∣
v
∣
∣
v
∣
)
e^{\textbf{q}}=e^{s+\textbf{v}}=e^se^\textbf{v}=e^s(cos|\textbf{v}|+\textbf{v}\frac{sin|\textbf{v}|}{|\textbf{v}|})
eq=es+v=esev=es(cos∣v∣+v∣v∣sin∣v∣)推导过程如下:
v
2
=
[
0
−
<
v
,
v
>
,
0
⋅
v
+
0
⋅
v
+
v
×
v
]
=
[
−
<
v
,
v
>
,
0
+
0
+
0
]
=
−
(
x
2
+
y
2
+
z
2
)
=
−
∣
v
∣
2
\textbf{v}^2=[0-<\textbf{v},\textbf{v}>,0·\textbf{v}+0·\textbf{v}+\textbf{v}\times\textbf{v}]=[-<\textbf{v},\textbf{v}>,0+0+0]=-(x^2+y^2+z^2)=-|\textbf{v}|^2
v2=[0−<v,v>,0⋅v+0⋅v+v×v]=[−<v,v>,0+0+0]=−(x2+y2+z2)=−∣v∣2显然我们可以得到以下式子:
v
2
=
−
∣
v
∣
2
,
v
3
=
∣
v
∣
2
v
,
v
4
=
∣
v
∣
4
,
v
5
=
∣
v
∣
4
v
,
v
6
=
−
∣
v
∣
6
,
…
\textbf{v}^2=-|\textbf{v}|^2,\textbf{v}^3=|\textbf{v}|^2\textbf{v},\textbf{v}^4=|\textbf{v}|^4,\textbf{v}^5=|\textbf{v}|^4\textbf{v},\textbf{v}^6=-|\textbf{v}|^6,\dots
v2=−∣v∣2,v3=∣v∣2v,v4=∣v∣4,v5=∣v∣4v,v6=−∣v∣6,…根据级数展开,有:
e
v
=
∑
k
=
0
∞
v
k
k
!
e^\textbf{v}=\sum^{\infty}_{k=0}\frac{\textbf{v}^k}{k!}
ev=k=0∑∞k!vk
=
1
+
v
1
!
−
∣
v
∣
2
2
!
−
∣
v
∣
2
v
3
!
+
∣
v
∣
4
4
!
+
∣
v
∣
4
v
5
!
−
∣
v
∣
6
6
!
+
…
=1+\frac{\textbf{v}}{1!}-\frac{|\textbf{v}|^2}{2!}-\frac{|\textbf{v}|^2\textbf{v}}{3!}+\frac{|\textbf{v}|^4}{4!}+\frac{|\textbf{v}|^4\textbf{v}}{5!}-\frac{|\textbf{v}|^6}{6!}+\dots
=1+1!v−2!∣v∣2−3!∣v∣2v+4!∣v∣4+5!∣v∣4v−6!∣v∣6+…
=
1
+
∣
v
∣
v
1
!
∣
v
∣
−
∣
v
∣
2
2
!
−
∣
v
∣
3
v
3
!
∣
v
∣
+
∣
v
∣
4
4
!
+
∣
v
∣
5
v
5
!
∣
v
∣
−
∣
v
∣
6
6
!
+
…
=1+\frac{|\textbf{v}|\textbf{v}}{1!|\textbf{v}|}-\frac{|\textbf{v}|^2}{2!}-\frac{|\textbf{v}|^3\textbf{v}}{3!|\textbf{v}|}+\frac{|\textbf{v}|^4}{4!}+\frac{|\textbf{v}|^5\textbf{v}}{5!|\textbf{v}|}-\frac{|\textbf{v}|^6}{6!}+\dots
=1+1!∣v∣∣v∣v−2!∣v∣2−3!∣v∣∣v∣3v+4!∣v∣4+5!∣v∣∣v∣5v−6!∣v∣6+…
=
(
1
−
∣
v
∣
2
2
!
+
∣
v
∣
4
4
!
−
∣
v
∣
6
6
!
+
…
)
+
v
∣
v
∣
(
∣
v
∣
1
!
−
∣
v
∣
3
3
!
+
∣
v
∣
5
5
!
)
−
…
)
=(1-\frac{|\textbf{v}|^2}{2!}+\frac{|\textbf{v}|^4}{4!}-\frac{|\textbf{v}|^6}{6!}+\dots)+\frac{\textbf{v}}{|\textbf{v}|}(\frac{|\textbf{v}|}{1!}-\frac{|\textbf{v}|^3}{3!}+\frac{|\textbf{v}|^5}{5!})-\dots)
=(1−2!∣v∣2+4!∣v∣4−6!∣v∣6+…)+∣v∣v(1!∣v∣−3!∣v∣3+5!∣v∣5)−…)
=
c
o
s
∣
v
∣
+
v
∣
v
∣
s
i
n
∣
v
∣
=cos|\textbf{v}|+\frac{\textbf{v}}{|\textbf{v}|}sin|\textbf{v}|
=cos∣v∣+∣v∣vsin∣v∣所以有
e
q
=
e
s
+
v
=
e
s
e
v
=
e
s
(
c
o
s
∣
v
∣
+
v
s
i
n
∣
v
∣
∣
v
∣
)
e^{\textbf{q}}=e^{s+\textbf{v}}=e^se^\textbf{v}=e^s(cos|\textbf{v}|+\textbf{v}\frac{sin|\textbf{v}|}{|\textbf{v}|})
eq=es+v=esev=es(cos∣v∣+v∣v∣sin∣v∣)
4 四元数的应用
4.1 旋转*
四元数可以表示三维空间上任意的伸缩旋转变换,如果已知一个三维空间的伸缩旋转的转轴方向、旋转角度和伸缩比例,来求相应的四元数,是比较容易的。
四元数提供了一个很好的描述3D方位的方法,这使得它在计算机图像处理、机器人和虚拟现实以及任何涉及三维方位的地方有着广泛的应用,下面是几个例子:
计算机辅助设计(CAD)。其本质需要软件对物体的旋转动作进行平滑处理,并图像显示。
计算机游戏。Unity是开放3D游戏的平台,在很多地方我们都可以看到它的身影。很多游戏是需要图像的平移和旋转进行平滑过渡的,四元数就有了用武之地。
欧拉角有一个万向锁问题也是旋转问题,用四元数可以解决,也和上面应用相关。