在3D情况下,有许多人或遇到旋转物体的情况,在现在的游戏引擎 中,旋转物体使用最多的是四元数,对于许多新手来说,这可能相当陌生。
在Ogre与Unity3D以及一些其他引擎中,在旋转物体时,有人会发现这样的一类函数应用:
Quaternion.Euler(x,y,z)*Vector3(x1,y1,z1)
或者
Ogre::Vector3 src = mNode->getOrientation()*Ogre::Vector3::UNIT_X
两类乘法都是返回一个三维向量的值,很多人觉得疑惑,我们今天给大家解释一下,如果对算法本身没有兴趣可以直接跳到解析之后。
ogre是一个开源图形引擎,在官网上可以下到所有源代码,至于unity3d的商业性大家都知道,所以我们上ogre的乘法源码
在代码第8行中的w是四元数的实部,第3行的x,y,z是四元数的虚部
<