Как отрегулировать угол Эйлера кватернионом
Я ищу способ вернуть угол Эйлера, который был повернут кватернионом.
Я понимаю, что извлечение высоты тона и рыскания из кватерниона в лучшем случае проблематично, но если бы я мог, то просто добавил бы его значения к своим, чтобы получить результирующий угол Эйлера.
Я мог бы также преобразовать мой угол Эйлера в кватернион и затем объединить их, но тогда у меня остался бы кватернион, который я не могу преобразовать в эйлер.
Я признаю, что я борюсь с кватернионами в лучшие времена, поэтому любая помощь будет хорошо принята.
Для ясности мне нужно только вернуть угол Эйлера, все остальные вычисления могут быть выполнены с кватернионами, если требуется.
Я использую Bullet Physics, Direct X, C++
Благодарю.
2 ответа
Вы не можете комбинировать углы Эйлера с углами Эйлера или углы Эйлера с кватернионом напрямую.
Вы должны преобразовать вращение в представление, позволяющее преобразовать композицию. Это матрица вращения или кватернион.
После объединения вращений конвертируем обратно в углы Эйлера.
PS Эйлеровы углы вообще не полезны для представления вращения. Он может использоваться только для ручного ввода оборотов.
Можно конвертировать туда и обратно, но вы должны соблюдать порядок, в котором вы применяете другой угол Эйлера, иначе вы получите неприятный результат.
Я сам этого не делал, и, как я сказал, minorlogic лучше придерживаться матрицы вращения / кватернионов.
вот хорошая ссылка
https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
где q0,q1,q2,q3 обозначает w,x,y,z. На этом сайте они предполагают, что
где самолет вначале поворачивает на разворот во время руления на взлетно-посадочную полосу, затем наклоняется во время взлета и, наконец, разворачивается в воздухе.