通过四元数实现三维点坐标变换的原理
创作时间:
作者:
@小白创作中心
通过四元数实现三维点坐标变换的原理
引用
CSDN
1.
https://m.blog.csdn.net/limeigui/article/details/140253476
三维点旋转的方案
三维旋转的方案主要有以下几种:
欧拉角:简单易懂,但有万向节锁问题。在三维软件的用户界面上通常都用欧拉角表示。但是软件内部的计算过程都用四元数。
旋转矩阵:可以累乘,但有误差累计问题。
四元数:正是因为这两种表示方式的缺陷,才造就了四元数表示法的流行。
本文仅对四元数的旋转进行说明。
使用复数表示二维点的旋转
复数的概念
复数为: a + b i
复数可以表示二维点的旋转。
其中的圆是单位圆。如图,就表示点或向量绕着原点旋转了θ (theta)角度。可以把图中的二维坐标(a,b)写成一个复数:
复数的三种形式及相互转换
- 代数形式
- 三角形式
- 指数形式
复数概念扩展:实数、虚数、复数
四元数旋转三维点原理
四元数就是四个数。它是复数的推广。
四元数则多了两个虚部: q = w + (ai + bj + ck) , 其中i,j,k都是虚数。所以:
四元数可以表示三维单位球面上的一个点(或者说是一个单位方向向量)的旋转:
这就表示绕着一个轴(a,b,c)(它是个单位向量)旋转θ (theta)角度。
使用四元数进行旋转的公式
使用四元数进行旋转的公式如下(结果为一个新的四元数):
假设有四元数q : q = w + (ai + bj + ck) , 那么四元数的逆的公式为:
这就是实部不变,虚部加个负号而已!
以试验一下,它是否符合逆的概念,也就是:
注意:如果q没有归一化,那么q的逆只需要再除以模的平方:
旋转叠加
四元数也像旋转矩阵那样能够累乘!比如先旋转q1,再旋转q2:
四元数转换为三维点
旋转之后,怎么得到三维的点坐标呢?
我们只需要把实部抛弃(或者写成0),虚部的三个值恰好就是一个三维点的坐标。
也就是说:( 0 , x i + y j + z k )
恰好就是三维点:( x , y , z )
代码实现
关于代码实现,请参考下一篇文章:《Eigen C++ 代码实现三维点的旋转》
热门推荐
宿舍管理系统对宿舍安全的重要性
八字火不足,如何调理?
埃隆·马斯克的商业帝国:从颠覆到统治的"第一性原理"革命
画漫画要怎么构图
《全面战争三国》诸葛亮怎么样 诸葛亮技能属性一览
上颌骨囊肿手术多久恢复
公司财务管理软件费用明细表格制作指南
脑梗与洗头有关系?告诫:年关将至,中老年人,洗头要多注意几点
高性能与低功耗兼顾:选购笔记本必备指南
辞职后医保怎么转到新单位
炒股的基本术语:解读股票市场的关键词汇
2025年高考提前批报考流程 适合哪些考生报名
GTX与RTX显卡的区别
舌尖上的蚌埠:一座被低估的美食之城,这10道小吃不吃等于白来!
如何理解股市的运行机制?这种运行机制如何影响市场表现?
上古历史(2)——燧人氏:点燃华夏文明的第一缕光明
如何办理医保转诊?这种转诊有哪些流程?
安以轩:从《斗鱼》到《仙剑奇侠传》,台湾实力派女演员的演艺之路
VSCode打不开怎么办?六种常见原因及解决方案
员工安全培训:个人防护与安全意识培养
回归自然,健康养生这么做
怎样提升自己的设计作品,增加获奖的机会?
计算机网络的组成,功能
齐鲁探韵,青岛寻根——中医药文化与社会实践并行
如何拍摄珠宝?-十个技巧让你的照片更专业
《无畏契约》开发商拳头游戏介绍
软件危机:软件开发与维护中的严重问题及应对策略
肾功能全套检查包括哪些项目
长江为何叫江?黄河为啥叫河?二者有何区别
双肾多囊肾严重吗