关于四元数

一、简单介绍

花了点时间看了下四元数做旋转的部分,目前也只会最最基本的用法,也想记录一下,以供日后参考和修改。

先简单的介绍下复数平面,复数平面可以理解成是复数集存在的一个2D平面。这个平面有两个轴分别是实轴和虚轴,其中横轴表示的就是实轴,而虚轴表示的就是纵轴这样就可以将复数(x,y)给解释为2D向量了。下面这个就可以看成是一个复数平面,由复数p绕着原点旋转θ度得到p'点,我们可以通过p和q(cosθ,sinθ)相乘得到变换后的角度。


什么是四元数?四元数是爱尔兰数学家哈密顿在1843年提出的,哈密顿当时一直在寻找一种能够将复数从2D扩展到3D的方法,最终确定为应该有一个实部和三个虚部。其实四元数就是复数的扩展,什么是复数,复数就是由实数加上虚数单位 i 组成。而四元数就是由实数加上三个虚数单位 i、j、k 组成。四元数一般可表示为a + bk+ cj + di,其中a、b、c 、d是实数。当然我们也可以这么表示[s,v];其中v就也可以用独立的bk、cj、di分量来表示比如说[s,bk+ cj + di]

四元数解决了欧拉旋转的问题。而且四元数的效率比起矩阵运算效率还是较高的。因为矩阵乘法用了16个数字。但其实旋转不需要这么多分量。

在一个四元数中比如格式是这样的 ai+bj+ck+d ,其中a、b、c、d是实数。

i^2=j^2=k^2=-1,

ij=k、ji=-k、jk=i、kj=-i、ki=j、ik=-j  (a^2+b^2+c^2+d^2)的平方根,称为四元数的模。

二、具体运算

比如说我们有一个点,想要通过四元数去做旋转有几点需要注意的地方就是,每一次旋转实际上需要两个四元数的参与,即q和q*,具体的计算公式是这样的,比如我有一个点p,想要变成p'的话,要做的运算就是

p'=qpq^-1

其中q指的就是旋转四元数 q=[cos(θ/2), sin(θ/2)v] 展开来就是 q = [cos(θ/2),sin(θ/2)vx+sin(θ/2)vy+sin(θ/2)vz]

其中这里的v指的是单位向量指的是旋转围绕的轴向量,θ为旋转角。以及q^-1=q*N(q),其中q*表示的就是共轭四元数。其中共轭四元数指的就是比如说我有一个四元数A=[s,v],共轭四元数就是把v这部分虚向量取反。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值