Когда у меня есть два кватерниона ориентации, как мне найти кватернион вращения, необходимый для перехода от одного к другому?
Я использую кватернионы в своей игре, и мне интересно, как, имея два ориентационных кватерниона, я могу получить вращательный кватернион, необходимый для перехода от первого, q1, ко второму, q2. Я самоучка, поэтому в моем словаре могут отсутствовать очевидные решения.
В уравнениях то, что я делаю, когда я поворачиваюсь от первого к другому, выглядит следующим образом: q2 = r * q1
Однако сейчас г неизвестно. Здесь учитываются и правила алгебры? Если это так, я бы в итоге разделил кватернион на другой, что я не могу найти хорошего объяснения в Интернете.
Я использую программу под названием Game Maker
2 ответа
Чтобы "разделить" кватернион, вы инвертируете его так, чтобы это было противоположное вращение. Чтобы инвертировать кватернион, вы отрицаете либо компонент w, либо компоненты (x, y, z), но не то и другое, поскольку в результате у вас останется тот же кватернион, с которого вы начали (полностью отрицательный кватернион представляет то же вращение).
Затем помните, что кватернионы не коммутативны. Так:
q2 = r*q1
q2*q1' = r
Где q1' - инвертированный кватернион, и его нужно умножить на правой стороне q2, чтобы получить правильный результат.
Вы должны взглянуть на эту страницу (евклидово пространство), она действительно интересна для самообучения и понимания кватернионов.
Здесь у вас есть арифметика для кватернионов, а также калькулятор, который выполняет операции для вас:
http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/arithmetic/index.htm
Надеюсь, поможет.