使用 glm 从旋转矩阵获取角度?
Get the angle from a rotated matrix using 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]);
}
请参阅 Rotation matrix 了解说明。
请注意,如果矩阵表示比仅绕 Z 轴旋转更复杂的变换,则此函数返回的值将是伪造的。根据您的用例,除了变换矩阵之外,您可能还想单独保留欧拉旋转角度。
我想知道如何从旋转矩阵中获取角度,如何计算?我正在使用 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 轴旋转更复杂的变换,则此函数返回的值将是伪造的。根据您的用例,除了变换矩阵之外,您可能还想单独保留欧拉旋转角度。