四元数旋转:OGRE中的4元数和旋转疯狂代码http://CrazyCoder
cn/ĵ:http:/CrazyCoder
cn/GameDevelopment/Article36062
html想象个物体在3D空间中移动过程该物体必然会涉及到旋转例如个怪物他运动方向会改变要改变其方向只需要对其进行旋转即可旋转方式大致分为3种:Euler旋转矩阵旋转以及4元数旋转这里稍微记录下我目前对于4元数旋转理解对于4元数方面数学以及其原理这里不关心只需要学会如何使用即可无论是哪种旋转物体和该物体局部坐标系的间相对位置相对方位都是不会改变因此在进行两个局部旋转(即相对于局部坐标系)时要注意结果可能不是你预期对于Euler旋转OGRE中为SceneNode提供了yaw,pitch,roll的类接口这些接口默认都是参照局部坐标系旋转可以通过第2个参数来指定例如yaw(Degree(90),SceneNode::TS_WORLD);OGRE中Quaternion类用于4元数处理该类(也可以说是4元数本身)有4个成员:x,y,z,w这4个数分别代表什么
在OGRE论坛上我找到了些可以让人很容易理解信息:Quaternionscanseemprettydauntingbecauseoftheuseof\'imaginary\'numbers
It\'smucheasiertounderstandyoujustignorethisconceptcompletely
Thebasicformulaforcreatingaquaternionfromangle/axisis:Q=cos(angle/2)+i(x*sin(a/2))+j(y*sin(a/2))+k(z*sin(a/2))orCode:Q
w=cos(angle/2)Q
x=axis
x*sin(angle/