Кватернионы и матрицы преобразований


Скажите мне, если я ошибаюсь.

Я начинаю использовать кватернионы. Используя матрицу вращения 4 x 4 (как используется в OpenGL), я могу вычислить матрицу представления модели, умножая текущее представление модели на матрицу вращения. Матрица вращения получается из кватерниона.

Кватернион-это вектор направления (даже не нормированный) и угол поворота. Результирующее вращение зависит от модуля вектора направления и компонента w кватерниона.

Но почему я должен использовать кватернионы вместо обозначения оси/угла Эйлера? Последнее проще визуализировать и управлять...

Всю информацию, которую я нашел, можно было бы синтезировать с помощью этой замечательной статьи:

Http://en.wikipedia.org/wiki/Rotation_representation

6 2

6 ответов:

Почему лучше использовать кватернионы, объясняется в статье.

  • более компактное, чем представление DCM, и менее подверженное ошибкам округления
  • Элементы кватерниона непрерывно изменяются на единичной сфере в R4 (обозначается S3) по мере изменения ориентации, избегая прерывистых скачков (присущих трехмерным параметризациям), это часто называют карданным замком.
  • выражение DCM в терминах параметров кватерниона не включает в себя тригонометрические функции
  • очень просто объединить два отдельных вращения, представленных в виде кватернионов, используя кватернионное произведение

В отличие от углов Эйлера, кватернионы не страдают от карданного замка.

Кватернионы обычно используются для вычислительной простоты - гораздо проще (и быстрее) делать такие вещи, как составление преобразований при использовании кватернионов. Чтобы процитировать страницу Википедии, на которую вы ссылаетесь,

Совмещение двух последовательных вращений, каждый из них представлен осью Эйлера и угол, не прямолинейен, и в факт не удовлетворяет закону векторное сложение, которое показывает, что конечные вращения на самом деле не являются вообще никаких векторов. Лучше всего использовать то матрица Косинуса направления (DCM), или тензор, или кватернионная нотация, рассчитайте продукт, а затем преобразуйте обратно в ось и угол Эйлера.

Они также не страдают от проблемы, общей для формы оси/угла, карданного замка.

Я не согласен с тем, что кватернионы легче визуализировать, но основная причина их использования заключается в том, что легко объединить вращения без "ползучести матрицы".

Кватернионы легче визуализировать, управлять и создавать в сценариях, где вы хотите вращаться вокруг определенной оси, которую можно легко вычислить. Определить один угол поворота гораздо проще, чем разложить поворот на несколько углов.

Поправки к ОП: вектор представляет собой ось вращения, а не направление, а компонент вращения-Косинус полуугла, а не сам угол.

  • Как уже упоминалось, кватернионы не страдают от джимбл блокировка.
  • для данного вращения существует ровно одно нормализованное представление кватерниона.
    • может быть несколько, казалось бы, несвязанных значений оси/угла, которые приводят к одному и тому же вращению.
  • вращения кватернионов можно легко комбинировать.
    • чрезвычайно сложно вычислить обозначение оси / угла, которое является суммированием двух других осей / углов вращения.
  • Числа с плавающей запятой имеют более высокую степень точности при представлении значений между 0.0 и 1.0.
Короткий ответ состоит в том, что обозначение оси/угла изначально может показаться наиболее разумным представлением, но на практике кватернионы облегчают многие проблемы, которые представляет собой обозначение оси/угла.