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

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

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

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


person Mr. Boy    schedule 18.11.2009    source источник
comment
как насчет того, чтобы отметить некоторые ответы как правильные? также посмотрите на переполнение математики ... (Quaterions сводят меня с ума, также, кстати, и sry, я не могу ответить)   -  person John Nicholas    schedule 18.11.2009


Ответы (2)


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

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

person Jim    schedule 18.11.2009

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

QInitial * QTransition = QFinal

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

QTransition = QFinal * QInitial^{-1}

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

  • Примечание для @Dan Park - если вы не согласны с моей математикой, отправьте ответ на мой ответ, не меняйте математику. Насколько я знаю, это правильно.
person fbl    schedule 07.12.2010
comment
Это возрождает старую тему, но почему это правильно? Я могу проверить, что это код, но вращение матрицы работает наоборот. Например. Если бы я хотел удалить MInitia, я бы умножил обе стороны на MInitial ^ -1 слева, так как MInitial ^ -1 * MInitial = Midentity. - person Johan Holtby; 14.02.2015
comment
Умножение кватернионов не является обратным, как умножение матриц. Я не могу найти надежного объяснения в сети, но я знаю, что это в Quaternions and Rotation Sequences, написанном Койперсом. (amazon.com/) - Я я не говорю, что вы должны пойти купить эту книгу, чтобы доказать это себе (даже если это хорошая книга), но именно здесь я помню, как узнал о разнице между порядками операций Matrix и Quaternion. - person fbl; 15.02.2015
comment
Спасибо за ответ. Если я когда-нибудь снова застряну, я куплю эту книгу, но пока я просто счастлив, что она работает. :) - person Johan Holtby; 15.02.2015