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

时间:2016-08-31 13:45:05

标签: c++ matrix rotation angle glm-math

我想知道如何从旋转的矩阵中获取角度,我该如何计算?我正在使用glm c ++。

例如 如何使用c ++从这个矩阵中获取角度?

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

1 个答案:

答案 0 :(得分:2)

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

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

请参阅Rotation matrix了解相关信息。

请注意,如果矩阵表示比绕Z轴旋转更复杂的变形,则此函数返回的值将是假的。根据您的用例,除了转换矩阵之外,您可能还需要单独保留欧拉旋转角度。