关于四元数的一些理解第二部分
四元数——精选推荐

四元数复数:我们把形如a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位, i*i= -1;复变函数:四元数:正如复数是有⼀个实部和⼀个虚部组成的,那我们将⼀个虚部换成三个虚部,即两两相交{i, j, k}。
其中n为三维的单位向量,i²=j²=k²=i·j·k=-1。
这便是四元数的常规表达形式,不过单位四元数是有⼀⼤堆的约束的,并不是所有四维向量都是四元数。
如何去理解四元数:四元数(以后不特指四元数=单位四元数)是四维空间中⼀个超球上⾯的点,满⾜w²+x²+y²+z²=1;⽽纯四元数是四维空间在w=0时的⼀个⼦空间的点,形式为{0, q},特别注意的是纯四元数与四元数是不同的概念。
四元数是复数虚部扩展的结果,复数的虚部为1个,⽽四元数虚部有3个,且两两互相正交,其中实部是cosθ/2,⽽虚部为⼀个単位轴乘以sinθ/2。
四元数⾃由度并没有四个维度,由于存在w²+x²+y²+z²=1这个约束,它的⾃由度其实只有3,且每个四元数可以对应⼀个特征向量,即n。
但请记住四元数并不是与特征向量⼀⼀对应的,后⽂会有说。
如何利⽤低维信息去理解⾼维信息?例⼦:三维的球⽤代数表⽰为x²+y²+z²=1,虽然球上⾯的点是由x,y,z三个参数来确定,但实际上我们只需要两个。
假设取x和z表⽰,其中y可以通过x和z进⾏求解。
那么,我们将y轴信息给隐去,只看投影平⾯,如下图所⽰。
这张图的意思是,整个球在XOZ平⾯上投影是⼀个圆,当球⾯⼀点投影在圆上时,y=0;投影的位置位于圆内时,则分别两种情况,y>0处于北半球,y<0处于南半球。
所以我们仅通过投影后的圆即可还原出整个球体。
推⼴到四维,w²+x²+y²+z²=1中取x、y和z来表⽰超球。
四元数简介——精选推荐

四元数简介在我之前,⽹上各个博客各⼤⽹站都有很多关于四元数的介绍与讲解!但我总结了⼀下接三个字:看不懂!说实话!这真的是实话!举个例⼦:1.旋转,应该是三种坐标变换——缩放、旋转和平移,中最复杂的⼀种了。
⼤家应该都听过,有⼀种旋转的表⽰⽅法叫四元数。
按照我们的习惯,我们更加熟悉的是另外两种旋转的表⽰⽅法——矩阵旋转和欧拉旋转。
矩阵旋转使⽤了⼀个4*4⼤⼩的矩阵来表⽰绕任意轴旋转的变换矩阵,⽽欧拉选择则是按照⼀定的坐标轴顺序(例如先x、再y、最后z)、每个轴旋转⼀定⾓度来变换坐标或向量,它实际上是⼀系列坐标轴旋转的组合。
那么,四元数⼜是什么呢?简单来说,四元数本质上是⼀种⾼阶复数(听不懂了吧。
),是⼀个四维空间,相对于复数的⼆维空间。
我们⾼中的时候应该都学过复数,⼀个复数由实部和虚部组成,即x = a + bi,i是虚数单位,如果你还记得的话应该知道i^2 = -1。
⽽四元数其实和我们学到的这种是类似的,不同的是,它的虚部包含了三个虚数单位,i、j、k,即⼀个四元数可以表⽰为x = a + bi + cj + dk。
那么,它和旋转为什么会有关系呢?怎么样,看得懂吗?反正⼩编是被现实胖揍⼀顿!那么,今天我们要怎么来介绍这个四元数呢?我们来最简单暴⼒的!重新定义⼀下这个怪物四元数!Quaternion(四元数)⽤于计算和表⽰Unity旋转。
它们计算紧凑⾼效,不受万向节死锁的困扰,并且可以很⽅便快速地进⾏球⾯插值。
Unity内部使⽤四元数来表⽰所有的旋转。
注意重点:1,不受万向节死锁的困扰。
2,⽅便快速地进⾏球⾯插值。
3, Unity内部使⽤四元数来表⽰所有的旋转。
好了,现在你得重定义应该是这样的:定义:Quaternion(四元数)⽤于计算和表⽰Unity旋转。
就像当初数学⽼师告诉你∏(pai)⽤来表⽰圆周率⼀样!你有探究过∏(pai)是怎么算出来的吗?但是你们是不是都知道怎么利⽤圆周率计算圆的⾯积呢?类似的,对于初学者的我们,最重要的是现在要学会和记住四元数的使⽤⽅法。
形象解说四元数

形象解说四元数By daode1212 2016-03-16前言:四元数(Quaternions)是由爱尔兰数学家哈密顿(William Rowan Hamilton,1805-1865)在1843年发明的数学概念。
复数、向量、矩阵都是数学中的基本要素,就如同编程中的数组、对象、集合那样。
四元数是一种超复数,是复数与三维向量的复合体。
四元数也有加法、减法、乘法、但是四元数的乘法不符合交换律(commutative law),即a*b <> b*a,而且,还有转置、规范化、共轭三种运算。
由于它在描述三维旋转、姿态方面的一些特有优点,所以在飞行器(飞机,火箭,导弹等),机器人姿态的控制中常用到。
数学手册中在代数结构的“群-环-域”中稍有点介绍,它属于不可交换的除环,称哈密顿四元数体。
以下是一些四元数运算的效果图:四元数理论创立人:William Rowan Hamilton,1805-1865一,四元数的几种表示形式:OpenTK中,为建立四元数提供了多种方式:public Quaternion(float x, float y, float z, float w);public Quaternion(OpenTK.Vector3v, float w);例如用Quaternion(float x, float y, float z, float w):OpenTK.Quaternion q = new OpenTK.Quaternion(0.51f, -0.71f, 0.31f, 0.7071f);1, 四元数建构方式一:i^2=j^2=k^2=-1ij=-ji=k,jk=-kj=i,ki=-ik=jq=w+ix+jy+kz,i,j,k分别对应轴向量X(1,0,0),Y(0,1,0),Z(0,0,1)2, 四元数建构方式二:转动角之半+轴向量的方向余弦:3, 四元数建构方式三:转动角之半+单位球面上的点:二,四元数的模如q是四元数,OpenTK中有:1, q.Length;返回值是:2, q.LengthSquared;返回值是:,与点积(内积)q·q是一致的。
四元数

二.四元数与姿态阵之间的关系
3.由于 || Q || q0 2 q12 q2 2 q3 2 =1,所以:
q0 2 q12 q2 2 q3 2 R Cb 2(q1q2 q0 q3 ) 2(q q q q ) 1 3 0 2
2(q1q2 q0 q3 ) q0 q1 q2 q3 2(q2 q3 q0 q1 )
构造四元数:
q0 cos
2
2 q2 m sin 2 q3 n sin 2
q1 l sin
Q q0 q1i0 q2 j0 q3 k0 cos cos
2
(li0 mj0 bk0 ) sin
2
2
u R sin
2
二.四元数与姿态阵之间的关系
记:
rx ' r 'R r ' y rz '
rx rR r y rz
l uR m n
二.四元数与姿态阵之间的关系
0 n m rx r (u r ) R n 0 l y 0 m l rz
q0 2 q12 q2 2 q3 2 CbR 2(q1q2 q0 q3 ) 2(q q q q ) 1 3 0 2 2(q1q2 q0 q3 ) q0 q1 q2 q3 2(q2 q3 q0 q1 )
2 2 2 2
2(q2 q3 q0 q1 ) 2 2 2 2 q0 q1 q2 q3 2(q1q3 q0 q2 )
二.四元数与姿态阵之间的关系
四元数

定义两个四元数:
其中表示矢量 ;而表示矢量。
跟复数、向量和矩阵一样,两个四元数之和需要将不同的元素加起来。 加法遵循实数和复数的所有交换律和结合律。
威廉·卢云·哈密顿
明确地说,四元数是复数的不可交换延伸。如把四元数的集合考虑成多维实数空间的话,四元数就代表着一 个四维空间,相对于复数为二维空间。
四元数是除环(除法环)的一个例子。除了没有乘法的交换律外,除法环与域是相类的。特别地,乘法的结 合律仍旧存在、非零元素仍有逆元素。
四元数形成一个在实数上的四维结合代数(事实上是除法代数),并包括复数,但不与复数组成结合代数。 四元数(以及实数和复数)都只是有限维的实数结合除法代数。
不只如此,哈密顿还创造了向量的内外积。他亦把四元数描绘成一个有序的四重实数:一个纯量和向量的组 合。若两个纯量部为零的四元数相乘,所得的纯量部便是原来的两个向量部的纯量积的负值,而向量部则为向量 积的值,但它们的重要性仍有待发掘。
哈密顿之后继续推广四元数,并出了几本书。最后一本《四元数的原理》(Elements of Quaternions)于 他死后不久出版,长达八百多页。
非奇异表达(和例如欧拉角之类的表示相比)
比矩阵更紧凑(更快速)
单位四元数的对可以表示四维空间中的一个转动。
所有单位四元数的集合组成一个三维球和在乘法下的一个群(一个李群)。是行列式为1的实正交3×3正交 矩阵的群的双面覆盖,因为每两个单位四元数通过上述关系对应于一个转动。群和同构,是行列式为1的复酉 2×2矩阵的群。令为形为的四元数的集合,其中或者都是整数或者都是分子为奇数分母为2的有理数。集合是一 个环,并且是一个格。该环中存在 24个四元数,而它们是施莱夫利符号为的正二十四胞体的顶点。
四元数解析

四元数解析一、四元数是啥呢?嘿呀,四元数这个东西啊,可有点小神秘又有点小酷呢。
它就像是数学这个大乐园里一个超级独特的小天地。
四元数啊,其实是一种复数的扩展啦。
就好像我们本来有个小房子,然后突然给它加盖了好几层,变得超级酷炫。
二、四元数的构成它是由一个实数部分和三个虚数部分组成的哦。
这就好像是一个小团队,有一个队长(实数部分),还有三个特别的小伙伴(虚数部分)。
这三个虚数部分还都有着自己独特的小标识,它们可不是随便凑在一起的,而是有着非常奇妙的组合规则呢。
三、四元数的历史在数学的发展长河里,四元数的出现也是一段很有趣的故事。
有好多聪明的数学家们不断探索,就像探险家在未知的大陆上寻找宝藏一样。
经过很多人的努力,四元数才逐渐被发现和完善。
它在数学发展中可是有着很重要的地位,就像一颗璀璨的星星照亮了数学天空的一角。
四、四元数的用途1. 在计算机图形学里它可厉害了呢。
比如说在3D游戏的制作中,要让那些虚拟的角色动起来,转圈圈,四元数就能很好地来处理旋转的问题。
就像一个超级小助手,默默地在背后让游戏画面变得更加流畅和逼真。
2. 在物理学领域它也有自己的小舞台。
像是在研究一些物体的旋转运动的时候,四元数就可以简洁又高效地描述物体的状态。
这可比其他的方法有时候要方便很多呢。
五、四元数的计算它的计算规则有点像我们玩一种特别的数学游戏。
比如说加法、乘法之类的运算,都有着自己独特的小算法。
这些算法虽然刚开始学的时候可能有点绕,但只要你耐心去探索,就会发现其中的乐趣。
就像解开一道道有趣的小谜题一样。
六、四元数和其他数学概念的关系四元数和复数、向量这些数学概念都有着千丝万缕的联系。
它就像是一个大家庭里的一员,和其他成员之间有着相互的影响和作用。
复数可以说是四元数的小前辈,而四元数又对向量的发展有着一定的启发呢。
四元数详解

四元数详解四元数是一种数学概念,它在多个领域都有广泛的应用。
在计算机图形学中,四元数用于表示旋转变换。
下面我将以人类的视角来介绍四元数的定义、性质和应用。
四元数是一种扩展了复数的数学结构。
它由一个实部和三个虚部组成,可以写成q = a + bi + cj + dk的形式,其中a、b、c、d分别是实数,i、j、k是虚数单位。
与复数一样,四元数也有加法和乘法运算。
我们来看四元数的定义。
四元数的实部a对应于实数部分,而虚部bi + cj + dk对应于虚数部分。
四元数的加法定义很简单,就是将实部和虚部分别相加。
而乘法则稍微复杂一些,需要使用四元数的乘法规则:i² = j² = k² = ijk = -1。
通过这个规则,我们可以计算出两个四元数的乘积。
接下来,我们来探讨一下四元数的性质。
首先,四元数的加法满足交换律和结合律。
然而,四元数的乘法不满足交换律,即ab ≠ ba。
此外,四元数的乘法满足结合律,但不满足分配律。
这些性质使得四元数的运算有一些独特的特点。
四元数在计算机图形学中有广泛的应用。
由于四元数可以用于表示旋转变换,因此在三维游戏和动画中经常被用到。
与传统的欧拉角相比,四元数具有很多优点,例如不存在万向锁问题和旋转插值更加平滑。
因此,使用四元数可以提高计算机图形学的效率和质量。
除了计算机图形学,四元数还在其他领域有着重要的应用。
例如,在航空航天领域,四元数可以用于表示飞行器的姿态和旋转控制。
在物理学中,四元数可以用于描述粒子的自旋。
此外,四元数还可以用于解决某些数学问题,例如解四次方程和计算曲线的弯曲度。
四元数是一种重要的数学概念,具有广泛的应用。
它在计算机图形学、航空航天和物理学等领域都发挥着重要作用。
通过深入理解四元数的定义、性质和应用,我们能够更好地应用它们解决实际问题,推动科学技术的发展。
四元数 有限域-概述说明以及解释

四元数有限域-概述说明以及解释1.引言1.1 概述四元数是一种数学结构,由四个实数构成,可以表示三维空间中的旋转和变换。
它在计算机图形学、机器人学和物理学等领域有着广泛的应用。
在传统的三维空间表示中,我们通常使用欧拉角或旋转矩阵来描述物体的旋转。
然而,这些表示方法存在一些缺点,比如欧拉角存在万向锁问题,旋转矩阵存在运算复杂和数值稳定性差的问题。
而四元数作为一种更加高效和稳定的表示方法,逐渐被应用到各个领域中。
四元数的优势在于其具备旋转和线性插值的可逆性、运算速度快、占用的内存空间小等特点。
同时,四元数的运算也相对简单,只需要进行四个实数的乘法和加法运算即可得到旋转的结果。
然而,四元数也存在一些局限性。
首先,四元数的概念对于一般人来说比较抽象和难以理解,需要一定的数学基础才能深入理解其原理。
其次,绕不同轴的旋转可以用不同的四元数表示,存在多个等效的表示方法,导致旋转的唯一性问题。
此外,四元数的运算并不能直接映射到物理世界的旋转运动,需要进行适当的转换。
未来,随着计算机图形学和机器人学等领域的发展,对于更加高效和准确的旋转表示方法的需求将不断增加。
四元数作为一种优秀的表示方法,其研究和应用将会进一步深入和广泛。
同时,结合其他数学理论和技术手段,继续改进和扩展四元数的应用范围也是未来的发展方向。
1.2文章结构文章结构:本文将分为引言、正文和结论三个部分来介绍四元数和有限域的相关内容。
- 引言部分将对本文的主题进行简要的概述,介绍四元数和有限域的基本概念和背景,并说明本文的目的和意义。
- 正文部分将分为两个子节:四元数的定义和性质、四元数在计算机图形学中的应用。
- 在四元数的定义和性质的部分,将介绍四元数的基本定义,包括四元数的表示形式和运算规则,以及四元数的基本性质,如共轭、模长等。
同时,将介绍四元数的加法、减法、乘法和除法运算规则,以及四元数的单位元、逆元等概念。
- 在四元数在计算机图形学中的应用的部分,将重点介绍四元数在旋转表示和插值、刚体变换、相机视角变换等方面的重要应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
距离上一部分关于四元数的理解写完已经有段不短的日子里,这次终于理解了所谓θ
2
的真谛。
这里我就一一道来。
首先经常看到网络中的关于四元数与旋转的关系中看到这样的描
述;q=(cosθ
2,℮n sinθ
2
)其中℮n为旋转轴的单位向量θ表示旋转的角度;有的甚至在后面描述
为“四元数表达式的形式跟其旋转的角度θ以及旋转轴℮n有一定的关系”。
这种模糊不清的关系令人存疑。
笔者认为这只是大神们在解读解算程序语言时对于姿态解算中部分程序的误读造成的。
正如笔者在上一部分中提到的:
若存在两个向量A,B其中B为单位向量且A,B的夹角为θ则有:B=−r cosθ+
r℮n sinθ A−1=−1
r
r cosθ+r℮n sinθ−1−A∗=cosθ+℮n sinθ(−A∗)其中(−A∗)表的是一个方向与A相同的单位向量,而式子前段的cosθ+℮n sinθ部分,℮n很显然表示一个垂直于A,B的向量,θ角表示A,B两个向量之间的夹角。
其中℮n确实表示旋转轴且这个向量是一个单位向量,而θ的的确确是旋转的角度,这一点也能从推导过程中看出端倪。
那么问题究竟出在哪里呢?其实问题就在相乘的顺序上,通过阅读网上的博文我们注意到一般的文章中对于四元数表达的方式是这样的:
存在一个单位四元数q=(cosθ
2,℮n sinθ
2
);P是一个没有实部的单位四元数,表述为(0,v)(P的
模为1);p′=qpq−1;好了,到了这里细心地读者已经发现一点问题了。
虽然这里,向量的表示换成了没有实部的四元数(例如p,p′)。
但是在这里我们发现,在变换向量的时候不但用q左乘向量p同时也用q−1右乘。
到这里笔者又要啰嗦些关于四元数的性质(尽可能详细的解读)。
如果您对这一部分有所了解同时时间有限的话可以直接略过!虽然笔者的上一篇文档提到了四元数的一部分内容,不过那只是笔者对于其本质在空间几何中的一些猜想。
在这里我就重新梳理一遍关于四元数的前世今生(大雾)。
在正式说明之前首先我希望明确一点,不论是用空间向量的方式表述还是用复数表达,他们都表达的是同一事物。
同时复数空间与几何空间也是密不可分并且能够相互联系的。
四元数通常表述为:
a+bi+cj+dk(a,b,c,d∈R)
i2=j2=k2=−1;
ij=−ji=k; jk=−kj=i; ki=−ik=j
以上是四元数的基本规则(之前已经讲解过辣);下面将提到四元数的一些运算法则
定义两个四元数:
q=a+u=a+bi+cj+dk;
p=t+v=t+xi+yj+zk;
其中u表示矢量(b,c,d); v表示矢量(x,y,z)
四元数加法p+q:
p+q=a+t+u+v+a+t+b+x i+c+y j+d+z k;
四元数乘法pq:
pq=at−v∙u+av+tu+v×u;
pq=at−bx−cy−dz+ax+bt+cz−dy i+ay−bz+ct+dx j+(az+dt−cx+by)k
这里应该注意四元数乘法的不可交换性即pq≠qp;
四元数点积p∙q:
p∙q=at+u⋅v=at+bx+cy+dz
p∙q=
p∗q+q∗p
值得注意的是上式的形式有助于分离四元数中的某个元,例如p∙i=x; 四元数的外积:
Outer p,q=p∗q−q∗p
2
Outer p,q=tu−av−v×u;
Outer p,q=tb−ax+cz−dy i+tc−ay−bz+dx j+(td−az−xc+by)k;
好吧我承认这段是百度上抄来的,正确性不明有兴趣的小伙伴可以自己验证
四元数的叉积p×q:
p×q=
pq−qp
p×q=v×u;
四元数转置p−1:
四元数的转置用p−1p=1的方式被定义
p−1=
p∗p⋅p
通过这个定义方式,我们可以知道很多有趣的结论。
例如说我们可以得到p与p∗的模长的关系以及其向量部
分方向的关系。
首先我们看到p−1=p∗
p⋅p
通过之前的学习我们知道p⋅p的结果是一个标量p∙p=a2+b2+
c2+d2=p2;则就有式子p−1=p∗
p 2
成立,通过这一式我们不难理解p−1和p∗之间的关系就是其模长的不
同,综合之前提到的p∙q=p∗q+q∗p
2
我们可以发现p∗p=p∙p说明t∗t−v∗∙v+t∗v+tv∗+v∗×v=tt+
v⋅v若四元数的实部为零且由于式子的值应为一个标量则可以将等式简化为−v∗∙v=v⋅v的形式;分析化简的等式我们不难得出结论;若四元数的实部为零则p∗表示的向量与p表示的向量模长相等方向相反。
再结
合p−1=p∗
p 不难看出在实部为零的前提下p−1表示的向量是一个方向与p相反且模长只有p的1
p
的向量。
四元数的模p(双竖杠表示是为了区别绝对值):
p=p∙p= a2+b2+c2+d2
好了有了上面这些关于四元数的基本性质的数学表达我们就可以进行深入一点的讨论了。
到这里不知道各位看官有没有笔者的这些疑惑。
1.既然四元数的乘法不满足交换律,那么四元数在表示旋转时左乘和右乘又有什么不同呢?
2.四元数和他的逆在旋转中表示的是什么关系?
猜想:1.表示旋转的四元数是否同它的逆是方向相反的同一种旋转,即q pp−1=q是否成立?
2.左乘和右乘是否只是方向相反的同种旋转的,即pqp=q是否成立?
对于第一种猜想的结果是不言而喻的,因为有定义式p−1p=1存在,并且通过之前的性质可
以知道有p−1p=p∗
p2p=p∙p
p2
=p p∗
p2
=pp−1;因此qpp−1=p−1pq=q;同时成立。
由此可知
四元数的逆在表示旋转时就是方向相反的同一种旋转。
至于第二点猜想证明起来要稍微多花点力气了,首先我们设表示向量的四元数q=(0,v);表
示旋转的四元数p=(cosθ,℮0sinθ),同时规定℮0⊥v,并令℮1与℮0, v同时垂直,用表达式表示为℮0v=℮1,℮1℮0=v;
pqp=cosθ+℮0sinθ0,v p
cosθ+℮0sinθ0,v p=(v cosθ+℮0v sinθ)p
(v cosθ+℮0v sinθ)p=(v cosθ+℮1sinθ)cosθ+℮0sinθ
=v cos2θ+v℮0cosθsinθ+℮1sinθcosθ+℮1℮0sin2θ
=v cos2θ−℮1cosθsinθ+℮1sinθcosθ+v sin2θ
=v cos2θ+sin2θ
=0,v
)到了这里我们已经总结出两个规律了,即
可以很容易的吧qpq−1转化成各种形式比如说qpq−1=qqp=pq−1q−1再通过其表示的旋转
含义去理解很容易明白所谓q=(cosθ
2,℮n sinθ
2
)不过是将一次旋转拆成两个相同的部分,用
不同的表达形式(左乘和右乘)施加在同一个向量上达到旋转的目的。
(以上推导只代表笔者的个人意见如果有偏颇之处还望各位看官指出E-mail:gaoqi2357@。
以上推导过程并不涉及严格的数学推导,只为表达笔者个人意见。
特此声明)。