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

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

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

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

2 ответа

Решение

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

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

Подумай об этом так

QInitial * QTransition = QFinal

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

QTransition = QFinal * QInitial^{-1}

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

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