Методы определения вращения в пространстве, плюсы

advertisement
Методы определения вращения в пространстве, плюсы и минусы
различных подходов
Варламов М.А., Васильевых И.А., Берестова С.А.
Уральский федеральный университет имени первого Президента России
Б.Н. Ельцина
Введение.
Для позиционирования положения точки в трехмерном физическом
пространстве традиционно используется прямоугольная декартова система
координат. Пусть существует некоторая система координат и находящееся в
ней тело. У тела существует собственная локальная система координат в виде
трёх осей: X, Y, Z с началом в той же точке. Каждая точка тела задаётся с
помощью координаты в локальной системе. Поворотом называется
преобразование, при котором каждая точка жестко связанная с локальной
системой координат меняет свое положение в пространстве за счет
изменения положения этой локальной системы координат. Задача задания
поворотов решается в различных приложениях: управление мобильными
системами, робототехническими комплексами, при имитационном
моделировании и компьютерной графике. Существуют разные подходы к
математическому описанию проблемы задания поворотов, каждое из
которых имеет свои плюсы и минусы.
Задание поворотов с помощью углов Эйлера.
Пусть локальная система координат задаётся осями x, y, z, а основная –
X, Y, Z. Линия, по которой пересекаются плоскости xy и XY называется
линией узлов. Угол прецессии – угол между осью x и линией узлов, угол
нутации – угол между осями z и Z, угол собственного вращения – угол между
осью Х и линией узлов. Задание поворота углами Эйлера удобно с точки
зрения физического обоснования. Для перехода из локальной системы
координат в основную необходимо последовательно совершить 3 поворота:
1) Вокруг оси z на угол прецессии, получая ось Х,
2) Вокруг оси Х на угол нутации, получая ось Z,
3) Вокруг оси Z на угол собственного вращения, получая ось Y.
Комбинирование поворотов требует достаточно сложных вычислений.
Другой способ описание поворотов основан на использовании углов
(самолетных, корабельных) Крылова, предполагающие следующую
последовательность:
1) Вокруг оси z,
2) Вокруг полученной оси Y,
3) Вокруг полученной оси Z.
Третья часто используемая разновидность углов Эйлера – повороты вокруг
первоначальных осей x, y, z. Данный способ является наиболее простым по
количеству вычислений, но имеет ряд серьёзных недостатков:
1) Каждый поворот меняет ориентацию объекта, в результате чего
различная последовательность поворотов даёт разные повороты,
2) Изменение углов поворота даёт новый поворот, не являющийся суммой
первого и второго поворотов.
Кроме того все виды углов Эйлера имеют два серьёзных недостатка:
1) Сложность интерполяции поворотов,
2) Явление «складывания рамок» («шарнирный замок»), или «Gimball
lock»
Явление «складывания рамок» связано со схожестью природы углов
Эйлера и гироскопа. У твёрдого тела существует 3 степени свободы,
связанные с поворотами. Пусть в левой системе координат тело совершает
поворот вокруг оси z направо на 90 градусов, затем вокруг оси y на такой же
угол. При этом ось Z становится параллельна оси y, что лишает систему
одной степени свободы. Говоря другими словами, для совершения поворота
не хватает осей. Так же и в гироскопе вращение внутренних колец зависит от
внешних.
При всех своих недостатках углы Эйлера являются интуитивно
понятными. Но при попытке ими воспользоваться будет получен
неожиданный результат. Удачной областью применения углов Эйлера может
служить использование постоянных во времени поворотов.
Задание поворотов с помощью матрицы поворота.
Удобным способом задания поворотов является использование матриц
поворота. Комбинирование поворотов в этом случае осуществляется простой
операцией – перемножением матриц. Обычно при использовании
однородных координат необходима матрица размерности 4x4, при этом
учитывается и поступательное перемещение локальной системы координат.
Допустимо использование и матриц размером 3х3 без учета поступательного
перемещения.
Для поворота вокруг произвольной оси ⃗ на угол
воспользоваться формулой Родрига, задающую матрицу
следующим равенством:
можно
поворота
( ⃗, ) = cos( ) ∗ + (1 − cos( ))
0
+ sin( )
−
−
0
−
0
Умножение матрицы А слева на вектор-столбец координат точки тела
приведёт к повороту этой точки вокруг оси ⃗ на угол .
Главным плюсом матричного подхода является его «понимание»
компьютером – видеокарта, используя шейдеры, а так же все математические
библиотеки, работающие с процессором и сопроцессором, используют
матрицы. Недостатком матричного метода является невозможность его
интерполяции. Идеальная область применения матричных поворотов –
повороты вокруг одной из трёх осей за счёт стандартных матриц поворота
вокруг этих осей, потребляющих минимум вычислительного времени.
Задание поворотов с помощью кватернионов.
Пусть есть четырёхмерный вектор (w, x, y, z). Компоненты x, y, z
определяют ось, вокруг которой производится поворот. Угловой величиной
поворота будет компонента w. Произведение вида
осуществляет
поворот, где q – кватернион, задающий поворот, а v – радиус-вектор точки.
Будучи четырёхмерным вектором, кватернион прекрасно вписывается в
векторную математику без каких-либо изменений.
Преобразование кватерниона в матрицу поворота выглядит следующим
образом:
1−2 −2
=
2 +2
2 −2
2 −2
1−2 −2
2 +2
2 +2
2 −2
1−2 −2
Наиболее сильной стороной кватернионов является простота их
интерполяции. Сферическая интерполяция (SLERP) задается формулой
=
sin (1 − )
+
sin( )
sin( )
При малых углах функция синуса приближенно равна самому углу.
Пожертвовав точностью можно получить большой прирост скорости за счёт
замены сферической интерполяции линейной.
Download