Подтвердить что ты не робот

Почему кватернионы используются для вращения?

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

В физике есть очень веские причины, по которым мы не используем кватернионы (несмотря на странную историю, которая изредка рассказывала о Гамильтоне/Гиббсе и т.д.). Физика требует, чтобы наши описания имели хорошее аналитическое поведение (это имеет точно определенное значение, но некоторыми техническими способами, которые выходят далеко за рамки того, что учили в обычных классах, поэтому я не буду вдаваться в подробности). Оказывается, что кватернионы не имеют такого приятного поведения, и поэтому они не полезны, а векторы/матрицы выполняются, поэтому мы их используем.

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

В общем случае нам просто нужно отобразить точку X = (x, y, z) в новую точку X '= (x', y ', z') с учетом ограничения X 2= X ' 2. И есть много вещей, которые делают это.

Наивный способ состоит в том, чтобы просто нарисовать треугольники, которые это определяет и использовать тригонометрию, или использовать изоморфизм между точкой (x, y, z) и вектором (x, y, z) и функцией f (X) = X 'и матрицу MX = X', или используя кватернионы, или проецирование составляющих старого вектора вдоль нового с использованием некоторого другого метода (x, y, z) T. (A, b, c) (x ', y', z ') и т.д.

С математической точки зрения эти описания эквивалентны в этой настройке (как теорема). Все они имеют одинаковое количество степеней свободы, одинаковое количество ограничений и т.д.

Итак, почему кватернионы, по-видимому, предпочитают над векторами?

Обычные причины, по которым я вижу, - это не блокировка карданного вала, или числовые проблемы.

Аргумент блокировки карданных не кажется странным, так как это только проблема углов Эйлера. Это также является только координатной задачей (как и сингулярность при г = 0 в полярных координатах (якобиан теряет ранг)), что означает, что это только локальная задача и может быть разрешено путем переключения координат, вращающихся из вырождения, или с использованием двух перекрывающихся систем координат.

Я менее уверен в числовых проблемах, так как я не знаю подробно, как будут реализованы обе эти (и любые альтернативы). Я читал, что повторная нормализация кватерниона проще, чем для матрицы вращения, но это справедливо только для общей матрицы; вращение имеет дополнительные ограничения, которые тривиализуют это (которые встроены в определение кватернионов) (на самом деле это должно быть верно, поскольку они имеют одинаковое количество степеней свободы).

Итак, в чем причина использования кватернионов над векторами или другими альтернативами?

4b9b3361

Ответ 1

Замкнутый замок - одна из причин, хотя, как вы говорите, это только проблема с углами Эйлера и легко разрешима. Углы Эйлера все еще используются, когда память вызывает беспокойство, поскольку вам нужно хранить только 3 числа.

Для кватернионов по сравнению с матрицей вращения 3x3 кватернион имеет преимущество в размере (4 скаляра против 9) и скорости (умножение кватернионов намного быстрее, чем умножение матрицы 3x3).

Обратите внимание, что все эти представления вращений используются на практике. Углы Эйлера используют наименьшую память; матрицы используют больше памяти, но не страдают от Gimbal lock и обладают хорошими аналитическими свойствами; и кватернионы поражают хороший баланс обоих, будучи легкими, но свободными от блокировки в Гимбале.

Ответ 2

В физике есть очень веские причины, по которым мы не используем кватернионы (несмотря на странную историю, которая изредка рассказывала о Гамильтоне/Гиббсе и т.д.). Физика требует, чтобы наши описания имели хорошее аналитическое поведение (это имеет точно определенное значение, но некоторыми техническими способами, которые выходят далеко за рамки того, что учили в обычных классах, поэтому я не буду вдаваться в подробности). Оказывается, что кватернионы не имеют такого приятного поведения, и поэтому они не полезны, а векторы/матрицы выполняются, поэтому мы их используем.

Ну, я тоже физик. И есть ситуации, когда кватернионы просто качаются! Например, сферические гармоники. У вас два атома рассеяния, обмен электроном: что такое орбитальный перенос спина? С кватернионами это просто умножение, то есть суммирование показателей базовых функций SH, выраженных в виде кватернионов. (Получение полиномов Лежандра в кватернионную нотацию немного утомительно).

Но я согласен, что они не универсальный инструмент, и особенно в механике твердого тела они были бы очень громоздкими в использовании. Тем не менее, чтобы привести Бертран Рассел, ответьте на вопрос ученика, сколько математики должно знать физик: "Как можно больше!"

В любом случае: почему мы любим кватернионы в компьютерной графике? Потому что у них есть несколько привлекательных свойств. Во-первых, они могут легко интерполировать их, что важно, если вы оживляете вращающиеся вещи, например конечности вокруг сустава. С кватернионом это просто скалярное умножение и нормализация. Выражая это с помощью матрицы, необходимо оценить sin и cos, а затем построить матрицу вращения. Тогда умножение вектора с кватернионом по-прежнему дешевле, поскольку происходит полное умножение векторной матрицы, но еще дешевле, если потом добавить перевод. Если вы рассматриваете систему скелетной анимации для человеческого персонажа, где нужно оценить много переводов/вращений для большого количества вершин, это имеет огромное влияние.

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

Ответ 3

Аргумент блокировки карданных не кажется странным, так как это только проблема углов Эйлера. Это также является только координатной задачей (как и сингулярность при г = 0 в полярных координатах (якобиан теряет ранг)), что означает, что это только локальная задача и может быть разрешено путем переключения координат, вращающихся из вырождения, или с использованием двух перекрывающихся систем координат.

Многие 3D-приложения, например, используют углы Эйлера для определения ориентации объекта. В частности, для летных симов они представляют собой теоретически полезный способ сохранения ориентации таким образом, который легко модифицируется.

Вы также должны знать, что такие вещи, как "коммутация координат, вращение из вырождения или использование двух перекрывающихся систем координат", требуют усилий. Усиление означает код. И код означает производительность. Потеря производительности, когда вам это не нужно, не очень хорошо для многих 3D-приложений. В конце концов, что должно быть достигнуто всеми этими трюками, если только использование кватернионов даст вам все, что вам нужно.

Я менее уверен в числовых проблемах, так как я не знаю подробно, как будут реализованы обе эти (и любые альтернативы). Я читал, что повторная нормализация кватерниона проще, чем для матрицы вращения, но это справедливо только для общей матрицы; вращение имеет дополнительные ограничения, которые тривиализуют это (которые встроены в определение кватернионов) (на самом деле это должно быть верно, поскольку они имеют одинаковое количество степеней свободы).

Числовые проблемы возникают при работе с несколькими последовательными вращениями ориентации. Представьте, что у вас есть объект в космосе. И каждый тайм-лист, вы применяете небольшое изменение рыскания к нему. После каждого изменения вам необходимо изменить нормализацию ориентации; в противном случае проблемы с точностью будут ползти и вкручиваются.

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

Это будет не так быстро, как нормализация 4D-вектора. То, что кватернионы используют для нормализации после последовательных поворотов.

Нормализация кватернионов дешева. Даже стандартная нормализация ротационной матрицы не будет столь дешевой. Опять же, производительность имеет значение.

Также существует и другая проблема, с которой матрицы не справляются: интерполяция между двумя разными ориентациями.

При работе с 3D-символом вы часто имеете серию преобразований, определяющих расположение каждой кости в персонаже. Эта иерархия костей представляет характер в конкретной позе.

В большинстве систем анимации для вычисления позы для персонажа в определенный момент времени интерполяция между преобразованиями. Это требует интерполяции соответствующих преобразований.

Интерполяция двух матриц... нетривиальна. По крайней мере, если вы хотите что-то похожее на матрицу вращения в конце. В конце концов, цель интерполяции состоит в том, чтобы создать что-то частично между двумя преобразованиями.

Для кватернионов все, что вам нужно, это 4D-лайпер, за которым следует нормализация. Это все: взять два кватерниона и линейно интерполировать компоненты. Нормализовать результат.

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

Ответ 4

Мнение: кватернионы хороши.

Матрица вращения: Незначительный недостаток: умножение матриц ~ в 2 раза медленнее кватернионов. Малое преимущество: умножение матрицы-вектора в 2 раза быстрее и велико. Огромный недостаток: нормализация! Ghram-Shmit асимметричен, что не дает более точного ответа более высокого порядка при выполнении дифференциальных уравнений. Более сложные методы очень сложны и дороги.

Ось (угол = длина оси) Малое преимущество: Маленькое. Умеренный недостаток: умножение и применение к вектору медленное с помощью триггера. Умеренный недостаток: северо-полюсная сингулярность длиной = 2 * pi, так как все направления оси ничего не делают. Больше кода (и отладки), чтобы автоматически перемасштабировать его, когда он приближается к 2pi.

Ответ 5

В общем случае нам просто нужно отобразить точку X = (x, y, z) в новую точку X '= (x', y ', z') с условием, что X ^ 2 = X ' ^ 2. И есть много вещей, которые делают это.

Мы абсолютно не просто хотим этого. Существует очень важная тонкость, которую много людей пропускают. Конструкция, о которой вы говорите (нарисуйте треугольники и используйте триггер и т.д.), Правильно повернет один вектор в другой. Но есть бесконечное число поворотов, которые сделают это. В частности, я могу прийти после того, как вы сделали свое вращение, а затем поверните всю систему вокруг вектора X. Это не изменит положение X 'вообще. Сочетание вашего вращения и мины эквивалентно другому вращению (поскольку ротации образуют группу). В общем, вы должны иметь возможность представлять любое такое вращение.

Оказывается, вы можете сделать это только с помощью вектора. (То, что ось-угол представления поворотов.) Но объединение поворотов в представлении с осевым углом затруднено. Кватернионы облегчают, наряду с множеством других вещей. В принципе, кватернионы имеют все преимущества других представлений, и ни один из недостатков. (Хотя я признаю, что могут быть конкретные приложения, для которых может быть лучше другое другое представление.)

Ответ 6

Обычные причины, о которых я вижу, - это не gimble lock или числовые проблемы.

И это веские причины.

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

Кроме того, некоторые формы интерполяции становятся приятными и удобными, например SLERP.

... или используя две перекрывающиеся системы координат.

С точки зрения эффективности, почему ваше решение лучше?

Я мог бы продолжать, но кватернионы - всего лишь один из возможных инструментов для использования. Если они не соответствуют вашим потребностям, не используйте их.

Ответ 7

Следует иметь в виду, что все свойства, связанные с вращением, не являются по-настоящему свойствами Кватернионов: они являются свойствами Параллелей Эйлера-Родригаса, который является фактической 4-элементной структурой, используемой для описания 3D-вращения.

Их связь с кватернионами обусловлена ​​только статьей Кэли "Об определенных результатах, связанных с кватернионами", где автор наблюдает корреляцию между умножением Кватерниона и комбинацией параметров Эйлера-Родрига. Это позволило применить аспекты теории Кватерниона к представлению поворотов и особенно к интерполяции между ними.

Здесь вы можете прочитать статью: https://archive.org/details/collmathpapers01caylrich. Но в то время не было никакой связи между кватернионами и ротацией, и Кэли был довольно удивлен, увидев, что было:

Фактически формулы являются именно теми, которые даны для такого преобразования М. Олинде Родригес Лиувилл, т. v., "Des lois géométriques qui régissent les déplacements d'un système solide [...]" (или Comb. Math. Journal, т. iii, стр. 224 [6]). Было бы интересно вопрос для учета, априори, для появления этих коэффициентов здесь.

Тем не менее, нет ничего внутреннего в отношении кватернионов, который дает какую-либо выгоду для вращения. Кватернионы не избегают карданного замка; Параметризация Эйлера-Родригаса. Очень немногие компьютерные программы, которые выполняют ротацию, вероятно, действительно реализуют типы Quaternion, которые являются первоклассными сложными математическими значениями. К сожалению, непонимание роли кватернионов, похоже, просочилось куда-то, что привело к тому, что несколько разочарованных учеников графики изучили детали сложной математики с несколькими мнимыми константами, а затем были озадачены тем, почему это решает проблемы с вращением.

Ответ 8

По словам Дэвида Хестенеса Физики и Инженеры не знают, как размножать векторы. Я инженер и после многолетнего опыта работы с его геометрической алгеброй, также известной как Клиффордская алгебра, должен признать, что он прав. Эта алгебра заменяет комплексные числа, матрицы, тензоры, кватернионы и т.д. Естественным образом. Если вы открыты, чтобы узнать что-то в этой области, начните читать об этом. Это действительно потрясающе!