Когда у меня есть два кватерниона ориентации, как мне найти кватернион вращения, необходимый для перехода от одного к другому?

Я использую кватернионы в своей игре, и мне интересно, как, имея два ориентационных кватерниона, я могу получить вращательный кватернион, необходимый для перехода от первого, 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

Надеюсь, поможет.

Другие вопросы по тегам