Представление угла оси и Углы Эйлера - это два разных способа кодирования вращения. Для вращений по каноническим осям (X, Y, Z) представления очень похожи и могут привести к ложному выводу, что преобразование тривиально. Например, Угол Оси (45,(1,0,0))
- это просто Углы Эйлера (45,0,0)
. Однако, для более общих осей, преобразование не всегда так очевидно.
Добавление к путанице состоит в том, что имя Euler Vector используется, когда мы создаем один трехмерный вектор из Оси- Угловое представление с использованием длины вектора для кодирования угла поворота. Например, (45,(1,0,0))
может быть закодировано как 45*(1,0,0)
. Однако вектор Эйлера не совпадает с вектором, содержащим углы Эйлера, по той же причине, что представление угла оси отличается от углов Эйлера.
Наконец, как указано в другом ответе Амадея, glm Framework требует, чтобы вектор входной оси был нормализован. Нормализация этого вектора даст ожидаемый результат.