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

标签 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]

最佳答案

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

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

参见 Rotation matrix进行解释。

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

关于c++ - 使用 glm 从旋转矩阵获取角度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39251412/

相关文章:

c++ - Boost Asio - 异步堆栈 + 轮询

c++ - map<string, int> 获取 map 的其余部分 (C++)

algorithm - 将小数矩阵转换为整数矩阵

rotation - 如何使用 Raphael.js 旋转 div?

iphone - iphone5 IOS录音时如何使用振动?

c++ - C++ 中的简单运算符重载 =

c++ - 无法让 SFML 音乐工作

r - 将 `dimnames` 分配给列表中的所有矩阵时出错

c++ - Matlab矩阵逆函数在C++中的Eigen实现

ios - 如何使用 GLKit 围绕图集中 Sprite 的中心旋转