2016-08-31 2 views
1

回転した行列から角度を取得する方法を知りたいのですが、どうすれば計算できますか?私はglm C++を使用しています。glmを使用して回転行列から角度を取得しますか?

たとえば、 この行列から角度を求めるにはどうすればよいですか?

[-0.01458][-2.26652][0][0] 
[-1.27492][-0.02596][0][0] 
[ 0 ][ 0 ][1][0] 
[ x ][ y ][z][1] 

答えて

2

これは、Z軸を中心に回転した単位行列のように見えます。それは常にそうなら、あなたは最初の列の最初の2つの要素にglm::atan機能を適用することにより、バックの角度を取得することができます:

float get_angle_in_rad(const glm::mat4 &matrix) { 
    return glm::atan(matrix[0][1], matrix[0][0]); 
} 

説明のためRotation matrixを参照してください。

行列がZ軸回りの回転よりも複雑な変換を表す場合、この関数が返す値は偽になります。ユースケースに応じて、変換行列に加えて、オイラー回転角を別々に保つことができます。

関連する問題