使用glm从旋转矩阵获得角度



我想知道如何从旋转矩阵中得到角度,我怎么计算呢?我用的是glm c++

例如

我怎么用c++从这个矩阵得到角度?

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

这看起来像是一个绕Z轴旋转的单位矩阵。如果总是出现这种情况,可以通过对第一列的前两个元素应用glm::atan函数来恢复角度:

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

见旋转矩阵说明

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

最新更新