"Разница" между двумя кватернионами
Я работаю в Ogre, но это общая проблема кватерниона.
У меня есть объект, к которому я сначала применяю кватернион Q1 вращения. Позже я хочу сделать так, как будто я изначально повернул объект другим кватернионом Q2.
Как рассчитать кватернион, который примет объект, уже повернутый Q1, и выровнять его так, как если бы все, что я делал, применяло Q2 к начальной/стандартной ориентации? Я смотрел на (s) lerping, но я не уверен, что это справедливо только для ориентации, а не для вращений?
Ответы
Ответ 1
Похоже, вы хотите, чтобы обратный Q1 раз Q2. Преобразование по обратному Q1 приведет к повороту объекта обратно к исходному кадру (начальная ориентация, как вы говорите), а затем преобразование Q2 повернет его в новую ориентацию.
Обратите внимание, что стандартное определение кватерниона применяет преобразования в порядке умножения справа налево, поэтому вы должны вычислить это как Q = Q2 * Q1 ^ {- 1}.
Ответ 2
Подумайте об этом таким образом
QInitial * QTransition = QFinal
решают для QT-переходов путем умножения обеих сторон на QInitial ^ {- 1} (^ {- 1}, являющегося сопряженным с кватернионом)
QTransition = QFinal * QInitial^{-1}
Это просто так легко.
- Обратите внимание на @Dan Park - если вы не согласны с моей математикой, отправьте ответ на мой ответ, не меняйте математику. Насколько я знаю, это правильно.