我在食人魔中使用四元数。
我得到的每一帧:
Ogre::Quaternion prev;
bool frameStarted(const Ogre::FrameEvent& event) {
const Ogre::Quaternion q = object->getOrientation();
if(abs(q.x - prev.x) > ...) {
/* do something */
prev = q;
}
}
如何判断时间T + 1的X旋转是否比T时刻的X旋转小180°?
答案 0 :(得分:2)
我真的不知道你想要用四元数的x成员做什么。如果您正在比较不同旋转轴的x坐标。
但是,如果我的问题是正确的,那么您正在寻找围绕x轴的旋转角度的差异。在这种情况下,http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles解释了如何将四元数转换为欧拉角,这反过来将为您提供围绕每个规范基矢(X,Y和Z)的旋转角度。然后相当于比较欧拉角度(请记住它们将以弧度表示,因此使用pi而不是180)。