Часть 2 - основные операции
Часть 3 - запись вращения через кватернионы
Часть 4 - кватернионы и спиноры; порядок перемножения
Часть 5 - практическая реализация поворота
Часть 5 1/2 - введение метрики, "расстояния" между поворотами
Часть 6 - поворот по кратчайшему пути
Часть 6 1/4 - кратчайший поворот в общем случае
Часть 6 2/4 - поворот, совмещающий два направления
Часть 6 3/4 - кватернион из синуса и косинуса угла
Часть 7 - интегрирование угловых скоростей, углы Эйлера-Крылова
Часть 8 - интегрирование угловых скоростей, матрицы поворота
Часть 8 1/2 - ортонормирование матрицы и уравнения Пуассона
Часть 9 - интегрирование угловых скоростей с помощью кватернионов
Часть 10 - интегрирование угловых скоростей, методы 2-го порядка
Часть 11 - интегрирование угловых скоростей, методы высших порядков (в разработке)
Часть 12 - навигационная задача
Часть 13 - Дэвенпорт берёт след!
Часть 14 - линейный метод Мортари-Маркли
Часть 15 - среднее от двух кватернионов
Часть 15 1/2 - проверка и усреднение кватернионов
Часть 16 - разложение кватерниона на повороты
Могло сложиться впечатление, что кватернионы – «вещь в себе». Мы зачем-то их обрабатываем, получая из одних кватернионов другие кватернионы, или строя кватернионы из набора векторов (как в главах 6,9-14), но читатель вправе задать вопрос – а зачем это всё вообще надо? На табло кватернион не покажешь (показать можно, но не поймут), на двигатель не подашь, даже опорно-поворотное устройство нас не поймёт.
Вопрос вполне законный, это упущение автора, связанное со спецификой его работы.
В первой разработке автора кватернион в конце концов использовался, чтобы преобразовать векторы целеуказания из инерциальной системы координат в систему координат, связанную с прибором, представить вектор в сферических координатах и уже их выдать на опорно-поворотное устройство, чтобы оно навело объектив ровно туда, куда требуется.
В другой разработке самой задачей прибора является выдать кватернион, а что с ним дальше будут делать – не наше дело.
Наверное, поэтому в этом ликбезе много посвящено измерительной части, но «просела» исполнительная часть – как правильно распорядиться кватернионом!
Основной способ приведения кватерниона назад, к «осязаемым» величинам – через преобразование (поворот) векторов. В конце концов, мы можем брать произвольный вектор и смотреть – куда он повернётся, и уже на основе преобразованных координат определять, что нам надо делать.
В этой главе мы покажем, как из кватерниона можно вычленить определённые углы, то есть разложить его на повороты вокруг заданных осей.
У нас есть кватернион Λ =λ0+λxi+λyj+λzk, выражающий определённый поворот в пространстве (поворот вокруг некоторой оси на некоторый угол). Нас же интересует, как представить этот поворот в виде композиции (последовательного действия) двух поворотов. Первый происходит по оси, перпендикулярной оси X (т.е она расположена где-то в плоскости OYZ), второй – вокруг оси X.
Такая задача возникает, в частности, при стыковке космических аппаратов. Мы получаем кватернион взаимной ориентации двух аппаратов, который можно представить в виде взаимного крена (как аппараты повёрнуты вокруг линии визирования друг относительно друга) и двух «пассивных углов», выражающих отклонение линии визирования от оси стыковочного узла.
С коррекцией пассивных углов есть смысл повременить, пока не подойдём поближе, чтобы не описывать длинные дуги. А вот взаимный крен желательно погасить как можно скорее, чтобы не нервировать космонавтов. Для этого надо выделить его из кватерниона.
Запишем полный поворот в виде композиции двух перечисленных:
Раскроем скобку:
Запишем отдельно равенства для первых двух компонент:
Возведя их в квадрат и сложив, получаем
Если нам нужно полное разложение (узнать не только значение α, но и второго кватерниона), то запишем
(с тем же успехом можно взять его со знаком "минус" - это будет второй кватернион, выражающий тот же поворот)
Подставляя μ0 в (16.1), (16.2), найдём:
Тем самым, мы узнали компоненты первого кватерниона (вращения вокруг оси X) и скалярную компоненту второго.
Теперь выпишем уравнения для оставшихся двух компонент:
Это не что иное, как поворот на плоскости на угол α/2. Чтобы найти μy и μz, произведём поворот в обратную сторону:
Задача решена.
Если нам нужно узнать лишь угол поворота по оси X, достаточно формулы
Здесь arctan2(y,x) - математическая функция, возращающая угол на плоскости между осью X и вектором (x,y), с учётом квадранта. Фактически,
эта функция присутствует в большинстве математических библиотек.
Наконец, возможен вариант, что нам не так интересен сам угол, как синус и косинус от него. Их можно найти весьма элегантным способом напрямую из исходного кватерниона Λ, обойдясь только арифметическими операциями.
Из выражений (16.1), (16.2) получаем
и наконец,
Аналогично находим
Напомним, что есть достаточно простой способ осуществления обратного преобразования - получения синуса и косинуса половинных углов при известных синусе и косинусе полного угла. Подробности см. в Часть 6, дополнение 3.
В следующей части приведём практический пример, как вообще с этим всем обращаться. Очень скучный, но познавательный.
PS. Принимаются пожелания, в каком порядке должны излагаться главы этого ликбеза. Возможно, часть из них надо переставить местами. Всякие "дополнения 3" сейчас переименую во что-то более осмысленное.