神奇的四元数

2024-03-16 05:20
文章标签 神奇 四元

本文主要是介绍神奇的四元数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

神奇的四元数

来源视频: 四元数的可视化
顺便, 强烈推荐3b1b的视频

我们现在所熟知的向量,点乘、叉乘等,在四元数被发现时并不存在,至少没有标准化的形式。在当时,四元数被其他数学家认为是晦涩难懂的,他们认为没必要用这么复杂的东西来描述三维的变换。甚至据说,《爱丽丝梦游仙境》中的“疯帽子”就是隐射四元数的角色。
[图片]
首先,我们之前就认识了虚数。复数是实数的二维延伸,四元数则是实数的思维延伸。
在这里插入图片描述

四元数则是有3个虚数轴,而第四个数,垂直于全部3个虚数轴。
在这里插入图片描述

四元数所描述的对四维空间的特殊作用与许多有着两种状态的量子系统有着紧密的联系。例如电子的旋转或者是光子的偏振。
在这里插入图片描述

四维右手法则:一旦理解了,就会对四元数乘法有一种自然而优美的直觉。
在这里插入图片描述
在这里插入图片描述

第一章 “直线人小莱”

在这里插入图片描述

小莱是一个直线人,它只知道实数的加减乘除,现在我们要向小莱介绍复数。在复平面上,横着的为实轴,竖着的为虚轴。
在这里插入图片描述

当复数相乘时,例如 z ⋅ w z·w zw,把 z z z想象成一个作用在 w w w上的函数,它在对 w w w做一些拉伸变换。
想象一个图钉把圆点固定住,然后用另一只手把1点拽到z点,因为0乘任何树都等于0,而1乘任何数都得到它本身,在二维世界中,有且只有一种拉伸旋转作用能做到这点。
在这里插入图片描述

在拉伸的同时,坐标系也被你拉伸。
在这里插入图片描述

在复平面里,一个复数乘上单位圆上的向量,就是纯旋转。例如,我们拿i乘上任意复数w,在复平面上就是把这个复数w逆时针旋转90度。如果你将w乘i四次,它会等于它本身(这点在数学公式上也显而易见),而此时w其实已经逆时针转了一圈了。
[图片]

第二章 “纸片人小菲”

[图片]

纸片人小菲只能理解二维的世界,想象向小菲解释一个球体的旋转。
在复数的基础上,设定一个新的虚数j,j轴垂直于复平面。并且为了待会更好的理解四元数,我们让i轴和j轴分别坐落在x轴和y轴上。而实数轴则指向垂直于他们的位置。
[图片]

三元数中的单位球
[图片]

用“球极投影”将这个球投影到由i轴和j轴组成的水平面上。

球极投影:从(-1,0,0)发射出无数条直线,这些线经过球面,在i-j面上所映射的所有的点。

[图片]

[图片]

可想而知,单位球和i-j面相交的单位圆,是“小菲”能见到我们单位球上仅有的真实的那部分。
[图片]

那么我们旋转这个单位球,在“小菲”眼里会是什么样的呢?
[图片]

在上图中,黄圈代表着赤道投影的位置。
[图片]

我们眼里立着的这个单位圆——越过1、i、-1、-i的单位圆,在“小菲”眼里就映射成了横轴。但这并不是i轴,这只是距离为1的点的投影,也就是说实际上是“间断的”。i轴上的大部分点,像0,2i,3i等则小菲完全见不到。
类似的,我们可以把j轴也映射出来。
[图片]

[图片]

那么,通过这种映射,在单位球上的任何点的旋转都可以被映射在i-j平面上了。
第三章 你,“三维人”
[图片]

现在虚数又加了一个维度——k。i,j,k这三个虚数都和实数轴垂直,而且他们也互相垂直。
[图片]

四元数可以由四个实数表示,并且它存在于四维空间中。
[图片]

通过类比,思考一下四维超球……我们需要把四维超球“球极投影”到三维空间中来。
[图片]

当我们把实部锁死为0,代表着四维超球投影到我们的空间中是不变的那部分。如同单位球相对于i-j平面的那样,这就是不变的部分。
[图片]

所有的四元数都有同样的模——1
[图片]

正如我们在小菲的世界里投影出i轴,我们在这个世界里,看见i轴,要明白它其实是一个圆。同样的,在我们看不见的四维超球上,有一个单位三维球,通过1,i,j,-1,-i,-j,而整个球被投影到通过1,i,j,-i,-j以及无穷远处的-1的平面上,也就是我们说的x-y平面。
[图片]

一个四位数左乘另一个四位数,也可以理解为一个函数。
[图片]

之前的“旋转复数”在我们的眼里就是这个样子转了一圈。(只不过它到达过无穷远的地方,我们看不见这一段罢了。毕竟,我们是三维生物。)
[图片]

四维空间右手定则
[图片]

当你知道一个四元数对1,i,j,k做了什么,你就能理解这个四元数对其他四元数做了什么。
[图片]

考虑同样的一个拖拽的过程,并且坐标系跟着一起动:
[图片]

这篇关于神奇的四元数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/814414

相关文章

Kafka拦截器的神奇操作方法

《Kafka拦截器的神奇操作方法》Kafka拦截器是一种强大的机制,用于在消息发送和接收过程中插入自定义逻辑,它们可以用于消息定制、日志记录、监控、业务逻辑集成、性能统计和异常处理等,本文介绍Kafk... 目录前言拦截器的基本概念Kafka 拦截器的定义和基本原理:拦截器是 Kafka 消息传递的不可或缺

Redis 管道的神奇力量

今天我们要来探索一个 Redis 中非常强大且实用的特性——管道(Pipeline)。如果你想让你的 Redis 操作更加高效,那么这篇文章绝对值得一读。 一、Redis 管道是什么 Redis 管道是一种在客户端和服务器之间批量执行命令的技术。它允许客户端将多个命令一次性发送到服务器,而不是逐个发送并等待每个命令的响应。服务器会按照顺序执行这些命令,并将所有命令的响应一次性返回给客户端。

入门篇:神奇的Annotation

涅槃1992 关注 2016.12.25 23:41* 字数 4964 阅读 1059评论 3喜欢 29 前面写了Android 开发:由模块化到组件化(一),很多小伙伴来问怎么没有Demo啊?之所以没有立刻放demo的原因在还有许多技术点没说完. 今天我们就来细细评味Java当中Annotation,也就是我们常说的注解. 本文按照以下顺序进行:元数据->元注解->运行时注解->编译时

一个人就能干一个团队剪辑工作?云微客就是这么神奇

你知道拍摄、剪辑一条视频需要花费多长时间吗?半个小时?还是一个小时呢?如果我想一天发布上百条视频,你觉得可能吗?很显然,仅凭个人是很难办到的,那么就需要借助工具,而云微客AI批量剪辑系统正好可以解决这个难题。 在当下这个短视频风靡的时代,不管是企业还是个人创作者们都需要借助各种工具和系统来提升创作内容的生产效率和传播效果。而云微客AI批量剪辑系统凭借着批量剪辑的功能,为创作者带来了很大的

Unity中使用四元数限制旋转

前言         在处理旋转相关的内容的时候,如果使用unity提供的欧拉角描述旋转,会出现一下两种问题 同一旋转的表示不唯一万向节死锁         绕轴90°旋转与绕轴90°+360°旋转的表现是一致的         当某个特定轴达到某个特殊值时,绕一个轴旋转可能会覆盖另一个轴的旋转从而失去一维自由度Unity中x轴达到90度时,会产生万向节死锁。x轴为90度,此时调节y或z轴

神奇的android广播

最近用了android的广播,个人感觉非常好用: 首先在你要接收的地方注册一个: context.registerReceiver(myReceiver, new IntentFilter("com.shic.action.d")); 然后就是定义注册的这个,在接收到广播后执行的操作: BroadcastReceiver myReceiver = new BroadcastRecei

神奇的babel

2015年,ECMA推出es6,在es5的基础上添加了各种人性化开发的新特性,详见es2015 让人头疼的是当下主流浏览器的JS引擎并不识别es6语法,所以我们需要将es6的语法翻译成es5的形式再提交给js引擎执行。 那有没有好的工具来实现两种标准之间的转换呢,有,babel。 好,既然用到babel,那么第一步肯定要在项目中安装babel。安装的方法可参照点击打开链接 npm i

探索PDF的奥秘:pdfrw库的神奇之旅

文章目录 探索PDF的奥秘:pdfrw库的神奇之旅背景:为何选择pdfrw?pdfrw是什么?如何安装pdfrw?五个简单的库函数使用方法场景应用:pdfrw在实际工作中的应用常见问题与解决方案总结 探索PDF的奥秘:pdfrw库的神奇之旅 背景:为何选择pdfrw? 在数据处理的世界中,PDF文件因其格式的稳定性和广泛兼容性而备受青睐。然而,处理PDF文件往往需要专

【Linux】Linux命令行大冒险:寻找、搜索与压缩的神奇之旅

欢迎来到 CILMY23 的博客 🏆本篇主题为:Linux命令行大冒险:寻找、搜索与压缩的神奇之旅 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C++ | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题 | 代码训练营 🏆感谢观看,支持的可以给个一键三连,点赞收藏+评论。如果你觉得有帮助,还可以点点关注 前言: 我们也

探索Python数据持久化的秘密:ZODB库的神奇之旅

文章目录 探索Python数据持久化的秘密:ZODB库的神奇之旅背景ZODB是什么?如何安装ZODB?简单库函数使用方法场景应用常见Bug及解决方案总结 探索Python数据持久化的秘密:ZODB库的神奇之旅 背景 在Python的广阔世界中,数据持久化是一个不可或缺的需求。无论是为了保存应用程序的状态,还是为了在多个会话之间共享数据,我们都需要一种可靠的方法来存储和