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



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



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



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



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



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



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



Так почему же кватернионы кажутся предпочтительнее векторов?



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



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



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



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

729   7  

7 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

на самом деле формулы именно те, которые даны для таких трансформация М. Олинде Родригес Лиувиль, Т. В., " Des lois géométriques qui régissent les déplacements d'un регистра-жесткая [...]" (или расческа. Математика. Журнал, Т. раздел III. С. 224 [6]). Это было бы интересно вопрос к учету, априори, для появления этих коэффициентов здесь.

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

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

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

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

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

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

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

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

Comments

    Ничего не найдено.