0

使用数学库 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 的欧拉角序列吗?我不确定,因为矩阵乘法的行为与标量乘法不同。

4

1 回答 1

1

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

[P'] = M.[P],其中 M = M1.M2.M3

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

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

于 2013-05-03T20:34:07.167 回答