Кватернионы и вращение пространства

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Версор»)
Перейти к: навигация, поиск
Организация всех трёх степеней свободы через углы Эйлера, однако свобода внутреннего кольца зависит от положения старших колец.

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

Операции вращения[править | править вики-текст]

В этой секции даётся очень краткое описание из книги автора Altmann.[1]

Представление пространства вращения[править | править вики-текст]

Кватернионы единичной нормы, согласно Гамильтону называемые также версорами (англ. versors), предоставляют алгебраический способ представления вращения в трёх измерениях. Соответствие между вращениями и кватернионами в первую очередь может быть осознано через само пространство вращения — группу SO(3).

Два вращения вокруг разных осей и на разные углы в пространстве вращений.

Любое вращение в трёхмерном пространстве — это вращение на определённый угол вокруг определённой оси. Если угол равен нулю, то выбор оси не имеет значения, таким образом вращения на угол ноль градусов — это точка в пространстве вращения (тождественное вращение). Для крошечного, но ненулевого угла, каждое возможное вращение на этот угол — это маленькая сфера, окружающая единичное вращение, где каждая точка на этой сфере представляет собой ось, указывающую в определённом направлении (можно сравнить с небесной сферой). Чем больше угол вращения, тем дальше вращение от единичного вращения — о таких вращениях можно думать как о концентрических сферах с увеличивающимся радиусом. Таким образом, вблизи единичного вращения абстрактное пространство вращений выглядит как обычное трёхмерное пространство (которое также можно представить как центральную точку, окружённую концентрическими сферами). При увеличении угла до 360°, вращения вокруг различных осей перестают расходиться и начинают становиться похожими друг на друга, становясь равными тождественному вращению когда угол достигает 360 градусов.

Гиперсфера вращений для вращений имеющих «горизонтальную» ось (в плоскости xy).

Мы можем увидеть похожее поведение на поверхности сферы. Если мы расположимся на северном полюсе и начнём чертить прямые линии, исходящие из него в различных направлениях (то есть линии долготы), то сначала они будут расходиться, но затем снова сойдутся на южном полюсе. Концентрические круги, получившиеся вокруг северного полюса (широты), стянутся в одну точку на южном полюсе — когда радиус сферы сравняется с расстоянием между полюсами. Если думать о разных направлениях из полюса (то есть разные долготы) как о разных осях вращения, а о разных расстояниях от полюса (то есть широтах) как о разных углах вращения, то мы получим пространство для вращений. Получившаяся сфера представляет вращение в трёхмерном пространстве, хотя является двухмерной поверхностью, что не позволяет смоделировать гиперсферу. Однако двухмерную поверхность сферы можно представлять как часть гиперсферы (как окружность является частью сферы). Мы можем взять часть, например, для представления вращения вокруг осей в плоскостях x и y. Важно отметить, что угол вращения до экватора равен 180° (а не 90°); до южного полюса (с северного) 360° (а не 180°).

Северный и южный полюс представляют одинаковые вращения. Это справедливо для двух любых диаметрально противоположных точек: если одна точка — это вращение на угол \alpha вокруг оси v, то диаметрально противоположной является точка с вращением на угол \scriptstyle 360^\circ - \alpha вокруг оси −v. Таким образом, пространство вращений является не самой 3-сферой, а 3-полусферой (шаром на ней радиуса \pi) с отождествлёнными диаметрально противоположными точками, что диффеоморфно проективному пространству \R\mathrm{P}^3. Однако для большинства целей можно думать о вращениях как о точках на сфере несмотря на то, что они обладают двойной избыточностью.

Определение пространства вращения[править | править вики-текст]

Поверхность сферы можно охарактеризовать двумя координатами, например широтой и долготой. Однако такие координаты, как широта и долгота, на северном и южном полюсах начинают вести себя неопределённо (проявляют вырожденность), хотя северный и южный полюса принципиально не отличаются от любой другой точки поверхности сферы. Это показывает, что ни одна координатная система не может двумя координатами охарактеризовать положение в пространстве (Теорема о причёсывании ежа). Этого можно избежать поместив сферу в трёхмерное пространство, охарактеризовав её декартовыми координатами (w, x, y), помещая северный полюс на (w, x, y) = (1, 0, 0), южный полюс на (w, x, y) = (−1, 0, 0), а экватор на w = 0, x² + y² = 1. Точки на сфере удовлетворяют отношению w² + x² + y² = 1. В итоге получаются две степени свободы, хотя имеется три координаты. Точка (w, x, y) представляет вращение вокруг оси (x, y, 0) на угол \alpha = 2 \arccos w = 2 \arcsin \sqrt{x^2+y^2}.

Таким же образом пространство трёхмерных вращений может быть охарактеризовано тремя углами (углами Эйлера), однако любое такое представление начинает вырождаться на некоторых точках гиперсферы. Этой проблемы можно избежать, используя евклидовы координаты w, x, y, z, где w² + x² + y² + z² = 1. Точка (w, x, y, z) представляет вращение вокруг осей (x, y, z) на угол \alpha = 2 \arccos w = 2 \arcsin \sqrt{x^2+y^2+z^2}.

Коротко о кватернионах[править | править вики-текст]

Комплексное число может быть определено введением абстрактного символа i, который удовлетворяет обычным правилам алгебры, а также правила i^2 = -1. Этого достаточно для воспроизведения всех правил арифметики комплексных чисел. Например:

(a+b\mathbf{i})(c+d\mathbf{i}) = ac + ad\mathbf{i} + b\mathbf{i}c + b\mathbf{i}d\mathbf{i} = ac + ad\mathbf{i} + bc\mathbf{i} + bd\mathbf{i}^2 = (ac - bd) + (bc + ad) \mathbf{i}.

Таким же образом кватернионы могут быть определены введением абстрактных символов i, j, k, умножение которых задаются по правилу

\mathbf{i}^2 = \mathbf{j}^2 = \mathbf{k}^2 = -1
\mathbf{i}\mathbf{j}= -\mathbf{j}\mathbf{i} = \mathbf{k}
\mathbf{j}\mathbf{k}= -\mathbf{k}\mathbf{j} = \mathbf{i}
\mathbf{k}\mathbf{i}= -\mathbf{i}\mathbf{k} = \mathbf{j}

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

(a + b\mathbf{i}) (e + h\mathbf{k}) = ae + be\mathbf{i} - bh\mathbf{j} + ah\mathbf{k}.

Мнимая часть b\mathbf{i} + c\mathbf{j} + d\mathbf{k} кватерниона ведёт себя так же, как и вектор (b, c, d) \in \R^3, а вещественная часть a ведёт себя так же, как и скаляр в \R. При использовании кватернионов можно, следуя Гамильтону, описывать их как сумму скаляра и вектора и использовать векторное и скалярное произведения \times и \cdot (идея которых была подсказана кватернионами). При этом они связаны с обычным кватернионным умножением следующей формулой:

\mathbf{v} \times \mathbf{w} = \mathbf{vw} + \mathbf{v} \cdot \mathbf{w}.

Векторное произведение некоммутативно, а произведения скаляр—скаляр и скаляр—вектор коммутативны. Из этих правил следует:

(s + \mathbf{v}) (t + \mathbf{w}) = (st - \mathbf{v} \cdot \mathbf{w}) + (s\mathbf{w} + t\mathbf{v} + \mathbf{v} \times \mathbf{w}).


Обратным (слева и справа) для ненулевого кватерниона s + \mathbf{v} является

(s + \mathbf{v})^{-1} = \frac{s - \mathbf{v}}{s^2 + |\mathbf{v}|^2},

что может быть проверено прямым вычислением.

Определение пространства вращения через кватернионы[править | править вики-текст]

Допустим (w, x, y, z) — координаты вращения, согласно прежнему описанию. Тогда кватернион q можно определить как

q = w + x\mathbf{i} + y\mathbf{j} + z\mathbf{k} = w + (x,y,z) = \cos (\alpha/2) + \mathbf{u} \sin (\alpha/2),

где \mathbf{u} — единичный вектор. Таким образом, произведение

q \mathbf{v} q^{-1}

вращает вектор \mathbf{v} на угол \alpha вокруг оси \mathbf{u}. Вращение происходит по часовой стрелке, если рассматривать вращение по направлению вектора \mathbf{u}.

Можно взять композицию вращений на кватернионы, перемножив их (от порядка умножения зависит порядок вращения). Таким образом, вращения на кватернионы p и q равно

p q \mathbf{v} (p q)^{-1} = p q \mathbf{v} q^{-1} p^{-1}

что то же самое, что и вращение на q, а затем на p.

Обращение кватерниона — это то же, что и вращение в противоположном направлении, таким образом q^{-1} (q \mathbf{v} q^{-1}) q = \mathbf{v}. Квадрат кватерниона — это вращение на двойной угол вокруг той же оси. В общем смысле, q^n — это вращение вокруг оси q на угол в n раз больший первоначального. Вместо n может быть любое вещественное число, позволяя использовать кватернионы для плавной интерполяции между двумя положениями в пространстве.

Вращение на единичный кватернион[править | править вики-текст]

Пусть u — это единичный вектор (ось вращения), а q = \cos \frac{\alpha}{2} + \mathbf{u} \sin \frac{\alpha}{2} кватернион. Наша цель — показать, что

\mathbf{v}' = q \mathbf{v} q^{-1} = \left( \cos \frac{\alpha}{2} + \mathbf{u} \sin \frac{\alpha}{2} \right) \, \mathbf{v} \, \left( \cos \frac{\alpha}{2} - \mathbf{u} \sin \frac{\alpha}{2} \right)

вращает вектор v на угол α вокруг оси u. Раскрыв скобки, получаем

\begin{array}{lll}
\mathbf{v}' &=& \mathbf{v} \cos^2 \frac{\alpha}{2} + (\mathbf{uv} - \mathbf{vu}) \sin \frac{\alpha}{2} \cos \frac{\alpha}{2} - \mathbf{uvu} \sin^2 \frac{\alpha}{2} \\
&=& \mathbf{v} \cos^2 \frac{\alpha}{2} + 2 (\mathbf{u} \times \mathbf{v}) \sin \frac{\alpha}{2} \cos \frac{\alpha}{2} - (\mathbf{v} (\mathbf{u} \cdot \mathbf{u}) - 2 \mathbf{u} (\mathbf{u} \cdot \mathbf{v})) \sin^2 \frac{\alpha}{2} \\
&=& \mathbf{v} (\cos^2 \frac{\alpha}{2} - \sin^2 \frac{\alpha}{2}) + (\mathbf{u} \times \mathbf{v}) (2 \sin \frac{\alpha}{2} \cos \frac{\alpha}{2}) + \mathbf{u} (\mathbf{u} \cdot \mathbf{v}) (2 \sin^2 \frac{\alpha}{2}) \\
&=& \mathbf{v} \cos \alpha + (\mathbf{u} \times \mathbf{v}) \sin \alpha + \mathbf{u} (\mathbf{u} \cdot \mathbf{v}) (1 - \cos \alpha) \\
&=& (\mathbf{v} - \mathbf{u} (\mathbf{u} \cdot \mathbf{v})) \cos \alpha + (\mathbf{u} \times \mathbf{v}) \sin \alpha + \mathbf{u} (\mathbf{u} \cdot \mathbf{v}) \\
&=& \mathbf{v}_{\bot} \cos \alpha + (\mathbf{u} \times \mathbf{v}_{\bot}) \sin \alpha + \mathbf{v}_{\|}
\end{array}

где \mathbf{v}_{\bot} и \mathbf{v}_{\|} — это компоненты вектора v, которые перпендикулярны и параллельны оси u соответственно. Получившийся результат является формулой вращения на угол α вокруг оси u.

Умножение версора на −1, т.е. взятие противоположного кватерниона, не изменяет вращение. В частности, кватернионы 1 и −1 оба определяют тождественное вращение. Более абстрактно, версоры принадлежат группе Ли SU(2), диффеоморфной 3-сфере. Эта группа двукратно накрывает пространство вращений SO(3).

Вращение четырёхмерного евклидова пространства[править | править вики-текст]

Четырёхмерное вращение описывается двумя кватернионами единичной нормы, с точностью до умножения обоих одновременно на −1 (см. выше).

Вариации и обобщения[править | править вики-текст]

Похожие формулы позволяют применить бикватернионы для описания преобразований Лоренца — «вращений» 4-мерного пространства Минковского.

См. также[править | править вики-текст]

Литература[править | править вики-текст]

Ссылки[править | править вики-текст]

  1. Rotations, Quaternions, and Double Groups / Altmann, Simon L. — Mineola: Dover Publications, 1986. — 317 p.

Внешние ссылки и ресурсы[править | править вики-текст]