Некоторое время я (несколько слепо) использовал кватернионы для вращения в симуляции твердого тела в физике, но недавно начал путаться в том, как обычно определяются вращения кватернионов и как я это делаю (на основе книги Physics для разработчиков игр).
В книге у вас есть угловая скорость angVel и шаг по времени dt, а также начальная ориентация.
Это делается следующим образом
ориентация + = 0,5 * ориентация * угол * dt
где умножение кватерниона на вектор выполняется сначала путем преобразования вектора xyz в кватернион xyz, 0
Это работает, но во всех остальных случаях вместо этого используется кватернион, который определяет интегрированный по времени angVel по dt, а затем умножает его на ориентацию. По сути, он преобразует angVel * dt в поворот (что имеет смысл), который затем применяется к исходной ориентации посредством умножения, как показано здесь с улучшенным синтаксисом вектор-угловой-скорости-3-к-единице-кватернион-ориентация
Мой вопрос в том, что 0,5 * кватернион * вектор * скаляр концептуально есть в приведенном выше и что такое добавление этого результирующего кватерниона к моей ориентации, учитывая, что вы обычно умножаете, а не складываете, вращать.