c++ - 此代码产生的欧拉角阶数是多少?

标签 c++ rotation glm-math euler-angles

使用数学库 GLM,我使用这段代码将欧拉角旋转组合成旋转矩阵。

#include <GLM/gtc/matrix_transform.hpp>
using namespace glm;

mat4 matrix = rotate(mat4(1), X, vec3(1, 0, 0))
            * rotate(mat4(1), Y, vec3(0, 1, 0))
            * rotate(mat4(1), Z, vec3(0, 0, 1));

这会导致 XYZ 或 ZYX 的欧拉角序列吗?我不确定,因为矩阵乘法的行为与标量乘法不同。

最佳答案

请记住,矩阵计算在 openGL 中使用称为 vector 列 (http://en.wikipedia.org/wiki/Column_vector) 的符号。因此,任何点变换都将由线性方程组表示,用 vector 列表示法表示如下:

[P'] = M.[P], where M = M1.M2.M3

这意味着应用到点的第一个变换,由 vector [P] 表示,是 M3,然后是 M2,最后是 M1。

回答你的问题,得到的欧拉角将是ZXY,一旦Z旋转变换是你写的最后一个矩阵形成矩阵乘法。

关于c++ - 此代码产生的欧拉角阶数是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16366340/

相关文章:

html - 使用 CSS 进行 mask + 旋转

c++ - 四元数变形或闪烁

c++ - 在带有 glm vector 的结构中没有合适的默认构造函数可用

c++ - 500万随机数程序运行不了

c++ - BerkeleyDB 最大化性能并最小化数据丢失

javascript - CreateJS EaselJS - 不同形状的旋转处理不一致

Python:顺时针方向的二维到一维列表?

c++ - parent 和二传手

c++ - clang++ 通过 Homebrew 软件安装 (macOS) : compilation errors

c++ - OpenGL C++鼠标光线采摘glm :unproject