x軸とy軸を中心に立方体を単純に回転させようとしています。
常にx軸上で立方体をxだけ回転させ、x軸の回転とは無関係にy軸上で立方体をyだけ回転させたい
最初に私は素朴にやった:
glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
それから
ただし、最初にx上で回転し、次にyi上で回転します。xアクセスとは関係なく、y上で回転します。
クォータニオンを調べ始めたので、試してみました:
Quaternion Rotation1;
Rotation1.createFromAxisAngle(0,1, 0, globalRotateY);
Rotation1.normalize();
Quaternion Rotation2;
Rotation2.createFromAxisAngle(1,0, 0, globalRotateX);
Rotation2.normalize();
GLfloat Matrix[16];
Quaternion q=Rotation2 * Rotation1;
q.createMatrix(Matrix);
glMultMatrixf(Matrix);
これは、2つの連続したglRotatesを実行して達成されたことをほぼ正確に実行します...したがって、1つまたは2つのステップが欠落していると思います。
クォータニオンは進むべき道ですか、それとも別のものを使用する必要がありますか?また、クォータニオンがどのステップを追加してキューブを各軸から独立して回転させることができるかを判断する方法である場合。他の誰かが同じ問題を抱えていると思います: OpenGLシーンを2軸で回転させる