1
私は、Y軸に関する四元数を使用してオブジェクトを45度回転しようとしています。 四元数を指定した後、私は回転行列を取得しようとしています。しかし、私が見るの値が間違ってい回転行列に対するクォータニオン、固有ライブラリを使用した不正確な値
Eigen::Quaterniond q;
q.x() = 0;
q.y() = 1;
q.z() = 0;
q.w() = PI/8; // Half of the rotation angle must be specified, even IDK why
Eigen::Matrix3d R = q.normalized().toRotationMatrix();
std::cout << "R=" << std::endl << R << std::endl;
OUTPUT:
R=
-0.732 -0 -0.680
0 1 -0
0.680 0 -0.732
Y軸に沿ってOpenGLの回転マトリックスである必要がありますので:
ので、私の期待される出力は:
R=
0.707 0 0.707
0 1 0
-0.707 0 0.707
値が小さいだけでなく値の誤った記号が予期しない回転を引き起こしているだけでなく、負のサインのために、私の立方体は180度の回転に指定された角度を加えています。私は一日中これ以上頭を痛めた。私が間違っていることを教えてくれる人もいますか?
45度 'パイ/ 4' – Rostislav
である私は、四元についてスクワット知らないが、私はその/ 8を知っていますか22.5°に相当する。 45°は/ 4である。 – Logicrat
@Logicratなぜか分かりませんが、角度の半分を指定する必要があります。だから私が 'PI/4'で回転させなければならない場合、私は' PI/8'と指定しなければなりません。 –