Введение

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

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

Композиция угла по оси

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

Дифференциация по отношению к кватерниону вращения

Вращающийся кватернион 1='p' = q p q'^(-1) необходимо дифференцировать по вращающемуся кватерниону 'q', когда вращение оценивается методом численной оптимизации. Оценка угла поворота является важной процедурой при регистрации 3D-объектов или калибровке камеры. Для унитарного 'q' и чисто мнимого 'p', то есть для поворота в 3D-пространстве, производные повернутого кватерниона могут быть представлены с использованием обозначений матричного исчисления следующим образом:

Вывод можно найти в [ссылка].

Операции по четвертионной ротации

Очень подробное и формальное описание свойств, используемых в этом разделе, приводится в работе Альтмана.

Визуализация пространства вращений

Квартернионы единицы представляют группу евклидовых вращений в трех измерениях очень простым способом. Соответствие между вращениями и кватернионами можно понять, сначала визуализировав само пространство вращений. Чтобы визуализировать пространство вращений, полезно рассмотреть более простой случай. Любое вращение в трех измерениях можно описать вращением на некоторый угол вокруг некоторой оси; для наших целей мы будем использовать вектор оси, чтобы определить направление этого угла. Рассмотрим частный случай, когда ось вращения лежит в плоскости xy. Тогда мы можем задать ось одного из таких вращений точкой на окружности, через которую проходит вектор, и выбрать радиус окружности, чтобы обозначить угол вращения. Аналогично, вращение, ось вращения которого лежит в плоскости xy, можно описать как точку на сфере фиксированного радиуса в трех измерениях. Начиная с северного полюса сферы в трехмерном пространстве, мы определяем точку на северном полюсе как тождественное вращение (вращение на нулевой угол). Как и в случае тождественного вращения, ось вращения не определена, а угол вращения (нуль) несущественен. Вращение с очень малым углом вращения можно задать сечением сферы, параллельным плоскости xy и расположенным очень близко к северному полюсу. Окружность, определяемая этим сечением, будет очень маленькой, что соответствует малому углу вращения. По мере увеличения углов вращения сечение смещается в направлении отрицательной оси z, и окружности становятся больше, пока не будет достигнут экватор сферы, который соответствует углу вращения в 180 градусов. Продолжая движение к югу, радиусы окружностей теперь уменьшаются (что соответствует абсолютной величине угла вращения, рассматриваемого как отрицательное число). Наконец, когда достигается южный полюс, окружности снова сжимаются до тождественного вращения, которое также определяется как точка на южном полюсе. Заметьте, что ряд характеристик таких вращений и их представлений можно увидеть на этой визуализации. Пространство вращений непрерывно, каждое вращение имеет окрестность вращений, которые почти идентичны, и эта окрестность становится плоской по мере ее сжатия. Кроме того, каждое вращение фактически представлено двумя антиподальными точками на сфере, расположенными на противоположных концах линии, проходящей через центр сферы. Это отражает тот факт, что каждое вращение можно представить как вращение вокруг некоторой оси или, эквивалентно, как отрицательное вращение вокруг оси, направленной в противоположную сторону (так называемое двойное покрытие). "Широта" окружности, представляющей определенный угол вращения, будет равна половине угла, представленного этим вращением, поскольку при перемещении точки от северного к южному полюсу широта изменяется от нуля до 180 градусов, а угол вращения – от 0 до 360 градусов. ("Долгота" точки, в свою очередь, представляет собой определенную ось вращения.) Однако следует отметить, что этот набор вращений не является замкнутым относительно композиции. Два последовательных вращения с осями в плоскости xy не обязательно дадут вращение, ось которого лежит в плоскости xy, и, следовательно, не может быть представлено точкой на сфере. Это не будет справедливо для общего вращения в трехмерном пространстве, где вращения образуют замкнутое множество относительно композиции. Эту визуализацию можно расширить на общее вращение в трехмерном пространстве. Тождественное вращение – это точка, а небольшое вращение вокруг некоторой оси можно представить как точку на сфере с небольшим радиусом. По мере увеличения угла вращения сфера растет, пока угол вращения не достигнет 180 градусов, после чего сфера начинает сжиматься, превращаясь в точку при приближении угла к 360 градусам (или нулю градусам, отсчитываемым в отрицательном направлении). Этот набор расширяющихся и сжимающихся сфер представляет собой гиперсферу в четырехмерном пространстве (3-сферу). Как и в более простом примере выше, каждое вращение, представленное точкой на гиперсфере, соответствует своей антиподальной точке на этой гиперсфере. "Широта" на гиперсфере будет равна половине соответствующего угла вращения, а окрестность любой точки станет "более плоской" (то есть будет представлена трехмерным евклидовым пространством точек) по мере сжатия окрестности. Такое поведение соответствует множеству единичных кватернионов: общий кватернион представляет точку в четырехмерном пространстве, но ограничение его величины единицей дает трехмерное пространство, эквивалентное поверхности гиперсферы. Величина единичного кватерниона будет равна единице, что соответствует гиперсфере единичного радиуса. Векторная часть единичного кватерниона представляет радиус 2-сферы, соответствующей оси вращения, а его величина равна синусу половины угла вращения. Каждое вращение представлено двумя единичными кватернионами с противоположным знаком, и, как в пространстве вращений в трех измерениях, произведение двух единичных кватернионов дает единичный кватернион. Кроме того, пространство единичных кватернионов "плоское" в любой бесконечно малой окрестности заданного единичного кватерниона.

Параметризация пространства вращений

Мы можем параметризовать поверхность сферы двумя координатами, такими как широта и долгота. Но широта и долгота некорректно определены (дегенерируют, как описано теоремой о волосатом шаре) на северном и южном полюсах, хотя полюса не отличаются от других точек на сфере. На полюсах (широты +90° и −90°) долгота теряет смысл. Можно показать, что ни одна двупараметрическая система координат не может избежать такой дегенерации. Мы можем избежать этих проблем, вложив сферу в трехмерное пространство и параметризовав ее тремя декартовыми координатами (w, x, y), поместив северный полюс в точку (w, x, y) = (1, 0, 0), южный полюс в точку (w, x, y) = (−1, 0, 0), а экватор в плоскости w = 0 и x^(2) + y^(2) = 1. Точки на сфере удовлетворяют ограничению w^(2) + x^(2) + y^(2) = 1, поэтому у нас все еще только две степени свободы, несмотря на три координаты. Точка (w, x, y) на сфере представляет собой вращение в обычном пространстве вокруг горизонтальной оси, направленной вектором (x, y, 0) на определенный угол. Аналогичным образом, гиперсферическое пространство 3D-вращений может быть параметризовано тремя углами (углами Эйлера), но любая такая параметризация вырождается в некоторых точках гиперсферы, что приводит к проблеме блокировки карданова подвеса. Мы можем избежать этого, используя четыре евклидовы координаты w, x, y, z, при этом w^(2) + x^(2) + y^(2) + z^(2) = 1. Точка (w, x, y, z) представляет собой вращение вокруг оси, направленной вектором (x, y, z) на определенный угол.

Некоммутативность

Умножение кватернионов некоммутативно. Этот факт объясняет, как может работать формула "p" ↦ "q p q"^(−1), поскольку 1 = "q q"^([[обратный по умножению по определению. Поскольку умножение единичных кватернионов соответствует композиции трехмерных вращений, это свойство можно сделать более понятным, показав, что трехмерные вращения в общем случае некоммутативны. Рисунок справа иллюстрирует это на примере игральных костей. Используйте правую руку, чтобы выполнить пару поворотов на 90 градусов. Обе кости изначально расположены, как показано в верхнем левом углу (с одной точкой на верхней грани). Путь А начинается с поворота вокруг оси –y (используя правило правой руки), за которым следует поворот вокруг оси +z, в результате чего получается конфигурация, показанная в нижнем левом углу (пять точек на верхней грани). Путь B меняет порядок операций, в результате чего на верхней грани оказывается три точки. Если у вас нет игральных костей, поставьте две книги рядом друг с другом. Поверните одну из них на 90 градусов по часовой стрелке вокруг оси z, затем переверните ее на 180 градусов вокруг оси x. Возьмите другую книгу, сначала переверните ее на 180° вокруг оси x, а затем поверните на 90° по часовой стрелке вокруг оси z. Обе книги не окажутся параллельными друг другу. Это показывает, что в общем случае композиция двух различных вращений вокруг двух различных пространственных осей не коммутирует.

Ориентация

Векторное произведение, используемое для определения представления оси-угла, действительно задает ориентацию ("хиральность") пространству: в трехмерном векторном пространстве три вектора в уравнении 1 = 'a' × 'b' = 'c' всегда будут образовывать правосторонний набор (или левосторонний набор, в зависимости от определения векторного произведения), тем самым фиксируя ориентацию в векторном пространстве. Альтернативно, зависимость от ориентации выражается при рассмотрении вращения относительно аксиальных векторов. В кватернионной формализации выбор ориентации пространства соответствует порядку умножения: 1 = 'ij' = 'k', но 1 = 'ji' = −'k'. Если изменить ориентацию, то вышеуказанная формула примет вид 'p' ↦ 'q'^(−1) 'p q', то есть единичный кватернион 'q' заменяется на сопряженный кватернион – поведение аналогичное аксиальным векторам.

Из ортогональной матрицы в кватернион

При преобразовании матрицы вращения в кватернион следует соблюдать осторожность, поскольку некоторые очевидные методы становятся неустойчивыми, когда след (сумма диагональных элементов) матрицы вращения равен нулю или очень мал. Для стабильного метода преобразования ортогональной матрицы в кватернион обратитесь к разделу «Матрица вращения» -> «Кватернион».

Подгонка кватернионов

В вышеуказанном разделе описывалось, как восстановить кватернион 'q' из 3 × 3 матрицы вращения Q. Однако, предположим, что у нас есть матрица Q, которая не является чистым вращением – например, из-за ошибок округления – и мы хотим найти кватернион 'q', который наиболее точно представляет эту матрицу Q. В этом случае мы строим симметричную матрицу 4 × 4 и находим собственный вектор (x, y, z, w), соответствующий наибольшему собственному значению (это значение будет равно 1 тогда и только тогда, когда Q является чистым вращением). Полученный таким образом кватернион будет соответствовать вращению, наиболее близкому к исходной матрице Q.

Сравнение результатов

В этом разделе рассматриваются вопросы производительности при использовании кватернионов по сравнению с другими методами (осью и углом или матрицами вращения) для выполнения вращений в 3D.

Пара единичных кватернионов как вращения в 4D пространстве

Пара единичных кватернионов 'z'l и 'z'r может представлять любое вращение в 4D пространстве. Задан четырехмерный вектор , и если предположить, что он является кватернионом, мы можем повернуть этот вектор следующим образом:

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