1 什么是四元数?
四元数的代数及几何定义
四元数是负数的拓展,数学表示为
q
=
(
w
+
x
i
+
y
j
+
z
k
)
q=(w+xi+yj+zk)
q=(w+xi+yj+zk)
也可以表示为标量+向量形式
q
=
(
w
,
v
)
q=(w,\bm{v})
q=(w,v)
具有以下性质:
i
2
=
j
2
=
k
2
=
i
j
k
=
−
1
i^2=j^2=k^2=ijk=-1
i2=j2=k2=ijk=−1
四元数在几何空间中,可以近似理解为一个四维空间:

2 什么是旋转?
在理解如何使用四元数表示三维旋转之前,首先需要好好理解一下什么是旋转。
设
p
=
(
x
,
y
,
z
)
p=(x,y,z)
p=(x,y,z) 是三维空间中的一个点,点
p
p
p 也可以描述为坐标原点到该点的向量,描述为
p
=
(
x
,
y
,
z
)
\bm{{p}}=(x,y,z)
p=(x,y,z)。为理解的方便,我们统一使用向量描述。
将
p
\bm{{p}}
p 绕三维空间中的三个基准轴
{
x
,
y
,
z
}
\{x,y,z\}
{x,y,z}旋转得到新的向量
p
′
\bm{{p'}}
p′。要使
p
′
\bm{{p'}}
p′是
p
\bm{{p}}
p的一个旋转,
p
′
\bm{p'}
p′ 需要满足一个条件:
- 模长相等,即 ∣ p ′ ∣ = ∣ p ∣ \bm{|{p'}|=|{p}|} ∣p′∣=∣p∣
实际上,在任何维度中,旋转就是模长相等的变换,如下图所示

3 基于四元数的三维旋转变换
3.1 使用四元数表示三维旋转
为了更方便的理解四元数是如何让一个三维对象产生旋转的,我们选择从结论倒推其中的数学原理
结论: 设
q
=
(
w
,
v
)
q=(w,\bm{{v}})
q=(w,v)是一个单位四元数,
p
=
(
x
,
y
,
z
)
p=(x,y,z)
p=(x,y,z)是三维空间中的一个点,。将
p
p
p 绕空间中的三个基准轴
{
x
,
y
,
z
}
\{x,y,z\}
{x,y,z}旋转,得到
p
′
p'
p′。
p
′
p'
p′可以使用下式表示:
p
′
=
q
p
q
−
1
=
q
p
q
∗
=
(
w
,
v
)
(
0
,
p
)
(
w
,
−
v
)
\begin{align} p'=qpq^{-1}=qpq^{*}=(w,\bm{{v}})(0,\bm{{p}})(w,-\bm{{v}}) \end{align}
p′=qpq−1=qpq∗=(w,v)(0,p)(w,−v)
式中:
- 由单位四元数的定义, q − 1 = q ∗ q^{-1}=q^{*} q−1=q∗;
- 使用
w
=
0
w=0
w=0的纯四元数表示三维点
p
=
(
x
,
y
,
z
)
p=(x,y,z)
p=(x,y,z),即
p
=
(
0
,
p
)
p=(0,\bm{{p}})
p=(0,p)
三维空间中的点都可以使用纯四元数表示,相当于四元数表示的四维空间在 w w w维度上坍缩,即 w = 0 w=0 w=0
接下来证明上述结论
根据我们对空间点/向量旋转的理解(参见本文第2节),要让
p
′
p'
p′成为
p
p
p的一个旋转,需要满足两个条件
- 旋转的基本条件:模长相等,即 ∣ p ′ ∣ = ∣ p ∣ \bm{|{p'}|=|{p}|} ∣p′∣=∣p∣
- p ′ p' p′可以表示一个三维空间中的点,即 p ′ p' p′是一个纯四元数,即 p ′ = ( 0 , p ′ ) p'=(0,\bm{{p'}}) p′=(0,p′)
- 首先证明
∣
p
′
∣
=
∣
p
∣
\bm{|{p'}|=|{p}|}
∣p′∣=∣p∣
根据四元数的运算性质(参见本文第4节),由于 q q q是一个单位四元数,容易得:
∣ p ′ ∣ = ∣ q p q ∗ ∣ = ∣ q ∣ 2 ∣ p ∣ = 1 ∣ p ∣ = ∣ p ∣ |p'|=|qpq^{*}|=|q|^2|p|=1|p|=|p| ∣p′∣=∣qpq∗∣=∣q∣2∣p∣=1∣p∣=∣p∣ - 然后证明
p
′
=
(
0
,
p
′
)
p'=(0,\bm{{p'}})
p′=(0,p′)
根据四元数的乘法运算(参见本文第4节),将式(1)展开,得到:
p ′ = ( w , v ) ( 0 , p ) ( w , − v ) = ( − v ⋅ p , w p + v × p ) ( w , − v ) = ( − v ⋅ p w + ( w p + v × p ) ⋅ v , ∼ ) = ( ( v × p ) ⋅ v , ∼ ) = ( 0 , ∼ ) \begin{equation} \begin{aligned} p'&=(w,\bm{{v}})(0,\bm{{p}})(w,-\bm{{v}})\\ &=(-\bm{v\cdot p}, w\bm{p}+\bm{v}\times\bm{p})(w, \bm{-v})\\ &=(-\bm{v\cdot p}w+(w\bm{p}+\bm{v}\times\bm{p})\cdot\bm{v}, \sim)\\ &=((\bm{v}\times\bm{p})\cdot\bm{v}, \sim)\\ &=(0, \sim) \end{aligned} \end{equation} p′=(w,v)(0,p)(w,−v)=(−v⋅p,wp+v×p)(w,−v)=(−v⋅pw+(wp+v×p)⋅v,∼)=((v×p)⋅v,∼)=(0,∼)
式中:
- 第三行转第四行,由向量数量积(点乘)的定义, v ⋅ p w = w p ⋅ v \bm{v}\cdot\bm{p}w=w\bm{p}\cdot\bm{v} v⋅pw=wp⋅v
- 第四行转第五行,由向量外积(叉乘)的定义,三维向量
v
\bm{v}
v叉乘
p
\bm{p}
p后得到的向量将会垂直于三维空间,即位于四元数的
w
w
w维上,记该向量为
f
\bm{f}
f,
f
\bm{f}
f与
v
\bm{v}
v垂直,固
(
v
×
p
)
⋅
v
=
f
⋅
v
=
∣
f
∣
∣
v
∣
c
o
s
(
90
)
=
0
(\bm{v}\times\bm{p})\cdot\bm{v} = \bm{f}\cdot\bm{v}=\bm{|f||v|}cos(90)=0
(v×p)⋅v=f⋅v=∣f∣∣v∣cos(90)=0

至此,式(1)所示结论成立,使用单位四元数可以以式(1)的形式表示一个三维对象的旋转
3.2 四元数表示旋转的几何描述
[暂时不需要用到此知识,之后有机会补充]
4 四元数的运算性质
[基础知识,之后有机会补充]
- 模长
- 乘法运算
- ……
5 尾注
5.1 参考材料
5.2 相关阅读
- 四元数、欧拉角和旋转矩阵
- ……
5.3 Q&A
- ……
四元数是一种扩展复数概念的数学结构,常用于表示三维空间中的旋转。单位四元数(q=(w,v))与点p=(x,y,z)结合,通过qpq^-1公式可实现点的旋转,保持模长不变。这一变换在三维几何和计算机图形学中有重要应用。
3996





