Подтвердить что ты не робот

"Разница" между двумя кватернионами

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Подумайте об этом таким образом

QInitial * QTransition = QFinal

решают для QT-переходов путем умножения обеих сторон на QInitial ^ {- 1} (^ {- 1}, являющегося сопряженным с кватернионом)

QTransition = QFinal * QInitial^{-1}

Это просто так легко.

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