Господа, данная публикация будет посвящена вращению объектов и представлению этого вращения в 3D-пространстве. Тема не самая сложная, просто есть нюансы, которые могут многое затруднять. Объяснять я буду на примере GLM C++. Буквально неделю назад эта статья стала бы для меня спасением и мне не пришлось бы разбираться в теме настолько, чтоб самому ее писать, но вот она есть, значит что внятного материала я не обнаружил. Начну я с углов Эйлера, которые чаще всего используются и от них никуда не деться, ведь в кватернионах они тоже есть.
Данных углов всего 3: yaw, pitch и roll. Традиционно все показывают это на примере самолета: Я такие названия не люблю, так что буду называть углы названием оси, вокруг которой происходит вращение XYZ. Отталкиваться будем от того, что каждый из этих углов применяется в матрицах вращения, и их порядок категорически принципиален. Есть ряд традиционных порядков, но я использовал последовательность YXZ, потому что нашел ее раньше остальных. Допустим, что е