四元数介绍

概述

什么是四元数

四元数就是4个数的组合(q, a, b, c),或者记作

s+ia+jb+kcs,a,b,cR
被称为超复数,它有1个实部和3个虚部,其主要用处是用来实现3维空间中的旋转。

历史

四元数是爱尔兰数学家哈密尔顿1841年发现的,是理论领先实际的一个例子,数学中很多内容都是这样,黎曼集合解释相对论,数论知识用于密码学都是这样,因为复数有一个很好的几何解释,就是二维空间的旋转, i=1 可以看做是二维空间的旋转,数1逆时针旋转90度得到i,再旋转90度得到-1。于是哈密尔顿那个时代很多数学家都希望把复数进行推广,得到一个3维空间中旋转的类似复数的东西,哈密尔顿也在做这样的工作,但是他发现无论如何定义三元组的乘法,都没法实现除法,据说1842年的某一天他来到法国都林布鲁姆桥上突然想到,向三元组增加第4个数就会让除法成为可能

i2=j2=k2=1
ij=ji=k,jk=kj=i,ki=ik=j
现在布鲁姆桥上刻了相关文字纪念这件事。

争论

哈密尔顿深入研究了四元数,他生命最后22年基本就在干两件事,研究四元数和说服别人接受四元数,写了上千页的数。人们问哈密尔顿,四元数的第四维意义是啥,哈密尔顿说是时间,他成了将时空联系起来的第一任,虽然只是在一个数学元素中。所以四元数不被当时的人们接受,因为至少在当时,这个东西基本没有实用价值,连当时连最顶级的科学家都说这是“不祥之物“,比如汤普森、麦克斯韦。直到20世纪人们才完全接受了四元数,理解了他的物理意义就是三维空间的旋转,也是表示三维空间物体自转的最好方式,用于三维图形学,还有质子、中字、电子这些微小但愿的研究。比如unity中物体的旋转用的就是四元数,虽然也可以用欧拉角表示旋转。

代数

四元数不能被接受的一个原因是其计算不满足交换律 abba ,以前的人觉得这应该是理所当然的,当然现在的数学家已经不这么认为了,不满足啥都行,只要值得研究,顶多就是多增加个数学词汇。四元数被理所当然推广到更多元数,8元数,16元数,维数增加一倍就减少一些性质,8元数不满足结合律,16元数则根本不可能有除法。再推广就是更普遍的代数结构:环:加法减法乘法,群:加减法或乘除法。

欧拉角旋转

欧拉角

构件在三维空间中的有限转动,可依次用三个相对转角表示,即进动角、章动角和自旋角,这三个转角统称为欧拉角。——引自百度百科
莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向。对于任何一个参考系,一个刚体的取向,是依照顺序,从这参考系,做三个欧拉角的旋转而设定的。所以,刚体的取向可以用三个基本旋转矩阵来决定。换句话说,任何关于刚体旋转的旋转矩阵是由三个基本旋转矩阵复合而成的。——引自wikipedia

旋转矩阵

绕3个轴旋转一定角度的矩阵为

cosβsinβ0100cosβ0sinβsinβcosβ00cosβsinβ0000010sinβcosβsinβ1cosβ

绕任意轴旋转

取一个轴,比如x轴为基准,假设旋转轴为 nˆ=ai+bj+ck ,假设 nˆ 表示为球坐标,水平角度为 ϕ ,垂直角度为 θ ,则旋转矩阵为

[x,y,z]=Rϕ,yRθ,zRα,xRθ,z[x,y,z]Rϕ,y

上面的R都是上面讨论过的旋转矩阵
如果轴不经过原点,可以先平移到原点,用上面方式旋转完成,然后再平移回去

万向节死锁

用欧拉角表示旋转的问题就是万向节死锁,死锁其实没有锁死,这个问题的关键是在”死锁“发生的情况下,用欧拉角表示的旋转没法在三维空间平滑过渡,在很多情况下,可以通过巧妙选择旋转顺序避免万向节死锁的发生,但是没有能够完全解决这个问题的办法。四元数则完全没有这个问题

四元数

四元数代数

四元数相关内容研究的就是四元数作为一个代数结构的各种运算,包括各种表示和运算操作,最基本的内容就是:
表示
q=s+xi+yj+zks,x,y,zR,i2=j2=k2=1
q=[s+v]sR,vR3
加减运算
ij=k,jk=i,ki=j,ijk=1 ,满足结合律
+ 就是各个元素分开加减
共轭
q=[s,v],q=[s,v]

|z|=s2+v2
标准四元数
模为1的四元数
乘法
qaqb=[sa,a][sb,b]=[sasbab,Sab+sba+a×b]

q1=q|q|2

旋转

令q为标准四元数 q=[s,v],|s|2+|v|2=1 ,可以表示为 q=cosθ+sinθv 。令 p=[0,p] ,对点 p 绕轴v旋转角度 θ 可以用下式实现

qpq1

剩下的内容就是一些计算相关东西了,很多资料可以查到四元数的计算方法

参考资料

Quaternions for computer graphics by John Vince
介绍四元数很好的书
http://www.cnitblog.com/luckydmz/archive/2010/09/07/68674.html
这个网页里面的视频很好地解释了万向节死锁

你可能感兴趣的:(数学,四元数)