四元数,Quaternions,旋转

四元数是一种扩展复数概念的数学结构,常用于表示三维空间中的旋转。单位四元数(q=(w,v))与点p=(x,y,z)结合,通过qpq^-1公式可实现点的旋转,保持模长不变。这一变换在三维几何和计算机图形学中有重要应用。

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
四元数在几何空间中,可以近似理解为一个四维空间:
8

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 需要满足一个条件:

  1. 模长相等,即 ∣ 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=qpq1=qpq=(w,v)(0,p)(w,v)

式中:

  • 由单位四元数的定义, q − 1 = q ∗ q^{-1}=q^{*} q1=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)
  1. 首先证明 ∣ 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=q2p=1∣p=p
  2. 然后证明 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)=(vp,wp+v×p)(w,v)=(vpw+(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} vpw=wpv
  • 第四行转第五行,由向量外积(叉乘)的定义,三维向量 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=fv=f∣∣vcos(90)=0
    在这里插入图片描述

至此,式(1)所示结论成立,使用单位四元数可以以式(1)的形式表示一个三维对象的旋转

3.2 四元数表示旋转的几何描述

[暂时不需要用到此知识,之后有机会补充]

4 四元数的运算性质

[基础知识,之后有机会补充]

  • 模长
  • 乘法运算
  • ……

5 尾注

5.1 参考材料

5.2 相关阅读

  • 四元数、欧拉角和旋转矩阵
  • ……

5.3 Q&A

  • ……
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值