C++ 使用glm从旋转矩阵获取角度?

C++ 使用glm从旋转矩阵获取角度?,c++,matrix,rotation,angle,glm-math,C++,Matrix,Rotation,Angle,Glm Math,我想知道如何从旋转矩阵得到角度,如何计算?我使用的是GLM C++。 比如说 怎样用C++来获得这个矩阵的角度?< /p> [-0.01458][-2.26652][0][0] [-1.27492][-0.02596][0][0] [ 0 ][ 0 ][1][0] [ x ][ y ][z][1] 这看起来像是一个围绕Z轴旋转的单位矩阵。如果总是这样,可以通过对第一列的前两个元素应用函数来获取角度: float get_angle_in_rad(cons

我想知道如何从旋转矩阵得到角度,如何计算?我使用的是GLM C++。 比如说 怎样用C++来获得这个矩阵的角度?< /p>
[-0.01458][-2.26652][0][0]
[-1.27492][-0.02596][0][0]
[    0   ][    0   ][1][0]
[    x   ][    y   ][z][1]

这看起来像是一个围绕Z轴旋转的单位矩阵。如果总是这样,可以通过对第一列的前两个元素应用函数来获取角度:

float get_angle_in_rad(const glm::mat4 &matrix) {
    return glm::atan(matrix[0][1], matrix[0][0]);
}
请参阅以获取解释

请注意,如果矩阵表示的是比绕Z轴旋转更复杂的变换,则此函数返回的值将是虚假的。根据您的使用情况,除了变换矩阵之外,您可能希望单独保留euler旋转角度