Что такое вращение кватерниона? - PullRequest
19 голосов
/ 26 октября 2010

Является ли вращение кватерниона просто вектором с X, Y, Z, к которому будет вращаться объект, и креном, который поворачивает объект вокруг своей оси?

Это так просто?

То есть, если у вас есть X = 0, Z = 0 и Y = 1, объект будет обращен вверх?
А если у вас есть Y = 0, Z = 0 и X = 1, то объект будет направлен вправо?

(при условии X вправо, Y вверх и Z глубина)

Ответы [ 2 ]

42 голосов
/ 26 октября 2010

Кватернион имеет 4 компонента, которые могут быть связаны с углом & theta; и вектор оси n . В результате вращения объект будет вращаться вокруг оси n на угол & theta;.

Например, если у нас есть куб вроде

 ______
|\  6  \
| \_____\     z
|5 |    | : y ^
 \ | 4  |    \|
  \|____|     +--> x

Тогда вращение на 90 & deg; вокруг оси (x = 0, y = 0, z = 1) повернет грань «5» слева направо.

 ______
|\  6  \
| \_____\      z
|3 |    | :  x ^
 \ | 5  |     \|
  \|____|  y<--+

(Примечание. Это описание поворота оси / угла, которое вводит в заблуждение OP. О том, как кватернион применяется к вращению, см. http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation)

18 голосов
/ 26 октября 2010

A кватернион в общем случае является расширением комплексного числа на 4 измерения.Так что нет, они не просто x, y и z, а угол, но они близки.Подробнее ниже ...

Кватернионы могут использоваться для представления вращения , поэтому они полезны для графики:

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

Так, каковы 4 компонента и как они связаны с вращением?

Точка [единица кватерниона] (w, x, y, z) представляет вращение вокруг оси, направленной вектором (x, y, z) на угол альфа = 2 cos -1 w = 2 sin -1 sqrt (x 2 + y 2 + z 2 ).

Итак, вернемся к вашему вопросу,

То есть, если у вас есть X = 0, Z = 0 и Y = 1, объект будет обращен вверх?

Нет ..объект будет вращаться вокруг этого <0,1,0> вектора, то есть он будет вращаться вокруг оси y, поворачиваясь против часовой стрелки, как видно сверху, если ваша графическая система использует правостороннее вращение.(И если мы подключим w = sqrt (1 - (0 + 1 + 0)), ваш кватернион единицы будет (0,0,1,0), и он будет вращаться на угол 2 cos -1 0, = 2 * 90 градусов = 180 градусов или пи радиан.)

А если у вас Y = 0, Z = 0 и X = 1, то объект будет направлен вправо?

Он будет вращаться вокруг вектора <1,0,0>, оси x, поэтому он будет вращаться против часовой стрелки, если смотреть в положительном направлении x (например, вправо).Таким образом, верх будет поворачиваться вперед (на 180 градусов, поэтому он будет вращаться, пока не будет обращен вниз).

...