私のprevious questionからフォローしていますが、私は四元数でオブジェクトを回転させることができましたが、まだ小さな問題があり、解決方法はわかりません。下のコードでは、オブジェクトはx軸とy軸の周りを回転します。しかし、私はxとyキーの間で切り替えると、常に最初の位置にジャンプします。だから私は新しいポジションから決してローテーションを取ることはありませんが、常にプログラムが始まったポジションからのものです。クォータニオンでのローテーションは正しくありません
Quaternion q1 = quaternion->quat_rotate(anglex,1,0,0);
Quaternion q2 = quaternion->quat_rotate(angley,0,1,0);
quaternion->mult(q1,q2);
quaternion->quat_matrix(Matrix);
glMultMatrixf(Matrix);
object->drawObject(Red,Green,Blue);
私はあなたが何を意味するか理解していただきたいと思います。
xキーを長く押すほど、大きなアングルが得られますか?キーを離したときにこれらの値をリセットしますか?完全なコードを投稿してください。その四元数変数は何ですか? –