通过四元数实现三维点坐标变换的原理
创作时间:
作者:
@小白创作中心
通过四元数实现三维点坐标变换的原理
引用
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++ 代码实现三维点的旋转》
热门推荐
传统钓多长的鱼竿合适?
杨幂给《功夫熊猫4》配音很洗脑,下次别配了
证监会对美尚环境立案,严监严管发威,距离面值退市还有一半时间
上市公司立案调查:法律框架、实务操作与应对策略
醛固酮的生理作用
吕雉为什么会嫁给刘邦?从哪些事可以看出她是个传统女性?
历史轶事解析——探索刘邦与吕雉的婚姻缘起
房贷款利率变化对青年人生活的影响及应对策略
如何教孩子掌握九九乘法表?避免常见学习错误
烈日当头!怎么从阳光下安全地获取维生素D?
南京鼓楼医院完成世界首例内镜下胆管早癌根治术
古代皇帝驾崩后的昭告仪式
DNF 110版本平民搬砖角色推荐:瞎子、女气功、刃影
测骨龄应该去挂哪个科?
深入了解Windows更新:质量更新vs功能更新
如何让孩子感到幸福?父母提供情绪价值是关键
昆明至洛阳的便捷交通路线及火车票查询指南
人参果的功效与作用:生津止渴,增强免疫力,抗癌防癌
如何高效地进行批量文件解压?
从贪官权奸到皇帝恩宠,他是如何攀附上位?
从贪官权奸到皇帝恩宠,他是如何攀附上位?
保费什么时候上涨?代位追偿会影响明年保费吗?
血液酒精浓度233毫克/100毫升,对开车有多大影响?
身体明明怕冷,为什么还总“上火”?
垃圾分类小课堂 | 如何进行垃圾分类
证据能否证明外星人文明的存在?从法律视角解析
神秘疑似外星人证据曝光:科学家们忙碌分析外星生命可能性
铁粉是什么东西?铁粉的用途和应用范围
紫玉晶的材质特性与应用领域详解
风的力量:如何掌握放风筝的技巧