1
私はOpenGLでオブジェクトを回転させるためにクォータニオンを使用していますが、5度から-5度(単位平面を横切る)に回転させると、長い道のり。すなわち、飛行機を横切って10度ではなく、5度から-5度まで350度回転します。これは、0度で回転することによっていつでも "通過"するたびに、各軸の回転に起こります。どのように修正するかはわかりません。OpenGLで0に回転する
私のコードは、ロール、ピッチおよびヨーは、オイラーは私のオブジェクトの回転のために角度表し、この、次のようになります。
quaternion[0] = cos(pitch/2)*cos(yaw/2)*cos(roll/2) + sin(pitch/2)*sin(yaw/2)*sin(roll/2);
quaternion[1] = sin(pitch/2)*cos(yaw/2)*cos(roll/2) - cos(pitch/2)*sin(yaw/2)*sin(roll/2);
quaternion[2] = cos(pitch/2)*sin(yaw/2)*cos(roll/2) + sin(pitch/2)*cos(yaw/2)*sin(roll/2);
quaternion[3] = cos(pitch/2)*cos(yaw/2)*sin(roll/2) - sin(pitch/2)*sin(yaw/2)*cos(roll/2);
glLoadIdentity();
glPushMatrix();
glRotatef((float) (2.0f * acos(quaternion[0]) * 180.0f/PI), quaternion[1], quaternion[2], quaternion[3]);
任意の提案ですか?