(首先,本文讨论的都是用来描述刚体旋转的四元数,而不是数学中群论里的四元数,那里面使用的四元数是真的有特别复杂的意义的,也用到了更多性质和理论,也就是说其实图形学里的四元数是有点大材小用的意思)
最近在牛客上看游戏研发岗位的面经,发现很多面试都问到了四元数是什么?我虽然没学过计算机图形学,但是是做6D位姿估计的,对四元数旋转矩阵什么的比较熟悉,四元数在游戏引擎里,估计也应该是描述物体旋转位姿的吧,就没更深入看。
后来又看到一个问题,四元数比欧拉角的优势?这我就纳闷了,我们三维视觉领域,旋转矩阵、欧拉角、四元数都是通用的,哪来的优势不优势一说?于是又深入看了一下。
对于初学四元数的小伙伴们,一定很难理解四元数是啥?(主要应该是不理解为什么要用上虚数)
为啥现实世界会冒出个虚数出来?
这里先给结论
…
…
…
虚数为了书写简便和计算简便。
是的,大名鼎鼎的虚数在工程中应用的目的,就是为了,书写简便。
要解释这个问题,就要把虚数画出图来,不得不提到欧拉公式,即e^(i * theta)=cos(theta)+i*sin(theta)
这个公式乍看也很玄学,但是仔细观察,就会发现等号左边和右边的书写长度不是一个量级的,左边只需要3个字符即可写完,而右边需要9个字符,这对工程人士来说简直是如获珍宝,原本一页长的公式,如今可以只使用三分之一的长度就写完了。从计算的角度来说,对e的指数进行运算,也比直接对三角函数进行计算方