深入理解四元数

本文主要翻译了https://www.3dgep.com/understanding-quaternions/#Rotations的内容,并结合自己在学习过程中的理解。

0 前言
在无人机、计算机图形学领域都会涉及到物体在坐标系中的运动,在三维空间中,任何一个运动都可以用平移和旋转的组合来实现,但这里的运动可以用相对运动、绝对运动来表示,进而需要指定具体在那个坐标系下。在无人机系统中,坐标系大概可分为地球中心坐标系、当地水平坐标系、载体坐标系。
之所以需要旋转,是因为传感器(IMU、GPS等)的数据输出并不是在同一个坐标系下的,在分析数据的时候又必须在同一个坐标系中,所以需要将数据统一到同一坐标系中才好处理数据。关于旋转算法,有方向余弦矩阵、欧拉角,优点是直观易于理解,缺点是有万向节锁的问题。四元数完美解决这个问题,但四元数生来不是为了解决旋转的问题,它有很多自己的特性,旋转只是它的应用之一。所以要理解四元数,需要从它的基本特性再到它的应用。

1 简介
1843年10月16日,爱尔兰数学家哈密尔顿(Hamilton)在经过一座桥的时候,灵光一现,将一个公式刻在了桥上:
在这里插入图片描述
在这里插入图片描述

2 复数
在理解四元数之前,有必要去先明白它的由来,四元数的根源是基于复数系统。复数解决了x2 + 1 = 0 这个方程的求解问题,也就是i2 = -1。
一个实数加虚数构成复数:
在这里插入图片描述
2.1 复数的加减法
两个复数之间可以运用加减法:
在这里插入图片描述
2.2 复数乘以标量
复数乘以标量类似于结合律:
在这里插入图片描述
2.3 复数的乘法
在这里插入图片描述
2.4 复数的平方
在这里插入图片描述
2.5 复数的共轭
复数有共轭的概念,也就是:实部一样,虚部为正负相反:
在这里插入图片描述
复数与其共轭的乘积为实数:
在这里插入图片描述
2.6 复数的绝对值
在这里插入图片描述
2.7 复数的商
在这里插入图片描述

3 虚数i的特征
由前面提到的i2 = -1,在等式的左边不断地乘以i,等式右边会有什么样的规律呢?
在这里插入图片描述
如果继续写下去,规律就是等式右边将出现: (1,i,−1,−i,1,…)。
这跟数学运算中的二维坐标系表现出的规律相似:(x,y,−x,−y,x,…)。
实数二维坐标平面:
在这里插入图片描述
4 复平面
复数平面:实数轴相当于X轴,虚数轴相当于Y轴。
在这里插入图片描述
从复数平面可以看到,1乘以i,相当于1逆时针旋转了90°;1乘以 -i,相当于1顺时针旋转了90°
如果定义复数点P = 2 + I,那么有:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果在复数平面上表示:
在这里插入图片描述
4.1 旋转
定义复数q = cosθ + i*sinθ,可以表示在复数平面内,以半径为1为圆上任意点,也可以理解为在圆周上任意旋转,故称为旋转复数q。
当任意复数p = a + bi 乘以旋转复数q时,结果依然是复数,如下计算公式:
在这里插入图片描述
写成矩阵形式为:
在这里插入图片描述
5 四元数
有了复数和复平面的基本知识,我们能够将其扩展到3个虚数(i,j,k),加上1个实数,就得到了四元数的表示格式:
在这里插入图片描述
再根据哈密尔顿(Hamilton)的著名公式:
在这里插入图片描述
在这里插入图片描述
四元数作为有序对,可以表示为以下形式:s为实数,V为三维空间中的向量。
在这里插入图片描述
将V用i,j,k表示:
在这里插入图片描述
5.1 四元数的加减法
在这里插入图片描述
5.2 四元数的乘法
在这里插入图片描述
带入:
在这里插入图片描述
得到:
在这里插入图片描述
整理成四元数的格式:
在这里插入图片描述
运用四元数加法变换下形式:
在这里插入图片描述
再代入叉乘、点乘公式:
在这里插入图片描述
得到结果:
在这里插入图片描述
以上就是四元数的乘积公式,及其证明过程
5.3 实四元数
当三维空间向量V为0向量时,四元数称为实四元数:
在这里插入图片描述
5.4 四元数乘以标量
在这里插入图片描述
5.5 纯四元数
当实数部分为0时,称为纯四元数,其实也是四维空间的一个三维空间子集(超平面):
在这里插入图片描述
或者:
在这里插入图片描述
两者纯四元数的乘积:
在这里插入图片描述
5.6 四元数的其他表示形式
一个实四元数加一个纯四元数,就构成了普通四元数:
在这里插入图片描述

5.7 单位四元数
当我们描述一个向量时,有向量的模长和方向这两个参数,方向由单位向量来进行描述,对于纯四元数也一样,其三维向量部分为单位向量:
在这里插入图片描述
5.8 四元数的二元形式
在这里插入图片描述
5.9 四元数的共轭
在这里插入图片描述
四元数与其共轭的乘积:
在这里插入图片描述
5.10 四元数求逆
在这里插入图片描述
证明:
在这里插入图片描述
若q为单位四元数,则q的逆等于q的共轭
5.11 四元数点乘
在这里插入图片描述
6 旋转(重点)
在二维空间中的旋转可以乘以复数q = cosθ + isinθ 。
相似的,在三维空间中的旋转,可以乘以 q = [cosθ,sinθv^]。

现已知有一个三维向量P,属于纯四元数p的虚部: p=[0,P]。
现在有一个标准化的四元数q: q=[s,λv^]。
那么有:
在这里插入图片描述
根据得到的结果来分析,首先可以考虑一个特殊情况:待旋转的向量p与旋转轴V向量相互垂直。也即是,−λv^ ⋅ p = 0。 那么就得到了一个纯四元数了:
在这里插入图片描述
代入 s=cosθ 和λ=sinθ得到:
在这里插入图片描述
举例子:θ = 45°,p = [0,2i],v向量为k轴,代入得到;
在这里插入图片描述
其模长为:
在这里插入图片描述
这就是想要的效果:纯四元数(三维空间向量) p与 四元数q相乘以后,得到的p′ 仍然是纯四元数,且模长不变,这说明四元数q具有旋转的特性,这就是旋转
在这里插入图片描述
但是以上都是举例的特殊情况(旋转轴v向量与待旋转p向量垂直),那么一般情况下是否满足呢?
举例:现旋转轴v向量与待旋转p向量成45°,我们可以得到:
在这里插入图片描述
将q和p相乘:
在这里插入图片描述
代入V,p,θ = 45°得到:
在这里插入图片描述
在这里插入图片描述
这不是想要的结果了:因为不是纯四元数,而且向量的模长也不是2。也就是说,纯四元数(三维空间向量) p与 四元数q相乘以后,得到的p′ 不是纯四元数,且模长被改变,这说明乘以四元数q后,向量p被改变了特性。
似乎进入了另一个维度,这就是四维空间。我们只是想在三维空间中旋转,却把向量旋转到了四维空间中去了,怎么办呢?
那就在旋转一次吧,从四维空间旋转到三维空间中来,不就行了吗?

首先来计算一下q的逆四元数:q-1 = q* / |q|,而q的模长为1,则:
在这里插入图片描述
代入θ= 45°,得到:
在这里插入图片描述
左乘以qp得到:
在这里插入图片描述
以上的结果为纯四元数,且模长为2。这不就是回到三维空间了
在这里插入图片描述
我们虽然看到其回到了三维空间,且为纯四元数、模长不变,但是有一个问题就是旋转了两次45°,也就是说,这个过程总共旋转了90°,所以当我们需要旋转θ = 45°时,每次只用旋转θ/2。这也就得到了旋转算法的四元数通用表示公式:
在这里插入图片描述
任意向量p围绕V向量旋转θ角度后,得到的p’ = qpq-1。

  • 37
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值