У меня есть система координат XYZ, где я поворачиваюсь на углы Эйлера, начиная с X, затем Y, затем Z. Мне нужно преобразовать это вращение в эквивалентные ему вращения XYZ, но относительно другой системы координат, как указано кватернионом. ориентации. К сожалению, я застрял.
Нет простого способа сделать это, поскольку углы Эйлера только в их бесконечно малой версии совместимы с произведением матриц вращения.
Самый простой способ в данных условиях — преобразовать существующие углы в кватернион вращения, умножить два кватерниона и извлечь новые углы Эйлера из произведения.
Полезная ссылка, собирающая многие, если не все оси вращения в кватернионные и обратные преобразования: 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)
Теперь вы можете снова использовать формулы на веб-сайте.