使用数学库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的欧拉角序列?我不确定,因为矩阵乘法的行为与标量乘法不同。
答案 0 :(得分:1)
请记住,在openGL中,矩阵计算使用符号知道为向量列(http://en.wikipedia.org/wiki/Column_vector)。因此,任何点变换都将由线性方程组表示,用向量列表示法表示,如下所示:
[P'] = M. [P],其中M = M1.M2.M3
这意味着应用于点的第一个变换(由vector [P]表示)为M3,之后由M2表示,最后由M1表示。
回答你的问题,一旦Z旋转变换是你写的最后一个矩阵形成矩阵乘法,得到的欧拉角将是ZXY。