Как преобразовать углы Эйлера в векторы вперед, вверх, вправо

Мне нужна функция, которая с учетом Yaw, Pitch и Roll может производить векторы Front (или Looking At), Right и Up в «мировых координатах».

В моем конкретном мировом пространстве, начиная с начала координат (0,0,0), X положителен влево, Z положительно удаляется от зрителя / источника, а Y положительно идет вверх.

Например, учитывая ... (углы в градусах)

yaw = 0, pitch = 0, roll = 0, ожидаемый результат:

передний = (0.0,0.0,1.0)справа = (-1,0,0,0,0,0)вверх = (0,0,1,0,0,0)

yaw = 90, pitch = 0, roll = 0, ожидаемый результат:

передний = (1.0,0.0,0.0)право = (0,0,0,0,1,0)вверх = (0,0,1,0,0,0)

yaw = 0, pitch = 90, roll = 0, ожидаемый результат:

передний = (0.0,1.0,0.0)справа = (-1,0,0,0,0,0)вверх = (0,0,0,0, -1,0)

yaw = 0, pitch = 0, roll = 90, ожидаемый результат:

передний = (0.0,0.0,1.0)право = (0,0,1,0,0,0)вверх = (1,0,0,0,0,0)

Язык, на котором я работаю, - это C ++, и я с удовольствием воспользуюсь glm для решения этой проблемы, если в этом есть смысл. Если я смогу добраться туда через кватернионы, я тоже справлюсь с этим решением, поскольку нашел другие учебные пособия, в которых описывается, как получить кватернионы из углов Эйлера.

Ответы на вопрос(1)

Ваш ответ на вопрос