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

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

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

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

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

Ответы [ 2 ]

10 голосов
/ 09 января 2012

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

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

q2 = r*q1
q2*q1' = r

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

5 голосов
/ 10 января 2012

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

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

http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/arithmetic/index.htm

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

...