四元数学习总结(2)

news2024/9/25 13:23:02

导语:相比矩阵,用四元数处理3D旋转的优势是毋庸置疑的,但由于概念复杂,难于理解,一直令我摸不着头脑。最近学习更是发现在机器人、无人机、SLAM等先进领域,四元数被当成实数、整数这样的基础,所以决定努力补一补这块的知识点。全部内容都来自B站/知乎上的大佬们,这只是本人学习有所感悟后,梳理出来的总结。

上接四元数学习总结(1)的内容。

四元数的乘法


1、复数乘法和二维旋转

通过上一篇的内容,我们了解到四元数和复数的某些关联性质,还有两个几何特性:

1、纯四元数(Pure Quaternion)P = 0 + xi + yj + zk = {0, p},其中 x、y、z 是实数,而 i、j、k 是四元数的虚部单位。纯四元数在几何上可以被视为三维空间中的向量,其中 x、y、z 分别代表向量的三个分量。

2、单位四元数(Unit Quaternion)Q = s + xi + yj + zk = {s, q},其模(或称为范数)等于1。单位四元数通常用于表示三维空间中的旋转轴向量,它可以避免万向锁问题,并且能提供平滑的插值方法。

那么如何利用四元数的乘法运算去表示三维的旋转?我们不妨先来回顾复数和二维旋转。复数乘以i可以逆时针(朝+i方向)旋转90°,乘以-i可以顺时针旋转90°。写成矩阵乘法如下所示

其中推导公式中暗含了一个欧拉公式,包含sinθ和cosθ的矩阵就是我们常见的二维旋转矩阵。可以发现二维旋转矩阵其实也对应着一个类似四元数的一个向量表达形式,就是复数。我们对旋转矩阵进行求逆发现其实对应的就是复数的共轭形式。(数学功底差的同学可以看看下面文心一言的数学解析)

也就是说cosθ+i·sinθ是正旋转θ,而cosθ-i·sinθ是逆旋转θ。也就是对应着单位复数的求逆就是等于其共轭(数学差生看下面证明)这些特性用在四元数和三维旋转矩阵中优势就更明显了。

这里有一个问题需要拿出来阐述,为什么二维旋转可以交换?在三维旋转中先绕x旋转,在绕y旋转和先绕y旋转,在绕x旋转肯定是不一样的,具体看下图。那我们在二维旋转中先转90°再转45°肯定和先转45°再转90°是一样的。究其根本,是二维旋转它首先就隐藏了一个非常重要的因素,就是旋转轴永远是垂直于二维平面的,也是固定的,在二维中无论怎么旋转,都是共面的。放到三维空间,旋转之所以存在次序性,之所以不能交换,是旋转轴可以跟向量成任意角度。如果你放到一个二维子空间里面去旋转,你依然可以满足交换性。

 (数学差的同学还是得注意,旋转矩阵的左乘和右乘的区别)

  • 左乘

    • 坐标系(或参考系)不动,点(或向量)动。这可以理解为在原始坐标系(或称为世界坐标系)下,点(或向量)绕原点进行了旋转。左乘的结果是旋转后的点(或向量)相对于原始坐标系的位置。
    • 在二维或三维空间中,如果绕静坐标系(如世界坐标系)旋转,通常采用左乘的方式。这相当于将旋转变换矩阵乘以坐标矩阵。
  • 右乘

    • 点(或向量)不动,坐标系(或参考系)动。这可以理解为点(或向量)保持不变,但坐标系进行了旋转,因此点(或向量)在新坐标系下的坐标发生了变化。右乘的结果是原始点(或向量)相对于新坐标系(或称为旋转后的坐标系)的坐标。
    • 如果绕动坐标系(即自身建立一个坐标系)旋转,通常采用右乘的方式。这相当于将坐标矩阵乘以变换矩阵。

2、三维旋转

首先,我们又扯到上篇文章说的two-sphere,也就是通常意义上的球体。轴角一般表示为旋转轴和角度,单看旋转轴,归一化后的旋转轴其实就是球体上面的一个点。那我们用极坐标来表示(cosα·sinβ,sinα·sinβ,cosβ)。

然后,我们就要去旋转角度了。欧拉角是一种应用很广但其实很有缺陷的旋转表现形式,那为啥有缺陷还应用广泛呢?主要原因就是简单。我们绕着单位轴旋转(譬如绕z轴旋转)比绕任意方向轴要简单许多,那么处理轴角的思路就是把轴旋转到单位轴譬如z,进行旋转后再还原到原来位置(具体轴角公式如下,证明暂时放一放)

先对旋转矩阵 𝑅 进行转置得到 𝑅T,然后再右乘向量 𝑣,即 𝑣·𝑅T,具有特定的几何意义。

  1. 坐标系变换:首先,旋转矩阵 𝑅 表示将一个坐标系内的点或向量旋转到另一个坐标系。当我们对 𝑅 进行转置得到 𝑅T 时,我们实际上是在逆转这个旋转操作,即从目标坐标系变回原始坐标系。

  2. 逆变换:转置的旋转矩阵 𝑅T 可以视为逆变换,它将经过 𝑅 旋转后的坐标变回原始坐标。因此,𝑅T 代表了原始旋转的逆操作。

  3. 右乘:当我们右乘 𝑣·𝑅T 时,我们实际上是在将坐标系逆旋转,而不是旋转向量 𝑣。这相当于将向量 𝑣 从目标坐标系变回原始坐标系。


3、四元数乘法

首先要说说四元数的乘法定义,网络上普遍归纳的是两个纯四元数的乘法通式为 -点乘 +叉乘,即:

p * q = - p · q + p x q

详细的说,p = (x₁i + y₁j + z₁k),q = (x₂i + y₂j + z₂k),执行代数乘法得:

-(x₁x₂+y₁y₂+z₁z₂) + (y₁z₂ - z₁y₂)i + (x₁z₂ - z₁x₂)j + (x₁y₂ - y₁x₂)k

但其实对于一般的四元数而言,其乘法通式应该是如下图所示: 

因为纯四元数的实部为0,也就是p₀ q₀等于0,所以上面2个四元数的乘法通式是一样的意思。

说回正题。单位四元数用作表示旋转,纯四元数表示旋转轴的三维向量,这一点毋庸置疑。那么我们可以用如下的四元数乘法来计算三维旋转:

三维任意向量:q = 0 + x₁i + y₁j + z₁k

旋转角:p = w + x₂i + y₂j + z₂k

四元数乘法计算三维旋转表达式:pqp^-1

(单位复数的求逆就是等于其共轭,推广到单位四元数也成立)

可以稍微试着用第2节的思想去理解这里的左乘p右乘p-1。这里举个很简单的例子,譬如一个表达三维向量的四元数 v = ik,我们给它左乘一个j,右乘一个-j,即:

j · ( i + k) · -j

= ( j·i + j·k ) · -j

= ( -k + i)  · -j

= k·j - i·j

= -i - k

这意思就是说,四元数 v 代表的三维向量,沿着 j 轴旋转了180°  但这里其实还是不对,因为我们原本只想 pq 运算的几何意义只是 沿着 j 轴旋转一次,旋转90°就可以了。但是这个方法左乘一次,右乘一次,实际上是旋转了两次,所以用四元数的数学乘法计算的时候,对应旋转角的四元数一定要取期望角度的一半。


2024.05.23 暂时写到这,有问题在补充。

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

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

相关文章

超简单白话文机器学习 - 支持向量机SVM(含算法讲解,公式全解,手写代码实现,调包实现)

1. 支持向量机SVM 支持向量机,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化&#xff…

学浪的缓存怎么导出来

学浪的缓存导出问题困扰着许多用户,备份和管理数据变得至关重要。在数字化时代,保护和利用数据是企业和个人不可或缺的需求。在这篇文章中,我们将深入探讨学浪缓存导出的方法,为您解决疑惑,让您轻松掌握数据的安全与便…

java:程序包javax. servLet不存在

一.原因 1.项目Tomcat 服务器依赖未导入 2.项目的 SDK 版本选择错误 二.解决方法 方案一: 1.选择项目结构选项 2.导入Tomcat依赖 把tomcat里面的【jsp-api.jar】和【servlet-api.jar】这两个包导入 方案二: 1.选择项目结构选项 2.选择自己的jdk版本…

海外短剧系统源码

随着互联网的普及和全球化的加速,海外短剧系统源码的开发成为了一个新兴的领域。海外短剧,即那些在海外市场流行的短视频剧集,以其短小精悍、节奏快速、内容多样的特点,迅速吸引了全球观众的注意。本文将探讨海外短剧系统源码的开…

反对加征关税,特斯拉上海厂传减产20% | 百能云芯

特斯拉公司首席执行官马斯克近日在公开场合表达了对美国计划对中国电动车加征关税的反对立场,强调特斯拉不支持任何扭曲市场的举措。据知情人士透露,特斯拉上海工厂正计划在今年第二季度至少削减Model Y车型的产量20%,以应对市场需求的变化。…

需求跟踪矩阵是什么?怎么创建?一文详解

一、什么是需求跟踪矩阵 对项目经理或产品经理来说,需求清单肯定不陌生,那什么是需求跟踪矩阵呢? 需求跟踪矩阵(Requirement Track Matrix,简称RTM ),是把产品需求从其来源连接到能满足需求的…

大模型应用之基于Langchain的测试用例生成

一 用例生成实践效果 在组内的日常工作安排中,持续优化测试技术、提高测试效率始终是重点任务。近期,我们在探索实践使用大模型生成测试用例,期望能够借助其强大的自然语言处理能力,自动化地生成更全面和高质量的测试用例。 当前…

MIC工作原理(驻极体麦克风)

1.驻极体麦克风声电转换原理 如图所示,驻极体麦克风属于电容式麦克风,背极板和振膜构成平板版电容器,背极板驻有一定量的电荷,背极板通过金属环连接到FET的栅极;振膜镀层金属,通过金属外壳连接到FET的S极&…

社区矫正程序管理端和小程序(支持人脸识别)

社区矫正作为我国刑事处罚执行方式中独特的种类,从2003年进行试点至今已有近20年的时间,在罪犯改造方面取得了突出成就,在法治国家建设过程中具有十分重要的意义。相较于监狱内服刑的执行方式,社区矫正更加侧重于对服刑人员进行教…

常见web安全漏洞

一、信息泄露 概念 信息泄露是由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信 息,如用户名、密码、源代码、服务器信息、配置信息等。 造成信息泄露主要的三个原因: ①Web服务器配置存在问题,导致一些系统…

最详细Linux提权总结(建议收藏)

1、内核漏洞脏牛提权 查看内核版本信息 uname -a 具体提权 1、信息收集配合kali提权 uname -a #查看内核版本信息 内核版本为3.2.78,那我们可以搜索该版本漏洞 searchsploit linux 3.2.78 找到几个可以使用的脏牛提权脚本,这里我使用的是40839.c脚…

锐捷网络与您相约第七届数字中国建设峰会 共话数字未来

第七届数字中国建设峰会将于5月24日至25日在福建福州举办,本届峰会是国家数据工作体系优化调整后首次举办的数字中国建设峰会,主题是“释放数据要素价值,发展新质生产力”。作为行业领先的ICT基础设施及解决方案提供商,锐捷网络与福建省电子信息集团、星网锐捷,围绕“发展新质生…

SpringBoot——发送HTML格式的邮件

目录 项目总结 新建一个SpringBoot项目 pom.xml application.properties配置文件 EmailService服务类 SpringbootMailHtmlApplicationTests测试类 项目总结 在SpringBoot项目中发送HTML格式的邮件的思路: 添加依赖:在项目中添加spring-boot-starte…

Android消息机制回顾(Handler、Looper、MessageQueue源码解析)

回顾: Android消息机制 Android消息机制主要指的是Handler的运行机制以及Handler所附带的MessageQueue和Looper的工作机制。 介绍 通过Handler 消息机制来解决线程之间通信问题,或者用来切换线程。特别是在更新UI界面时,确保了线程间的数…

20232937文兆宇 2023-2024-2 《网络攻防实践》实践十一报告

20232937文兆宇 2023-2024-2 《网络攻防实践》实践十一报告 1.实践内容 木马是一种带有恶意性质的远程控制软件。木马一般分为客户端和服务器端,客户端是本地使用的各种命令的控制台,而服务器端则是要给别人运行,只有运行过服务器端的计算机…

工具:Visual Studio Code

一、VSCode生成exe 二、在vs中断点调试 如果没效果需要安装如下与unity相连接的插件 三、注释 1、代码注释 注释和取消都是都是同一个命令:选中代码,然后按住CtrlShift/ 2、方法或类注释 /// 四、导航 五、将变量注释展示到解释面板 1、直接显示 [Too…

YOLOv8: RuntimeError: DataLoader worker (pid(s) xxxxx) exited unexpectedly

遇到错误: 一、 raise RuntimeError(DataLoader worker (pid(s) {}) exited unexpectedly.format(pids_str)) RuntimeError: DataLoader worker (pid(s) 4252, 17184) exited unexpectedly二、OSError: [WinError 1455] 页面文件太小,无法完成操作。 处…

有趣的css - 水波纹按钮

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是一个好看有质感的水波纹按钮。 最新文章通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页面渲染效果 整体效果 &a…

【C++语言】继承:类特性的扩展,重要的类复用!

【C语言】继承,更进一步的复用 ✨精美思维导图奉上继承1. 继承的相关概念:2. 继承的定义:(1)定义格式:(2)访问限定符和继承方式:(3)默认继承方式&…

取代或转型?人工智能对软件测试的影响(内附工具推荐)

在当今快速发展的数字环境中,从移动App到基于Web的平台,软件已成为我们日常生活和工作不可或缺的一部分。然而,随着软件系统变得越来越复杂,如何确保其质量和可靠性已成为开发人员和测试人员所面临的一大重要挑战。 这就是软件测…