«Разница» между двумя кватернионами - PullRequest
20 голосов
/ 18 ноября 2009

Я работаю в Огре, но это общая проблема кватернионов.

У меня есть объект, к которому я изначально применяю кватернион вращения Q1. Позже я хочу сделать это так, как будто я сначала повернул объект другим кватернионом Q2.

Как рассчитать кватернион, который возьмет объект, уже повернутый Q1, и выровняет его так, как если бы я только применил Q2 к начальной / стандартной ориентации? Я смотрел на lerping, но я не уверен, что это действительно только для ориентаций , а не вращений ?

Ответы [ 2 ]

31 голосов
/ 18 ноября 2009

Звучит так, как будто вы хотите получить обратную величину от Q1 до Q2. Преобразование с помощью инверсии Q1 повернет объект обратно в исходный кадр (как вы говорите, в начальной ориентации), а затем преобразование с помощью Q2 повернет его в новую ориентацию.

Обратите внимание, что стандартное определение кватерниона применяет преобразования в порядке умножения справа налево, поэтому вам нужно вычислить это как Q = Q2 * Q1 ^ {- 1}.

22 голосов
/ 07 декабря 2010

Думайте об этом так

QInitial * QTransition = QFinal

решить для QTransition, умножив обе стороны на QInitial ^ {- 1} (^ {- 1} - кватернионный сопряженный)

QTransition = QFinal * QInitial^{-1}

Это так просто.

  • примечание к @Dan Park - если вы не согласны с моей математикой, пожалуйста, оставьте ответ на мой ответ, не меняйте математику. Насколько я знаю, это правильно.
...