通俗易懂四元数

基本概念

定义

四元数是由实部和虚部组成的扩展复数。一个四元数可以表示为 q = a + b i + c j + d k q = a + bi + cj + dk q=a+bi+cj+dk,其中 w w w 是实部, ( x i , y j , z k ) (xi, yj, zk) (xi,yj,zk) 是虚部。他的共轭值定义为:
q ∗ = a − b i − c j − d k q^* = a - bi - cj - dk q=abicjdk
它的绝对值则是非负实数定义为
∣ h ∣ = q q ∗ = a 2 + b 2 + c 2 + d 2 |h|= \sqrt{qq^*}= \sqrt{a^2+b^2+c^2+d^2} h=qq =a2+b2+c2+d2

四元数与空间旋转

单位四元数(绝对值为1的四元数)可以用于表示三维空间里的旋转

四元数表示三维空间里的点(纯四元数)

若三维空间里的一个点的笛卡尔坐标为 ( x , y , z ) (x,y,z) (x,y,z),则它用纯四元数(类似于纯虚数,即实部为0的四元数) x i + y j + z k xi+yj+zk xi+yj+zk 表示。

四元数表达旋转

四元数 q q q 可以表示为 q = c o s ( θ / 2 ) + u ∗ s i n ( θ / 2 ) q = cos(θ/2) + u * sin(θ/2) q=cos(θ/2)+usin(θ/2),其中 θ θ θ 是旋转角度, u = ( x , y , z ) u=(x, y, z) u=(x,y,z) 是单位旋转轴向量。

例如,假设我们要绕单位向量 u = ( 0 , 0 , 1 ) u=(0,0,1) u=(0,0,1) 旋转 90 度,构造四元数为 q = c o s ( π / 4 ) + ( 0 i + 0 j + 1 k ) ∗ s i n ( π / 4 ) q = cos(\pi/4) + ( 0i +0j+1k) * sin(\pi/4) q=cos(π/4)+(0i+0j+1k)sin(π/4)

单位四元数表示一个三维空间旋转

q q q 为一个单位四元数,而 p p p 是一个纯四元数,定义旋转公式为

p ′ = q p q − 1 p^{\prime}=qpq^{-1} p=qpq1

v ′ v^{\prime} v 也是一个纯四元数。这个旋转将空间的点 p p p 旋转为空间的另一个点 p ′ p^{\prime} p。具体计算参考 四元数乘法计算

旋转操作的复合

下式表示将向量/点先旋转 θ 1 \theta _1 θ1再旋转 θ 2 \theta _2 θ2度。
p 21 = ( q 1 q 2 ) p ( q 1 q 2 ) − 1 = q 1 q 2 p q 2 − 1 q 1 − 1 = q 1 ( q 2 p q 2 − 1 ) q 1 − 1 p_{21}=(q_1q_2)p(q_1q_2)^{-1}=q_1q_2pq_2^{-1}q_1^{-1}=q_1(q_2pq_2^{-1})q_1^{-1} p21=(q1q2)p(q1q2)1=q1q2pq21q11=q1(q2pq21)q11

四元数与旋转矩阵

(3分钟说明白)欧拉角、四元数和旋转矩阵之间的关系

关于位姿变换的库已经很成熟我们用不着自己写,但是要注意不同的库对四元数的表达形式不同,例如

在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值