当前位置: 首页 > news >正文

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

核心

  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次就转回来了
由此,我们可以简单得出一个性质:四元数运算不满足乘法交换律

相关文章:

  • UE5.5_Mass框架——UE的ECS框架
  • 智慧城市智慧调度系统的架构与关键技术研究
  • 算法基础_基础算法【快速排序 + 归并排序 + 二分查找】
  • 做的一些实验
  • 记录一次TDSQL事务太大拆过binlog阈值报错
  • C语言中栈和堆详解及区别
  • MySQL General Log
  • Ubuntu 22.04.5 LTS 设置时间同步 ntp
  • Android打aar包问题总结
  • 企业为何青睐数字孪生大屏?技术驱动与价值重构的双重逻辑
  • oracle中java类的使用
  • 代码随想录动态规划05
  • Problem E: 多态
  • Jmeter触发脚本备份
  • MySQL 8.0登录root账号报错ERROR 1045 (28000)
  • 职场新人面对不懂的问题应该如何寻求帮助?
  • 对于有前后逻辑依赖关系的长文本,切分时确实需要特别注意上下文的连续性,以便在召回后知识时能够尽量保留前后文的关联。
  • 【NLP 46、大模型技术发展】
  • 小爱控制via电视浏览器搜索图片-Homeassistant重制上一个自动化
  • AI 时代,Java 和 Python 哪个好就业?
  • 遭“特朗普关税”冲击,韩国今年经济增长预期“腰斩”降至0.8%
  • 法学联合书单|法庭上的妇女
  • 习近平会见哥伦比亚总统佩特罗
  • 四部门:强化汛期农业防灾减灾,奋力夺取粮食和农业丰收
  • 美国明尼苏达州发生山火,过火面积超80平方公里
  • 科创板年内第3家!健信超导IPO获受理,拟募资8.65亿