Алгоритм нормализованного 3D поворота
| В этой статье слишком короткое вступление.
Пожалуйста, дополните вводную секцию, кратко раскрывающую тему статьи и обобщающую её содержимое.
|
| Эту статью следует Энциклофицировать.
Пожалуйста, оформите её согласно правилам оформления статей.
|
Содержание |
[править] Описание проблемы
Проблема возникает при использовании Эйлеровых углов из-за того, что конечный результат серии вращений зависит от порядка промежуточных вращений. Если, например, горизонтальный плоский диск повернуть на 90 градусов относительно Y, а потом относительно X, то плоскость диска будет параллельна Y, а вектор нормали будет параллелен X. Если же сначала произвести поворот относительно X, а затем уже относительно Y, то плоскость диска будет параллельна X, а вектор нормали будет параллелен Y. Таким образом, разная последовательность одинаковых поворотов даёт совершенно разный результат. Аналогично, если объект последовательно вращается вокруг Z (на небольшой угол), Y, X - осей, и угол вращения вокруг оси Y равен 90 градусам, то вращение вокруг оси Z происходит первым и, поэтому, корректно. Вращение вокруг оси Y тоже совершается корректно. Но после вращения вокруг оси Y на 90 градусов, ось X отображается на ось Z. Таким образом, совершая вращение вокруг (относительной) X-оси мы фактически вращаем объект вокруг (абсолютной) оси Z.
[править] Шарнирный замок
Вращение вокруг одной оси отображается на вращение вокруг другой оси. Когда оси двух шарниров оказываются параллельными друг другу, вы теряете одну степень свободы в системе. В этом случае может быть невозможно вращать объект вокруг желаемой оси.
[править] Решение проблемы
Полностью избавиться от проблемы можно при помощи Алгоритма нормализованного 3D поворота. Задача решается средствами векторной алгебры, в случае полного определения плоскости и траектории вращения каждой из точек 3D объекта. Перемещение точки вычисляется в афинной системе координат. Все плоскости вращения удерживаются единым вектором нормали. Алгоритм обеспечивает корректный пересчёт углов вращения (собственного вращения, прецессии и нутации) и позволяет избежать "шарнирного замка", возникающего при использовании эйлеровых углов в классической 3D матрице поворота. Тем самым отменяется необходимость в использовании тензоров и кватернионов поворота при построении 3D сцены кругового движения и круговом обзоре трёхмерного объекта. Алгоритм нормализованного 3D поворота позволяет корректно решать задачи из серии Three-stage gyro (Трехстепенный гироскоп), в которых даже при использовании кватернионов может возникать блокировка вращения, когда во время вращения вокруг двух или более осей оси оказываются расположенными параллельно друг другу, что приводит к получению непредвиденных результатов.
[править] Ссылки
- [1] Проблема "шарнирного замка".
- [2] Панов А. Алгоритм нормализованного 3D поворота (Вычисление окружности в 3D).
