Представление матриц поворота через углы эйлера. Выбор осей координат

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Углы Эйлера описывают поворот объекта в трёхмерном евклидовом пространстве. При этом рассматриваются две прямоугольные системы координат, имеющие общий центр: неподвижная система и подвижная, связанная с объектом. На рис.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.

    Углы Эйлера-Крылова

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

    Углы Эйлера-Крылова

    Неподвижная система отсчета, в которой рассматривается угловое положение твердого тела (летательного аппарата), образована правой тройкой векторов. Ось направляется по местной вертикали от центра Земли, ось располагается в плоскости горизонта и направляется на географический север (N, North), а ось дополняет систему координат до правой. С подвижным объектом - например, летательным аппаратом (ЛА), - жестко связана подвижная система координат. Её ось направляется вдоль строительной (продольной) оси летательного аппарата, ось - вдоль нормальной в направлении зенита, а ось - вдоль поперечной в направлении правого борта ЛА. Угловое положение (ориентация) ЛА в системе координат задается курсом (), тангажом () и креном (). Наличие знака минус перед самолетными углами обусловлено тем, что их положительные значения, в отличие от классических углов Эйлера-Крылова, отсчитывается по ходу часовой стрелки. Итоговое положение ЛА определяется последовательностью поворотов

    Выставка по сигналам MEMS акселерометра

    Процедура определения начальных угловых координат называется выставкой. Для выставки крена и тангажа с помощью трёхосного MEMS акселерометра, выдающего ускорения, и по осям X, Y и Z связанной с ним подвижной системы координат OXYZ, соответствующие значения углов можно найти по проекциям вектора ускорения свободного падения g=9,81 м/с2 на каждую из осей, используя математический аппарат матриц поворота (3.1)

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

    Выразим из (3.2) вектор ускорения свободного падения, для чего умножим обе части равенства слева на матрицу:

    Из первых двух уравнений системы (3.4) получим

    Калибровка MEMS акселерометра

    Погрешность определения угловых координат объекта по сигналам трёхосных MEMS акселерометров во многом зависит от точности определения поправочных коэффициентов, вычисляемых в ходе калибровки.

    Ошибки показаний трёхосного акселерометра (ТОА) возникают из-за трех факторов :

    Наличие постоянного смещения;

    «просачивание» сигнала из одного канала в другой, вызванное неколлинеарностью троек векторов, образующих две системы координат: связанную с калибровочной поворотной платформой OXYZ и связанную с ТОА (3.4);

    Собственные фликкер-шумы.

    Неколлинеарность осей систем координат объекта и систем координат акселерометра

    Из этого следует, что математическая модель сигнала трёхосного MEMS акселерометра будет выглядеть следующим образом :

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

    Без учета шума систему уравнений (3.6), выполнив операции умножения матриц и векторов, можно записать в виде:


    Из (3.7) следует, что для нахождения калибровочных параметров для одной из осей требуется количество измерений, равное количеству неизвестных параметров этой оси: для оси Z - 2, для оси Y-3, для оси X-4.

    Калибровка трёхосного MEMS акселерометра подразумевает установку датчика в априорно известные положения и решение переопределенной системы уравнений для его выходных сигналов. При выполнении данной процедуры принято устанавливать акселерометр в 12 фиксированных положений

    12 калибровочных положений MEMS акселерометра

    В показано, что для уменьшения погрешности оценивания следует выполнять усреднение калибровочных коэффициентов, найденных по числу сочетаний. Однако, с целью уменьшения времени калибровки можно использовать только шесть так называемых ортогональных положений: 2), 4), 6), 7), 8) и 11); в этом случае уменьшение числа сочетаний до приводит к увеличению погрешности измерения элементов матрицы масштабных коэффициентов k и элементов вектора смещений b не более чем на 0,21% и 0,02% соответственно. Следует отметить, что погрешность измерения элементов матрицы коррекции T может возрастать до сотен процентов, но, так как недиагональные элементы T обычно не превосходят, при малых углах крена и тангажа (не более 30°), погрешность измерения указанных углов увеличивается не более чем на 0,5°.

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

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

    За оси неподвижной системы координат приняты CXYZ, а за оси жестко связанные с кораблем – Cxyz (рис. 3.1). Ось СХ направлена от кормы к носу корабля, ось CZ –к его правому борту, а ось CY образует с ними правую систему координат (вертикально вверх). Положение подвижной системы координат Cxyz , неизменно связанной с кораблем, относительно неподвижной CXYZ для каждого момента времени определяется тремя углами Крылова: углом дифферента , углом крена , углом рыскания (рис. 3.2).

    Как видно на рис. 3.2, плоскость CXY пересекает плоскость Cxy по некоторой прямой , образующей угол с осьюCX и угол с осью Cx . Плоскость CYZ пересекает плоскость Cхy полинии Cy 1 , образующей угол с осью Cy . Рассмотрим переход от системы CXYZ к системе Cxyz , выполненный с помощью трех поворотов.

    Для совмещения системы CXYZ с системой Cxyz достаточно:

    1) повернуть систему CXYZ вокруг третьей из координатных осей CZ на угол дифферента , в результате чего получим систему Cx 1 y 1 z 1 , причем Cz 1 =CZ (рис. 3.3);

    2) повернуть систему вокруг первой из координатных осей на угол крена , в результате чего получим систему , при этом (рис. 3.4);

    3) повернуть систему вокруг второй из координатных осей на угол рыскания (рис. 3.5), в результате чего приходим к системе Cxyz .

    Формулы преобразования координат связаны следующими соотношениями:

    1) от CXYZ к (рис. 3.3)

    X = x 1 cos y - y 1 sin y + 0 ,

    Y =x 1 sin y + y 1 cos y + 0 , (3.1)

    Z = 0 + 0 + z 1 ,

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

    [X ] ={ 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

    По работе у меня возникла необходимость переводить координаты объекта из углов Эйлера в кватернионы и обратно.

    Формулы для пересчёта углов Эйлера в кватеринионы и обратно найти можно, но

    Опишу коротко суть проблемы:

    1. Тело в трёхмерном пространстве имеет 6 степеней свободы: 3 координаты и 3 угла поворота.
    2. С координатами всё хорошо, например, если они (4,5,2), то это означает, что тело нужно сдвинуть относительно начала координат на +4 единицы по оси X, на +5 единиц по оси Y и на +2 единицы по оси Z. При этом порядок сдвига не важен. Можно сначала сдвинуть по X, потом по Y, потом по Z, а можно в другой последовательности. От перемены мест слагаемых сумма не меняется.
    3. С поворотами всё гораздо хуже. Иногда может сложиться ощущение, что для них тоже просто достаточно задать углы поворота вокруг трёх осей и этого будет достаточно (например: перевернуть предмет на 180 градусов вокруг оси X, потом на 180 градусов вокруг оси Y, а затем на 90 градусов вокруг оси Z - в каком порядке не поворачивай - результат будет один и тот же). Эта ловушка возникает оттого, что нам легче всего оперировать углами типа 90 или 180 градусов, а они-то как раз и представляют из себя очень частный случай. В общем случае порядок поворотов имеет значение.
    А как же быть с законом, говорящим, что от перестановки мест слагаемых сумма не меняется? Дело в том, что композиция нескольких поворотов соответствует уже не сумме векторов (как в случае с операциями параллельного переноса), а произведению. И произведению не просто чисел, а специальных объектов - матриц поворота, например - на которые коммутативность «обычного» умножения не распространяется. В зависимости от порядка выбора осей поворота и от того, будут ли поворачиваться оси вместе с объектом или поворачиваться будет только объект, можно выделить 24 типа описаний поворотов. Очень часто углы поворота вокруг осей называются углами Эйлера. Иногда, в некоторых источниках эти углы называются углами Тэйт-Брайана либо углами Эйлера в зависимости от того, все три оси, вокруг которых делается вращение разные (углы Тэйт-Брайана), либо же первая и последняя оси - одна и та же. Также эти углы называют angles of extrinsic rotation - если оси неподвижны или angles of intrinsic rotation - если оси вращаются вместе с объектом.
    Чтоб не запутаться, приведу все типы вращений здесь:
    Тейт-Брайана, внутренние:
    ZYXr; YZXr; XZYr; ZXYr; YXZr; XYZr.
    Эйлера, внутренние:
    XYXr; XZXr; YZYr; YXYr; ZXZr; ZYZr.
    Тейт-Брайана, внешние:
    ZYXs; YZXs; XZYs; ZXYs; YXZs; XYZs.
    Эйлера, внешние:
    XYXs; XZXs; YZYs; YXYs; ZXZs; ZYZs.
    Внешние углы комплементарны внутренним, прочитанным задом наперёд, например: внешние углы Эйлера 10, 20, 30 градусов в формате XYXs это то же самое, что и внутренние углы Эйлера 30, 20, 10 градусов в формате XYXr.

    Собственно, об этом уже было сказано много раз. Зачем же писать новую статью? Дело в том, что информации о том, как переводить из углов Эйлера в кватернион и обратно - не так уж и много. И в большинстве случаев описывается только 1 или 2, 3, 6 систем углов Эйлера. Но не все 24. И по аналогии вывести остальные (и не ошибиться) не очень-то и просто. Во время «откапывания истины» мне удалось найти несколько онлайн-конвертеров из углов в кватернионы и по тому, в каком направлении увеличивается их возможность по конвертации можно понять, сколько ещё вариантов осталось не охвачено:
    quat.zachbennett.com - один тип углов

    onlineconversion.com - один тип углов
    quaternions.online - три типа углов
    andre-gaschler.com - шесть типов углов

    Единственное место, где я смог найти описание преобразований для всех 24 типов углов - это книга «Graphics Gems IV». Репозитарий с исходниками от этой книги находится здесь: Исходники к книге Graphics Gems IV . Если говорить про код преобразования из углов Эйлера в кватернионы и обратно, то эти исходники в репозитарии находятся здесь: .../GraphicsGems/gemsiv/euler_angle. Но у них есть один недостаток: с целью сделать максимально общую функцию расчёта углов и кватернионов, автор очень сильно усложнил код. Т.е. код получился очень компактным, но плохо подходящим для перевода на другие языки или для оптимизации под конкретные случаи. Так как мне очень нужно было разобраться со всеми 24-мя случаями, то пришлось этот код немного поисследовать и развернуть его в набор простых случаев. Также я написал небольшие юнит-тесты и проверил, что мой код работает корректно. Т.к. эти юнит-тесты используют код, скомпилированный из исходников от книги Graphics Gems, то выкладывать их (юнит-тесты) я не стал.

    Не буду приводить в тексте статьи свои исходники (они написаны на языке Octave). Дам лишь ссылку на репозитарий и прокомментирую его содержимое:

    Обеих функций в Octave нет. В Matlab поддерживаются только 6 типов углов Эйлера на неподвижных осях. В моих реализациях поддерживаются все 24 типа. При этом типы с буквой r на конце (например, XYZr) означают, что оси вращаются вместе с объектом. Типы с буквой s на конце (например, XYZs) означают, что оси остаются неподвижными.

    Последние материалы раздела:

    Чудеса Космоса: интересные факты о планетах Солнечной системы
    Чудеса Космоса: интересные факты о планетах Солнечной системы

    ПЛАНЕТЫ В древние времена люди знали только пять планет: Меркурий, Венера, Марс, Юпитер и Сатурн, только их можно увидеть невооруженным глазом....

    Реферат: Школьный тур олимпиады по литературе Задания
    Реферат: Школьный тур олимпиады по литературе Задания

    Посвящается Я. П. Полонскому У широкой степной дороги, называемой большим шляхом, ночевала отара овец. Стерегли ее два пастуха. Один, старик лет...

    Самые длинные романы в истории литературы Самое длинное литературное произведение в мире
    Самые длинные романы в истории литературы Самое длинное литературное произведение в мире

    Книга длинной в 1856 метровЗадаваясь вопросом, какая книга самая длинная, мы подразумеваем в первую очередь длину слова, а не физическую длину....