Вычисление углов эйлера между векторами. Кватернион как линейный оператор поворота

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

В качестве обобщённых координат можно использовать углы Эйлера j , q и y .

Таблица 3.1. Три системы углов Эйлера

Последова-тельность поворотов

На j вокруг оси OZ

На j вокруг оси OZ

На y вокруг оси OX

На q вокруг оси OU

На q вокруг оси OV

На q вокруг оси OY

На y вокруг оси OW

На y вокруг оси OW

На j вокруг оси OZ

Первая из систем углов Эйлера обычно используется при описании движения гироскопов и соответствует следующей последовательности поворотов (рис. 3.2):

Рисунок 3.2. Первая система углов Эйлера

R j , q , y = R z , j ×R u , q ×R w , y =
=

=
. (3-2)

R j , q , y , может быть также получен в результате выполнения последовательности следующих поворотов вокруг осей неподвижной системы координат: сначала на угол y вокруг оси OZ , затем на угол q вокруг оси OX , затем на угол j вокруг оси OZ .

На рисунке 3.3 показана вторая система углов Эйлера, определяемая следующей последовательностью поворотов:

    Поворот на угол j вокруг оси OZ (R z , j).

    Поворот на угол q вокруг оси OV (R v , q).

    Поворот на угол y вокруг повёрнутой оси OW (R w , y).

Результирующая матрица поворота имеет следующий вид:

R j , q , y = R z , j ×R v , q ×R w , y =
=

=
. (3-3)

Поворот, описываемый матрицей R j , q , y для этой системы углов Эйлера, может быть получен также в результате выполнения последовательных поворотов: на угол y вокруг оси OZ , на угол q вокруг оси OY , на угол j вокруг оси OZ .

Рисунок 3.3. Вторая система углов Эйлера

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

Они соответствуют следующей последовательности поворотов:

    Поворот на угол y вокруг оси OX (R x , y ) – рыскание.

    Поворот на угол q вокруг оси OY (R y , q ) – тангаж.

    Поворот на угол j вокруг оси OZ (R z , j ) – крен.

Результирующая матрица поворота имеет вид:

R j , q , y = R z , j ×R y , q ×R x , y =
=

=
. (3-4)

Поворот, описываемый матрицей R j , q , y в переменных «крен, тангаж, рыскание» может быть также получен в результате выполнения следующей последовательности поворотов вокруг осей абсолютной и подвижной систем координат: на угол j вокруг оси OZ , затем на угол q вокруг повёрнутой оси OV , на угол y вокруг повёрнутой оси OU (продольная ось аппарата – Z ) (рис. 3.4).

Рисунок 3.4. Крен, тангаж, рысканье (третья система углов Эйлера)

Углы Эйлера описывают поворот объекта в трёхмерном евклидовом пространстве. При этом рассматриваются две прямоугольные системы координат, имеющие общий центр: неподвижная система и подвижная, связанная с объектом. На рис.1 неподвижная система координат имеет обозначение XYZ (она наклонена), а подвижная система обозначена как xyz. Углы Эйлера представляют собой углы, на которые поворачивается подвижная система координат, связанная с объектом, до совмещения с неподвижной системой. В классическом варианте первый поворот происходит на угол α вокруг оси z, связанной с объектом, до тех пор, пока не произойдет совпадение оси x, связанной с объектом, c плоскостью XY неподвижной системы. Такое совпадение произойдет по линии пересечения плоскостей XY и xy (линия N на рис. 1). Следующий поворот осуществляется на угол β вокруг нового положения оси x, связанной с объектом, до тех пор, пока не совместятся оси аппликат обеих прямоугольных систем. При этом ось y, связанная с объектом, окажется в плоскости xy неподвижной системы координат XYZ. Последний поворот производится на угол γ вокруг нового положения оси аппликат подвижной системы координат (она будет совпадать с такой же осью неподвижной системы), после чего оси координат XY и xy совместятся.

Рис. 1. Углы Эйлера

Такие повороты некоммутативны, и конечное положение подвижной системы координат зависит от порядка, в котором совершаются повороты.

Если известны координаты вектора R(r x , r y , r z) в подвижной системе координат XYZ и известны углы Эйлера (α, β, γ) подвижной системы координат xyz относительно неподвижной, то можно вычислить координаты этого вектора в неподвижной системе координат xyz. Для этого следует построить матрицы трех последовательных поворотов на углы α, β и γ:

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

T = T 3 × T 2 × T 1 ,

которая преобразует координаты вектора R(r x , r y , r z) подвижной системы координат в координаты вектора N(n x , n y , n z) такой же длины в неподвижной системе координат:

N = R ,

где N и R - матрицы-столбцы соответствующих координат.

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

Рассмотрим другой пример - создание анимации кубика при повороте его вокруг оси Z мировой системы координат на угол, превышающий 360°, например на угол 450°. Попробуем создать два ключевых кадра, между которыми кубик должен повернуться на этот угол. Для этого в программе MaxScript создайте стандартный параллелепипед:

b = box ()

После этого переместите ползунок временной шкалы анимации к кадру 10, включите режим Auto Key, а затем выполните команду:

b. rotation. z_ rotation = 450

Воспроизведите анимацию. Объект повернется только на 90°, поскольку его оборот на 360° будет игнорирован. Теперь то же самое проделайте в окне программы 3ds Max. Анимация объекта между двумя ключевыми кадрами произойдет на угол 450°. Таким образом, применение эйлеровых вращений в программах компьютерной графики, аналогичных MaxScript, ограничивается одновременным вращением на угол, не превышающий 360°. Однако это не мешает создавать анимацию вручную за экраном дисплея.

Другая проблема углов Эйлера заключается в наличии Gimbal lock, или шарнирного замка. Его появление зависит от выбора порядка поворотов объекта. Например, повернем объект вначале вокруг оси Z на угол 140°, затем вокруг оси X на угол 90°, а потом на угол 130° вокруг оси Y (рис. 2).

Рис. 2. Последовательные повороты объекта

Если теперь заново выполнить ту же последовательность поворотов, например, на углы 10° вокруг оси Z, затем на 90° вокруг оси X, а потом на 0° вокруг оси Y, то получим тот же результат. Проблема заключается в том, что когда вращение вокруг оси X становится равным 90° или -90°, то локальная ось вращения Y становится параллельной оси Z, но с обратным направлением, и поэтому вращение вокруг нее вступает в конфликт с предыдущим вращением вокруг оси Z.

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

Литература

  1. Углы Эйлера и Gimbal lock [Электронный ресурс] / http://habrahabr.ru – Хабрахабр, 2006. – Режим доступа: http://habrahabr.ru/post/183116/. – Дата доступа: 10.10.2013.
  2. Кватернионы и вращение пространства [Электронный ресурс] / http://ru.wikipedia.org/ – Википедия - свободная энциклопедия, 2001. – Режим доступа: http://ru.wikipedia.org/wiki/ Кватернионы_и_вращение_пространства. – Дата доступа: 11.10.2013.

Матрица поворот применяется для вращения системы координат или объекта, сцены.

Матрицы поворота вокруг основных осей.

Матрица поворота вокруг произвольной оси.

Обобщённая матрица поворота.

Хочется задавать положение объекта в пространстве однозначно. Достаточно очевидно что любое положение однозначно определяется 3 поворотами вокруг разных осей. Но встаёт вопрос в каком порядке вращать и как выбрать оси?

Обобщённую матрица поворота можно задать по разному. С одной стороны мы можем вращать объект вокруг неподвижных осей. С другой вокруг осей связанных с объектом ещё их называют локальными. Стоит вспомнить что операции умножения матриц не коммутативна поэтому для однозначного определения положения нужно знать не только 3 угла, но и схему умножения матриц.

Можно выделить 2 популярные схемы.
1) Матрица поворота через углы Эйлера.
2) Матрица поворота через углы летательного аппарата (ЛА): рыскание, тангаж и крен(yaw, pitch и roll).
В виду того что первая требует большого числа вычислений, то на практике обычно применяют вторую.

Матрица поворота через углы Эйлера.

Углы Эйлера - три угла однозначно определяющие ориентацию твёрдого тела, определяющие переход от неподвижной системы координат к подвижной.
Подвижная система координат это система координат привязанная к телу. Иногда говорят в мороженная в тело. Прежде чем дать определения углов нам понадобиться ещё одно. Линия узлов ON - линия пересечение плоскости OXY и Oxy

α (или φ) это угол между осью Оx и осью ON. Диапазон значений ={ a 3 y } т [x 1 ] , или , (3.2)

где - матрица, транспонированная к матрице , описывающей поворот системы CXYZ вокруг третьей координатной оси СZ на угол дифферента y,

; (3.3)

2) от системы к системе (рис. 3.4)

x 1 = x 2 + 0 + 0 ,

y 1 = 0 + y 2 - z 2 , (3.4)

z 1 = 0 + y 2 + z 2 ,

или в матричной форме

[x 1 ] = [x 2 ] , или , (3.5)

где – матрица, транспонированная к матрице , задающей преобразование поворота от осей системы к осям системы вокруг первой из координатных осей на угол крена , при этом = ,

; (3.6)

3) от системы координат к системе Cxyz (рис. 3.5)

x 2 = x cos j + 0 + z sin j,

y 2 = 0 + y + 0 , (3.7)

z 2 = -x sin j + 0 + z cos j,

или в матричной форме [x 2 ]= [x ], или

. (3.8)

Причем поворотная матрица {a 2 j } т – это матрица, транспонированная к матрице { a 2 j }, задающей преобразование поворота от осей системы к осям системы Cxyz на угол рысканияjвокруг второй из координатных осей = , имеет вид

. (3.9)

Для любой точки М тела с координатами x , y , z в подвижной системе координат, жестко связанной с ним, и с ее же координатами X , Y , Z – в неподвижной системе координат можно установить взаимосвязь проекций вектора точки на оси двух систем координат,

, (3.10)

или в матричном виде

или , (3.11)

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

Матрица транспонирована к матрице направляющих косинусов , задающей преобразование поворота от осей неподвижной системы CXYZ к осям подвижной системы Cxyz , неизменно связанной с кораблем. Очевидно, что при движении тела координаты x , y , z остаются постоянными в отличие от координат X , Y , Z.

Подставляя в (3.2) соотношения (3.5) и (3.8), получаем:

Сравнивая (3.11) и (3.12), находим, что искомая матрица является произведением трех поворотных матриц

=

=

.(3.13)

Подставляя в (3.2) соотношение (3.5), получаем промежуточное соотношение, которое может понадобиться в дальнейшем, [X ] = [x 2 ]. Промежуточная поворотная матрица = находится как произведение двух матриц поворота:

=

= (3.13a )

Углы Эйлера

В тех случаях, когда угловая скорость вращения в одном направлении значительно больше, чем в двух других (генераторы, моторы, турбины, гироскопы), для определения положения тела в качестве трех независимых параметров выбирают три угла Эйлера: угол прецессии y (t ),угол нутацииq (t ) иугол ротации (собственного вращения) j (t ). Их названия заимствованы из астрономии.

Чтобы задать эти углы, рассмотрим вращение твердого тела вокруг неподвижной точки О . Пусть даны некоторая система отсчета и связанная с ней неподвижная система координат ОXYZ , относительно которой движется твердое тело, и связанная с твердым телом система координат Оxyz , которая движется относительно первой (рис. 3.6 … 3.8). Это означает, что первая и вторая системы координат имеют общее начало O , а углы, образуемые осями Оxyz с осями ОXYZ , изменяются, т.е. система Оxyz
поворачивается вместе с твердым телом вокруг неподвижной точки О (рис. 3.5 … 3.8).


Рис. 3.6

  • Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
  • Получаем вектор угловой скорости. Работаем над недочетами
  • Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
  • Параметры Родрига-Гамильтона в кинематике твердого тела
  • СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
  • Введение

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

    Рис.1. Углы Эйлера - параметры, знакомые каждому, кто занимался компьютерной графикой и моделированием пространственного движения тел. И каждый, кому они знакомы, знает, насколько проблематичным бывает их использование.

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

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


    Рис. 2. Знаменитые кинематические уравнения Эйлера. Я, в своё время, хлебнул с ними долгих и кропотливых отладок

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

    Другой вариант углов поворота - самолетные углы: - рыскание, - тангаж и - крен (рисунок 3).


    Рис. 3. Самолетные углы - один из практических способов определения ориентации летательного аппарата в пространстве

    Данные параметры поворота вырождаются при тангажах , при этом неразличимы становятся крен и рыскание. Матерые симуляторщики знают, как сходит с ума КПП при выходе на крутые тангажи.

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

    Однако, ещё великий Леонард Эйлер ввел в рассмотрение четыре параметра, которые не имеют вырождения. На его публикацию по этому поводу тогдашний научный мир особого внимания не обратил. Данная идея, независимо от Эйлера была развита Олидом Родригом, а в работах Уильяма Гамильтона получила окончательное теоретическое обоснование. Встречайте -

    1. Кватернионы и действия над ними

    Кватернионом называют число вида

    Где называют компонентами кватерниона. Сами числа (1) образуют множество гиперкомплексных чисел , включающее в себя все действительные числа и множество комплексных чисел . Математики эпохи, когда работал Гамильтон, уже знали о комплексных числах и о том, как построенные на их основе методы позволяют решать задачи планиметрии и естественным было желание расширить понятие комплексного числа для применения подобных методов к пространственным задачам. Проблема была в том, что добавление второй мнимой единицы не решало проблемы. Гамильтону пришла в голову мысль, что подобные расширенные комплексные числа могут быть не трех-, а четырехкомпонентными. Работая в этом направлении, в порыве вдохновения на одной из прогулок он вывел правило умножения таких чисел, что окончательно сложило мозаику новорожденной теории.

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

    А их попарные произведения хорошо описываются диаграммой


    Рис. 4. Диаграмма перемножения мнимых единиц в кватернионе

    Смысл которой прост - если перемножать пары мнимых единиц в порядке, указанном стрелкой, то получается третья мнимая единица со знаком "+". Если порядок перемножения изменить на противоположный - получится третья мнимая единица со знаком "-". Не напоминает правило векторного перемножения ортов в декартовых координатах? Это оно и есть, то есть мы получаем

    Пользуясь этими правилами перемножим два кватерниона

    Ого! Не слабо, но мы смело приводим подобные слагаемые

    И, ну наверняка вы видите тут до боли знакомые действия над векторами. Пусть у нас будут заданы векторы

    Тогда каждый кватернион можно представить парой скаляр-вектор

    А результат их умножения

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

    А кватернионы вида и называются векторными кватернионами, и их произведение

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

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

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

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

    О связанной с ним операции вычисления нормы

    И операции вычисления обратного кватерниона

    И ещё одно полезное свойство, касающееся сопряжения произведения кватернионов

    Кроме того, норма обратного кватерниона - величина обратная норме исходного

    Эти операции имеют непосредственное отношение к тому, для чего в наши дни используют гиперкомплексные числа

    2. Кватернион как линейный оператор поворота

    Теперь посмотрим на вот такой фокус. Пусть - один кватернион, а - другой кватернион. Докажем небольшую теорему

    Преобразование вида не меняет нормы кватерниона .

    Проверяется это утверждение прямым вычислением

    Действительно, норма кватерниона не изменяет при подобном преобразовании. А если кватернион будет векторным кватернионом, то не изменится норма вектора, которым он определяется. То есть описанное преобразование над вектором, не меняет его длины, оно будет ортогональным, или преобразованием поворота! Дело за малым - выяснить, вокруг какой оси и на какой угол происходит поворот, определяемый конкретным кватернионом. Для этого возьмем (нам ведь никто не мешает так сделать) и представим кватернион в виде

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

    Никто не мешает делать нам эквивалентных преобразований, вот мы и делаем их. Теперь введем замену

    На каком основании? Да на том, что сумма квадратов этих величин всегда даст единицу, а если это так, то никто не мешает представить данные величины как синус и косинус некоторого угла. Почему угол делим на два? Нам так хочется, потом это нам пригодится, ведь угол можно взять произвольный. Исходя из введенной замены мы можем переписать кватернион в виде

    Заметим, что вектор , введенный нами, является единичным, так как

    В довершении позволим себе ещё одно допущение - пусть кватернион будет единичным, то есть

    Теперь аккуратно выполним ортогональное преобразование над векторным кватернионом

    Теперь умножим результат (2) на обратный кватернион