四元数左乘右乘_四元数、欧拉角学习笔记个人理解

一、背景知识:点乘、叉乘

复数的点乘:(ai+bj+ck)•(xi+yj+zk)=-(ax+by+cz)

复数的叉乘:(ai+bj+ck)×(xi+yj+zk)=(ax)i×i+(ay)i×j+(az)i×k+(bx)j×i+(by)j×j+(bz)j×k+(cx)k×i+(cy)k×j+(cz)k×k

ijk三轴定义如上图所示。满足右手螺旋定则:

(这个不是太明白,但是用的时候确实是这么计算的)

二、二维复数表示旋转

二维复数可以表示二维平面上的旋转。

如:定义待旋转的复数p=2+i,定义旋转因子q=cos45+isin45

如下图所示

旋转因子q左乘被旋转复数p表示p逆时针转45°。

三、为什么三维旋转用四维复数表示而不用三维复数

原贴见:

https://blog.csdn.net/u011760195/article/details/85346704

若用实轴x、ij两个虚轴表示旋转因子q和被旋转复数p,那么p绕某个轴转动时,有: x轴绕j轴转动:x×(a+bi) [j不出现] i轴绕x轴转动:i×(a+bj) [x不出现]

此时会出现一个问题,i×j这一项并不能表示实轴x,因为没有规定。i×i=-1是可以的,但i×j不是实数。因此,由于ijx三轴虽然呈相互垂直关系,但无法用叉乘相互表示,不满足计算的需求。因此引入四维复数(四元数),在三维复数的基础上再引入一个虚轴k,而将实轴x=0隐去,此时ijk三轴满足叉乘相互表示(右手螺旋定则)。

因此,用四维复数替代三维复数只是因为实轴x无法通过ij叉乘表示,不满足计算需要而已。将四维复数的实部置零,形式上是四维,当实际上用的时候是三维,实部是不需要的。

另一个角度思考:(如被转复数p=2只含有实部时,这个点既可以说是一维轴上的一个点,也可以说是二维平面内的一个点。低维的点、线、面等都既可以存在于它自身的维度上,又可以存在于任意更高的维度内。)二维中,旋转因子q=a+bi可以将原本在实轴上的一维的点转进二维的平面里。乘以几维的复数就是在几维空间中进行旋转,比如乘以四维复数,那么就是在四维空间中进行旋转。但是旋转并不一定会把实轴上的一维的p转到二维平面上去,比如二维平面上有p=2,旋转因子定义为q=3,那么p、q都可以看做虚部为0的二维复数,此时旋转p’=q×p=6,此时的旋转只是在实轴上,并没有把p转进二维平面上。四元数表示的三维空间中的旋转也是这个道理,p是一个纯四元数,实部为0,是实实在在的三维空间中的一个向量,我们对p乘以另一个四元数q时,实际上是在四维空间中进行的一个旋转,只不过如同二维平面上一样,我们可以通过某种方式让p的旋转只保持在三维空间中,而不至于转到四维空间中去。

另外,引自:

https://blog.csdn.net/linyijiong/article/details/79777399

…所以从始至终,四元数定义的都是四维旋转,而不是三维旋转!……说白了,三维旋转就是四维旋转的一个特例,就像二维旋转是三维旋转的一个特例一样。……qpq-1这种左乘单位四元数,右乘其共轭的表达式……这个运算形式是为了限制其运算结果所在的空间。简单的说,当对一个三维向量进行三维旋转后,我们希望得到的是一个三维向量。……那么这个左乘单位四元数,右乘其共轭的运算保证了结果是一个在三维超平面上中的纯四元数。

四、四元数的书写表示

设四元数表示为:[s,v],其中s为一个实数,是四元数的实部。v是纯虚数,v=xi+yj+zk。则四元数的叉乘计算为:q1×q2=[sa , va]×[sb , vb]=[sa•sb+va•vb , sa•vb+sb•va+va×vb]

定义:

单位四元数:q=[s , v],|q|=1

纯四元数:q=[0 , v],即实部为0,是一个三维空间中的向量

五、四元数表示旋转

原贴见:

https://blog.csdn.net/linyijiong/article/details/79777399

二维空间中,旋转因子q=cosθ+sinθi,由上一部分的四元数书写表示,亦可将二维的旋转因子表示为q=[ cosθ,sinθv],其中v为一维纯虚数,v=i。三维空间中既然要用四维复数表示旋转,那么也可以定义旋转因子为:q=[ cosθ,sinθv],其中v为三维纯虚数,v=ai+bj+cz。(留一个问题:二维平面上q能画出来,三维空间中这个q呢?)

现有被旋转三维复数写成四维的纯四元数形式:p=[0,p],旋转因子q=[ cosθ,sinθv], 则p’=q×p=[ sinθv•p , cosθ•p+ sinθv×p]

①v和p正交时,绕v旋转45°,则p’=[ 0 , cosθ•p+ sinθv×p]

举例:p=[0,2i] q=[√2/2,√2/2 v],为了v和p正交,不妨设v=k,

则p’=[0, √2i+√2k×i]=[0, √2i+√2j],旋转过程如下图,绕k轴旋转45°。

② v和p不正交时,绕v旋转45°,则p’=[ sinθv•p , cosθ•p+ sinθv×p]

举例:p=[0,2i]不变, q=[√2/2,√2/2 v],为了v和p不正交,不妨设v= √2/2 i+√2/2 k

此时计算p’=q×p=[-1, √2i+j]

可以看到,计算结果p’已经不再是纯四元数了,实际上就是p被q转进了四维空间,而在其纯虚数ijk的三维空间内的投影如上图所示,红色的p并没有绕玫红色的v= √2/2 i+√2/2 k旋转45°,而且|p’|≠2,被拉伸变形了。

此时Hamilton提出了一种修正算法,

这样可以算的p’=[0,i+√2j+k],如下图所示,

此时旋转后的|p’|=2,没有被拉伸,但是转过了90°(p-v平面和p’-v平面夹角为90,即p-v平面绕着v逆时针转了90°),角度上变为了两倍,因此进一步修正,令

六、四元数→欧拉角

原贴见:

https://www.cnblogs.com/kljfdsa/p/9093009.html

空间中的三维旋转可视为绕三个基本轴的旋转组合叠加,绕 x,y,z (分别代表i,j,k三个轴)三个基本轴旋转角度分别为 ϕ,θ,ψ ,则三个基本旋转的四元素可表征为:

绕三个基本轴的旋转次序不同,其表征的空间旋转也不同,下面以ZYX的顺序计算(此处根据参考资料撰写,和前面的几块内容在左乘右乘上顺序不同,此处是右乘,就是顺时针转动):

则已知四元数时,反求欧拉角:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python深度学习029:pytorch中常用的模块或方法

PyTorch是一个广泛使用的深度学习库,提供了许多用于构建和训练神经网络的模块和方法。下面是一些PyTorch中常用的模块和方法的简要介绍: PyTorch常用模块和方法 torch 用途:PyTorch的基础模块,提供了多种数学运算功能。常用方法: torch.tensor():创建张量torch.randn():…

struts2 标签不能使用EL 表单式

<c:forEach items"${requestScope.dataitemList}" var"item" varStatus"i" >//使用c:set 标签注意使用Scope属性 不然在request里面取不到值。 <s:select id"type%{#attr.i.index}" name"dataitemType" list"…

【转载】Android设计中的.9.png

转载自&#xff1a;腾讯ISUX (http://isux.tencent.com/android-ui-9-png.html) 在Android的设计过程中&#xff0c;为了适配不同的手机分辨率&#xff0c;图片大多需要拉伸或者压缩&#xff0c;这样就出现了可以任意调整大小的一种图片格式“.9.png”。这种图片是用于Android开…

如果你没空看书,我强烈建议你做这件事!

知乎上有个高赞问题&#xff1a;有哪些书看完后&#xff0c;会让人后悔没早看到&#xff1f;答案各有不一、包罗万象。但有一点&#xff0c;大家达成了共识&#xff1a;要多读书。人生漫长&#xff0c;而我们都不会是一成不变的&#xff0c;真正决定人与人之间的差距的&#xf…

为什么应该在业务层实现管道模式,而不用ASP.NET Core Middleware实现 | 2点原因和实现方式...

前言ASP.NET Core的Middleware&#xff08;中间件&#xff09;就是使用了管道模式&#xff1a;Request&#xff08;请求&#xff09;在管道中传递&#xff0c;依次经过管道中的每一个MiddleWare进行处理。MiddleWare就像一层层的“滤网”&#xff0c;过滤所有的请求和响应。这种…

McAfee:较之中国美国黑客才最令人害怕

据McAfee研究发现美国是最有可能的网络攻击来源&#xff0c;而不是人们印象中广泛认为的中国或者俄罗斯。 McAfee进行了这么一项研究&#xff0c;组织来自各个国家的600位IT安全主管进行讨论&#xff0c;为他们最关注的互联网安全问题定级和归类&#xff0c;大部分报告都是符合…

缓存在哪里_什么是MyBatis缓存技术

MyBatis缓存引言在一个Web项目中&#xff0c;查询数据库中的操作算是一个非常常用的操作&#xff0c;但是有些数据会被经常性的查询&#xff0c;而每一次都去数据库中查询这些重复的数据&#xff0c;会很消耗数据库的资源&#xff0c;同时使得查询效率也很低&#xff0c;而 MyB…

无法打开物理文件 操作系统错误 5:拒绝访问 SQL Sever

今天分离附加数据库&#xff0c;分离出去然后再附加&#xff0c;没有问题。但是一把.mdf文件拷到其它文件夹下就出错&#xff0c;错误如下&#xff1a; 无法打开物理文件 "E:\db\homework.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server&…

WPF开发登录窗口之——窗口布局

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织01—代码如下一、创建项目&#xff0c;命名为LoginWindow&#xff0c;然后创建以下目录结构&#xff1a;二、导入图片三、创建资源字典。一共创建四个&#xff1a;ButtonStyle、WindowStyle、Text…

这个偏僻的小山村竟出了12位博士28位硕士,高产“学霸”背后原因曝光......

全世界只有3.14 % 的人关注了爆炸吧知识考上大学留名祖宗祠堂今早&#xff0c;超模君刷微博的时候&#xff0c;有一则新闻吓得我虎躯一震——一个总共才2000多人小山村&#xff0c;竟然出了12位博士28位硕士。而且考上大学的孩子&#xff0c;他们的名字直接刻进祖宗祠堂。(微博…

Android应用程序消息处理机制(Looper、Handler)分析(5)

ActivityThread类的这个mH成员变量是什么时候创建的呢&#xff1f;我们前面在分析应用程序的消息循环时&#xff0c;说到当应用程序进程启动之后&#xff0c;就会加载ActivityThread类的main函数里面&#xff0c;在这个main函数里面&#xff0c;在通过Looper类进入消息循环之前…

现在银行etl还要做拉链表吗_hive 拉链表 实现全量数据 增量更新

背景&#xff1a;数据表字段有IP&#xff0c;IP省份&#xff0c;IP城市&#xff0c;最新访问时间&#xff0c;假如目前一共有100W的IP我第一次初始化的时候完成初始化表插入&#xff0c;然后每天都有5W左右的IP活跃&#xff0c;然后我要更新这5W个IP的记录到初始化的表&#xf…

牛顿新定律:凭本事得到的,凭什么要还?

后记事后&#xff0c;超模君提出用上帝开过光的真苹果来换回自己的苹果手机&#xff0c;但是惨遭牛顿君拒绝&#xff0c;理由是苹果手机更能激发他的创作灵感……面对这种鬼话&#xff0c;超模君敢怒不敢言。更惨的是&#xff0c;上帝说苹果手机不报销……艾萨克牛顿&#xff0…

NOI导刊模拟2—电话网络 解题报告

题目大意&#xff1a;给出一个图&#xff0c;顶点为1到n和一个值k&#xff0c;求出包含顶点1到顶点n的通路的子图中&#xff0c;第k1大的边最短为多少&#xff1f;&#xff08;若存在一条从1到n路径边数小于等于k&#xff0c;则返回0&#xff0c;若不存在通路&#xff0c;返回-…

好书推荐 -《国富论》-15-09

好书推荐-《国富论》-15-09.md—/Users/zjh/Documents书籍 《国富论》-亚当斯密-陕西师范大学出版社 推荐理由 《国》是一本非常通俗易懂的经济书籍&#xff0c;用简单的语言讲解从个体&#xff0c;到小型市场&#xff0c;再到国家和政府的经济结构和规律。虽然亚当斯密的一些观…

04Prism WPF 入门实战 - Module

1.概要源码及PPT地址&#xff1a;https://github.com/JusterZhu/wemail视频地址&#xff1a;https://www.bilibili.com/video/BV1KQ4y1C7tg?sharesourcecopywebModule&#xff0c;具有特定功能&#xff0c;且独立存在则称为成为模块。下图为Prism体系中的关系结构图。在Prism体…

虚拟机(VMware Workstation)中,把连接网络的模式由“NAT模式”,改成“自动桥接模式”,网速大大的提升...

安装虚拟机&#xff0c;默认情况下&#xff0c;联网的模式是NAT&#xff0c;即跟主机是转发共用网络资源的&#xff0c;这样就非常慢&#xff0c;时常网页都打不开&#xff0c;现把它改成桥接模式&#xff0c;让它独立成为一台物理机&#xff0c;网速有大大的改善&#xff0c;设…

如何保持纯洁男女关系……

1 倒也没毛病▼2 差点以为是狗子&#xff01;&#xff01;▼3 大哥&#xff1a;我裤子没破&#xff01;▼4 女朋友梦到了啥&#xff1f;&#xff1f;▼5 忍不住了&#xff0c;嘻嘻嘻...&#xff08;via.小风车车&#xff09;▼6 亲爸爸&#xff01;&#xff01;▼7 哈哈哈…

【转】一个关于fork()的笔试题,考了好几遍,终于找到答案了

笔试至少3次见到这个题&#xff0c;都是瞎编的&#xff0c;今天群里有人问&#xff0c;然后有人放出了这个地址&#xff1a;http://coolshell.cn/articles/7965.html&#xff0c;让我恍然大明白&#xff0c;豁然好脾气。 感谢这位陈皓同学&#xff08;名字很熟&#xff0c;不记…

android自定义金额输入键盘_Android 自定义输入支付密码的软键盘实例代码

Android 自定义输入支付密码的软键盘有项目需求需要做一个密码锁功能&#xff0c;还有自己的软键盘&#xff0c;类似与支付宝那种&#xff0c;这里是整理的资料&#xff0c;大家可以看下&#xff0c;如有错误&#xff0c;欢迎留言指正需求&#xff1a;要实现类似支付宝的输入支…