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

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

В уравнениях то, что я делаю, когда я поворачиваюсь от первого к другому, выглядит следующим образом: q2 = r * q1

Однако теперь r неизвестно. Учитываются ли здесь и правила алгебры? Если это так, я бы в конечном итоге разделил кватернион на другой, чему я не могу найти хорошего объяснения в Интернете.

Я использую программу под названием Game Maker


person Sindre    schedule 08.01.2012    source источник
comment
В StackOverflow вежливо выбирать ответ, он помечает вопрос как отвеченный и награждает человека, давшего лучший ответ.   -  person Ryan The Leach    schedule 13.05.2015


Ответы (2)


Чтобы «поделиться» с кватернионом, вы инвертируете его так, чтобы это было противоположное вращение. Чтобы инвертировать кватернион, вы отрицаете либо компонент w, либо (x, y, z) компоненты, но не оба, так как это оставит вас с тем же кватернионом, с которого вы начали (полностью инвертированный кватернион представляет тот же поворот).

Затем помните, что кватернионы не коммутативны. Так:

q2 = r*q1
q2*q1' = r

Где q1' — перевернутый кватернион, и его нужно умножить на правую часть q2, чтобы получить правильный результат.

person JCooper    schedule 09.01.2012
comment
О, точно, спасибо за ответы! Я не знал, что инвертирование и сопряжение кватерниона — это одно и то же. Это решает все! - person Sindre; 10.01.2012
comment
Примечание. Сопряжение такое же, как и обратное для единичных кватернионов (т.е. кватернионов длины 1). Здесь это нормально, поскольку кватернионы вращения являются единичными кватернионами, но я думаю, важно указать, что это особый случай. - person Medo42; 13.01.2012

Вам следует взглянуть на эту страницу (euclideanspace), она действительно интересен для самообучения и понимания кватернионов.

Здесь у вас есть арифметика для кватернионов, а также калькулятор, который выполняет операции за вас:

http://www.euclideanspace.com/maths/алгебра/realNormedAlgebra/quaternions/arithmetic/index.htm

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

person Jav_Rock    schedule 10.01.2012
comment
Очень полезная страница, спасибо за ссылку! - person Sindre; 10.01.2012