【空间变换】欧拉角与四元数

核心

  1. 欧拉角描述的是一种变换,只关注变换后的结果,不关注变换过程中的运动
    四元数不仅良好地表示了一种变换,也很好地表示了一种运动过程,又避免了万向节死锁Gimbal Lock
  2. 变换顺序,是欧拉角变换的一部分,仅仅说明三个轴的角度是不完整的;在用欧拉角说明某一个物体的姿态时,一定要加上先后顺序
  3. 无论是欧拉角还是四元数,它们都只描述旋转,不包含任何拉伸平移

从低维开始

参考3B1B的四元数视频
在复频域分析中,我们常见的 j j j 或者 i i i 其实就是一种旋转表示
e π i e^{\pi i} eπi 表示绕某一个轴旋转180°
即:(欧拉公式,可从三角函数推得) e i θ = s i n θ + i c o s θ e^{i \theta} = sin\theta + icos\theta eiθ=sinθ+icosθ
令: w = s i n θ w = sin\theta w=sinθ, x = c o s θ x = cos\theta x=cosθ
进而: e i θ = w + x i e^{i \theta} = w + x i eiθ=w+xi
也就是说,我们用两个量描述了一个在二维平面中的旋转,但是这两个量满足某种约束关系(本质上是一个量分解出的两个量,用一维的量描述了二维的旋转)
举例来说, 0 + 1 i 0+1i 0+1i表示逆时针旋转90°, 2 2 − 2 2 i \frac{\sqrt2}{2}-\frac{\sqrt2}{2}i 22 22 i表示顺时针旋转45°


进入高维

就像常规复数描述二维旋转时,一个二维单位圆覆盖了整个一维空间,一个三维单位球覆盖了整个二维空间,同样的,一个四维的单位超球也会覆盖整个三维空间;
相应的,我们用一维量描述二维旋转,用二维量描述三维旋转,那么我们用三维量描述四维旋转就合乎情理了
事实上,四元数描述的是四维中单位超球的旋转,三维坐标系的原点是 1 + 0 i + 0 j + 0 k 1+0i+0j+0k 1+0i+0j+0k,这是由超球的投影决定的,球上的该点投影下来,正好落在原点处
对于四元数来说:
q = w + x i + y j + z k q = w+xi+yj+zk q=w+xi+yj+zk
w ∈ [ 0 , 1 ] , x , y , z ∈ [ − 1 , 1 ] w∈[0, 1], \ \ x, y, z∈[-1, 1] w[0,1],  x,y,z[1,1]的部分(正实部的部分)被映射到了三维坐标系中的单位球中,其他部分(负实部的部分)映射到了三维单位球以外的空间

但请时刻记住:无论这个四元数的点映射到三维空间的哪里,它原本所在的位置都是那个四维单位超球,满足 w 2 + x 2 + y 2 + z 2 = 1 w^2+x^2+y^2+z^2=1 w2+x2+y2+z2=1
此外,等价于普通复数的虚轴表示二维中的一个圆,在四元数中, i , j , k i, j, k i,j,k 每个轴都代表超球上的一个圆环,进一步的,三维中的每一个平面,都代表了超球上的一个球面


四元数运算

运算的本质

让我们回忆一下文章开头所讲的:
四元数不仅是变换,也是一种状态

因此,四元数乘法可以类比于矩阵向量运算
当两个四元数相乘时,可以认为是一个四元数状态应用了另一个四元数变换,从而得到下一个四元数状态
换而言之,变换将状态量的四个分别应用了该变换,再重新组成了新的状态量

对应的几何含义

四元数变换所描述的旋转方向符合右手螺旋定则
举例来说:右手拇指从1指向 i ,当应用 i 变换时,jk圆会绕着手指蜷曲的方向旋转;
推广:右手拇指从1指向变换四元数,当应用该变换时,垂直于该四元数向量的圆会绕着手指蜷曲的方向旋转

每应用一次单位四元数变换,相当于绕某一个轴旋转90度,连续应用4次就转回来了
由此,我们可以简单得出一个性质:四元数运算不满足乘法交换律

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

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

相关文章

基于Linux下的MyBash命令解释器

项目介绍:⼀个⽤C语⾔实现的简单shell,可以接受⽤⼾输⼊的命令并执⾏操作,⽀持多管道和重 定向。 mybash---打造自己的命令解释器 目前我们Linux的系统默认的命令解释器是bash; 命令解释器(也称为命令行解释器或shell&#xff0…

Linux常见使用场景

一、文件查看与内容操作 ​1. cat ​作用:查看文件内容(一次性输出全部内容)。​常用选项: -n:显示行号。-b:仅对非空行显示行号。 ​示例: cat file.txt # 查看文件内容 cat -n fil…

Ingredient-oriented Multi-Degradation Learning for Image Restoration论文阅读

摘要:重点在于关联多个任务本质的联系。 不同恢复任务的关联性很重要。 揭示退化现象的内在机理联系很有意义。 多合一的方法能在单一模型中处理多种退化问题,可扩展性较差。 成分导向范式挖掘不同图像退化现象背后的物理规律或特征模式。 成分导向退化重…

禅道后台命令执行漏洞

漏洞简介 禅道是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、 组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整地覆盖了项目管理的核心流程。 禅道管理思想注重实效,功能完备丰富,…

密码学——知识问答

目录 1、阐述公开密钥算法的定义,结合RSA算法说明公钥密码的基本要求。 说明公钥与私钥两种密码学并举例与其应用 1. 公钥密码学(非对称加密): 2. 私钥密码学(对称加密): 对比公钥与私钥密码…

PDF多表格结构识别与跨表语义对齐:基于对抗迁移的鲁棒相似度度量模型

文章目录 一. 项目结构二.流程分析2.1 批处理器核心代码解析 三. 跨页表格相似度匹配原理3.1 表头内容相似度-特征向量归一化3.2 表头内容相似度-余弦相似度3.3 定时缓存清理 ocr扫描有其局限性。对于pdf文本类型这种pdfbox,aspose-pdf,spire直接提取文本…

es 3期 第27节-运用Script脚本实现复杂需求

#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性&#xff…

23、web前端开发之html5(四)

十二. HTML5实践示例 前面我们详细讲解了HTML5的特点&#xff0c;包括语义化标签、增强的表单功能、多媒体元素&#xff08;如<video>和<audio>&#xff09;、Canvas绘图、SVG集成以及离线存储等。以下是一些详细的HTML5实践示例&#xff0c;展示如何使用HTML5的新…

海思烧录工具HITool电视盒子刷机详解

HiTool是华为开发的一款用于海思芯片设备的刷机和调试工具&#xff0c;可对搭载海思芯片的机顶盒、智能电视等设备进行固件烧录、参数配置等操作。以下为你详细介绍&#xff1a; 功能用途 固件烧录&#xff1a;这是HiTool最主要的功能之一。它能够将下载好的适配固件文件烧录到…

软考中级-软件设计师 23种设计模式(内含详细解析)

23种设计模式 &#x1f3af; 创建型设计模式&#x1f4cc; 抽象工厂&#xff08;Abstract Factory&#xff09; 设计模式&#x1f4cc; 工厂方法&#xff08;Factory Method&#xff09;设计模式&#x1f4cc; 单例&#xff08;Singleton&#xff09;设计模式&#x1f4cc; 生成…

thinkphp8.0\swoole的websocket应用

环境&#xff1a;centOS7.9、php8.3、thinkphp8.0\think-swoole4.1 我用的官方think-swoole插件 第一步&#xff1a;根据官方文档&#xff0c;需要安装此扩展插件 composer require topthink/think-swoole 第二步&#xff1a;在根目录下config文件夹下编辑swoole.php配置文…

Ubuntu服务器挂载时遇到文件系统错误怎么办

在Ubuntu服务器上挂载分区时&#xff0c;如果遇到文件系统错误&#xff0c;通常可能是由于磁盘损坏、文件系统损坏、不正确的卸载等原因造成的。以下是详细的排查与修复步骤&#xff1a; 一、查看错误信息 首先&#xff0c;尝试手动挂载并观察具体错误&#xff1a; sudo mount …

【设计模式】策略模式(Strategy Pattern)详解

策略模式&#xff08;Strategy Pattern&#xff09;详解 一、策略模式的定义 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一组算法&#xff0c;将每个算法封装起来&#xff0c;并使它们可以相互替换&#xff0c;从而让算法的…

软考笔记5——软件工程基础知识

第五章节——软件工程基础知识 软件工程基础知识 第五章节——软件工程基础知识一、软件工程概述1. 计算机软件2. 软件工程基本原理3. 软件生命周期4. 软件过程 二、软件过程模型1. 瀑布模型2. 增量模型3. 演化模型&#xff08;原型模型、螺旋模型)4. 喷泉模型5. 基于构建的开发…

Vim 实用指南

导航 简介Vim 的来历Vim 语言 Vim 的三种模式Normal&#xff08;普通模式&#xff09;Insert&#xff08;插入模式&#xff09;Visual&#xff08;可视模式&#xff09;三种模式转换 普通模式实用技巧说明复制当前行并粘贴使用上一个命令撤销上一个操作最常用的跳转命令查找对应…

Git入门——常用指令汇总

以下是一份精心整理的 Git常用指令速查表&#xff0c;基本覆盖日常开发使用场景&#xff0c;建议收藏备用&#x1f447; &#x1f527; 环境配置 指令作用git config --global user.name "你的名字"设置全局用户名git config --global user.email "你的邮箱&qu…

常见中间件漏洞攻略-Jboss篇

一、CVE-2015-7501-Jboss JMXInvokerServlet 反序列化漏洞 第一步&#xff1a;开启靶场 第二步&#xff1a;访问该接口&#xff0c;发现直接下载&#xff0c;说明接⼝开放&#xff0c;此接⼝存在反序列化漏洞 http://47.103.81.25:8080/invoker/JMXInvokerServlet 第三步&…

播放本地视频-实现视频画廊功能

实现一个视频画廊&#xff0c;播放本地视频 可以切换不同视频的功能 文章目录 需求&#xff1a;场景实现方案遇到的坑播放器选择界面显示不全视频友好显示问题缓存 总结 需求&#xff1a; 实现一个视频画廊&#xff0c;播放本地视频 可以切换不同视频的功能 场景 图片画廊的…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.2文本生成逻辑:Top-k采样与温度控制

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.2.2 文本生成逻辑:Top-k采样与温度控制1. 文本生成的核心挑战与数学框架1.1 自回归生成的基本流程2. `Top-k`采样原理与工程实现2.1 数学定义与算法流程2.2 PyTorch实现优化3. 温度控制的数学本质与参…

为什么后端接口返回数字类型1.00前端会取到1?

这得从axios中得默认值说起&#xff1a; Axios 的 transformResponse axios 在接收到服务器的响应后&#xff0c;会通过一系列的转换函数&#xff08;transformResponse&#xff09;来处理响应数据&#xff0c;使其适合在应用程序中使用。默认情况下&#xff0c;axios 的 tran…