Повернуть трехмерные углы Эйлера в систему координат на основе кватернионной ориентации Переполнение стека

У меня есть система координат XYZ, где я поворачиваюсь на углы Эйлера, начиная с X, затем Y, затем Z. Мне нужно преобразовать это вращение в эквивалентные ему вращения XYZ, но относительно другой системы координат, как указано кватернионом. ориентации. К сожалению, я застрял.

Оси координат

0

Решение

Нет простого способа сделать это, поскольку углы Эйлера только в их бесконечно малой версии совместимы с произведением матриц вращения.

Самый простой способ в данных условиях — преобразовать существующие углы в кватернион вращения, умножить два кватерниона и извлечь новые углы Эйлера из произведения.


Полезная ссылка, собирающая многие, если не все оси вращения в кватернионные и обратные преобразования: http://www.euclideanspace.com/maths/geometry/rotations/conversions/eulerToQuaternion/index.htm


Обозначим через a, b, c половину углов поворота вокруг осей X, Y, Z, а через (ca, sa) и т. Д. Соответствующие пары косинус-синус. Тогда вращение вокруг оси X с углом 2а соответствует кватерниону

ca+sa*i

где i, j, k — базисные кватернионы в направлениях x, y, z. Вращение Rz (2c) * Ry (2b) * Rx (2a) соответствует кватерниону

r=(cc+sc*k)*(cb+sb*j)*(ca+sa*i)

Если q — это другой единичный кватернион, то повернутый базис для вращения, соответствующего q, равен qiq ‘, qiq’, qkq ‘, где q’ — сопряжение q. Цель состоит в том, чтобы представить r с вращениями оси в этой новой основе. Если новые половинные углы u, v, w, то нужно решить

r=(cw+sw*qkq')*(cv+sv*qjq')*(cu+su*qiq')

для этих полууглов, что упрощается из-за qq ‘= 1 = q’q к

q'rq=(cw+sw*k)*(cv+sv*j)*(cu+su*i)

Теперь вы можете снова использовать формулы на веб-сайте.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector