Когда мне нужно использовать кватернионы? - PullRequest
19 голосов
/ 03 декабря 2009

Я много лет выполняю 2D и 3D операции, включая графику, и никогда не использовал кватернионы, поэтому я не чувствую их. Я знаю, что они могут использоваться для определенных операций, которые являются трудными в углах Эйлера, а также что они могут использоваться для нахождения вращения, необходимого для наилучшего соответствия одному набору координат (X1, X2 ... XN, X = (xyz)) на другой (X1 ', X2' ... XN ').

Есть ли места, где кватернионы необходимы? И есть ли места, где они делают решения более элегантными или более эффективными?

Ответы [ 6 ]

17 голосов
/ 03 декабря 2009

Они занимают меньше места в памяти, чем матрицы вращения, и они более эффективны, чем матричные представления и представления углов / осей.

Также:

  • Очень легко интерполировать между двумя кватернионами, что полезно для плавного движения камеры и т. Д.
  • Единица нормализации кватернионов с плавающей запятой страдает от меньшего количества дефектов округления, чем матричные представления.
3 голосов
/ 02 августа 2013

Кватернионы имеют много преимуществ по сравнению с углами Эйлера и часто предпочтительнее для трехмерных вращений:

  • Более простая (и четко определенная) интерполяция между кватернионами (или: ориентациями): результирующее движение имеет постоянную угловую скорость вокруг одной оси, что часто эстетически более приятно. Этот процесс называется "slerp" и важен для смешивания анимации / вращения. Кроме того, кватернионная интерполяция не страдает от карданных замков.
  • Их легко перенормировать.

Недостатки:

  • Основным недостатком является то, что им требуется немного больше математики и они менее интуитивны, чем углы Эйлера / Кардана.
  • По сравнению с матрицами аффинного преобразования кватернионы содержат только вращение, но не переводят и не масштабируют.
3 голосов
/ 04 декабря 2009

С кватернионами вы также решаете проблему блокировки карданного подвеса. И с ними легче работать, когда вы хотите выполнить произвольные повороты.

2 голосов
/ 12 марта 2014

Плюсы кватернионов

  1. Быстрое умножение
  2. Быстрое преобразование в / из матрицы
  3. Избегайте дополнительных (из расчета) шумов (масштаб, сдвиг) и представляйте чистое вращение
  4. Простая вращательная интерполяция, в настраиваемом случае для анимации в реальном времени может использоваться линейная интерполяция.
  5. Доступны некоторые хитрые операции, быстрая интеграция вращения, разложение по крутильным колебаниям

Cons.

  1. Преобразование вектора происходит не так быстро, как с матрицей 3х3.
  2. Содержит 4 скаляра, но для компактного представления вращения можно использовать только 3.
1 голос
/ 03 декабря 2009

Преимущество кватернионов перед матрицами заключается не только в более быстром вычислении, но главным образом потому, что матричное представление последовательных вращений вокруг произвольных углов в конечном итоге уступает ужасным ошибкам округления с плавающей точкой и больше не представляет правильные аффинные вращения. «Восстановление» матрицы вращения вычислительно дороже, чем нормализация кватерниона. Поэтому кватернионы следует выбирать по матрицам чистого вращения.

0 голосов
/ 11 марта 2014

По сравнению с углами Эйлера их проще составить и избежать проблемы блокировки карданного подвеса.

По сравнению с матрицами вращения они более численно устойчивы, а представление (4 числа) более компактно.

...