Какой порядок углов Эйлера дает этот код?

Используя математическую библиотеку 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

Решение

Помните, что для вычисления матрицы в openGL используется нотация, известная как векторный столбец (http://en.wikipedia.org/wiki/Column_vector). Таким образом, любое точечное преобразование будет выражаться системой линейных уравнений, выраженной в обозначении векторного столбца следующим образом:

[P ‘] = M. [P], где M = M1.M2.M3

Это означает, что первое преобразование, которое применяется к точкам, выраженным вектором [P], — это M3, затем M2 и, наконец, M1.

Отвечая на ваш вопрос, результирующий угол Эйлера будет равен ZXY, если преобразование вращения Z является последней матрицей, которую вы пишете для формирования умножения матриц.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]