OpenGL でクォータニオンを使用してオブジェクトを回転させていますが、5 度から -5 度に回転すると (単位平面を横切る)、モデルが「遠くまで」回転するという問題があります。つまり、平面全体で 10 度ではなく、5 から -5 まで 350 度全体を回転させます。これは、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]);
助言がありますか?