"Разница" между двумя кватернионами
Я работаю в Огре, но это общая проблема кватернионов.
У меня есть объект, к которому я применяю кватернион вращения 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 - если вы не согласны с моей математикой, пожалуйста, оставьте ответ на мой ответ, не меняйте математику. Насколько я знаю, это правильно.