Нахождения углов Эйлера из вектора направления

112
30 января 2022, 20:40

Моя программа из углов Эейлера, которые хранятся в виде трехкомпонентного вектора A(Ax, Ay, Az), получает матрицу поворота порядка ZXY (умножение матриц идет с конца). Далее умножает эту матрицу на единичный вектор O(1, 0, 0), получая при этом вектор направления D. Формулой это можно записать так: D = (Z(Az) * (X(Ax) * Y(Ay))) * O

У меня реализована данная функция, которая получает единичный вектор направления из углов Эйлера, но мне нужна еще и функция, которая может получить, наоборот, углы из вектора направления. В векторной алгебре я не силен, поэтому ума не приложу как преобразовать вышенаписанное уравнение, чтобы выразить от туда вектор A. Как это сделать? Если что, система координат у меня правая, так как работаю с opengl

Answer 1

Из вектора направления D нельзя однозначно получить углы Эйлера. Можно получить heading/yaw- проекцию на OXY, pitch - угол между heading и D, но roll - увы.

(как наклонены крылья самолёта - из направления фюзеляжа не понять, нужен ещё опорный вектор - например, up - вектор направления крыши/киля)

READ ALSO
QT SIGSEGV при создании окна из трея на Ubuntu

QT SIGSEGV при создании окна из трея на Ubuntu

Коротко говоря - у меня есть иконка в трееПри клике по пункту меню этой иконки я хочу создавать и отображать окно, однако получаю SIGSEGV при отображении...

125
Что делает макрос LOWORD?

Что делает макрос LOWORD?

Потихоньку погружаюсь в программирование на WinAPI, и некоторые макросы меня немного озадачиваютСреди них макрос LOWORD(I)

259
Размер объекта класса

Размер объекта класса

Почему объект класса B=16, а объект A=4? Как влияет виртуальная функция на размер?

107
Псевдоним шаблона в самом шаблоне класса

Псевдоним шаблона в самом шаблоне класса

Рассмотрим класс итератора для массивов stdext::checked_array_iterator, который определен в заголовочном файле <iterator>Экземпляр класса можно использовать...

89