Самоучитель по 3dsmax 7

         

Кватернионы


Кватернионы РАЗНОЕ
7.7. Кватернионы

Кватернион, он же гиперкомплексное число, представляет собой набор четырех чисел. Иногда будет удобно представлять себе кватернион как 4D-вектор, иногда как набор четырех чисел, иногда как число и 3D-вектор, а иногда и как гиперкомплексное число с тремя мнимыми единицами i, j, k; таким образом, имеем следующие представления:

q = [x1,x2,x3,x4] = [scalar,(vector)] = [x1,(x2,x3,x4)] = x1+x2*i+x3*j+x4*k.

Сложить или вычесть два кватерниона, а также умножить кватернион на число можно, как обычно, покомпонентно; с умножением ситуация более сложная. Умножение кватернионов должно в результате дать тоже кватернион, то есть конструкцию, содержащую лишь слагаемые вида r и r*l, где r - действительное число, а l - одна из мнимых единиц. Поэтому надо как-то определить операцию умножения для любых двух мнимых единиц. Определяется она так, что умножение получается некоммутативным, т.е. от перестановки мест множителей произведение меняется, и x*y != y*x. Поэтому умножение двух кватернионов приходится выполнять не по привычным правилам арифметики, а по следующим аксиомам: a*(b*c) = (a*b)*c, (ассоциативность) (a+b)*c = a*c+b*c, (транзитивность) a*(b+c) = a*b+a*c, (транзитивность) a*1 = 1*a = a, (существование единицы) a*0 = 0*a = 0, (существование нуля) i*i = j*j = k*k = -1, (свойство мнимых единиц) i*j = -j*i = k. (связь между мнимыми единицами i, j, k)

Из этих правил, кстати, следует, что j*k = -k*j = i, k*i = -i*k = j,

и получается такая вот таблица умножения комплексных единиц (умножение действительных чисел между собой и на комплексные единицы действует по обычным правилам, так что все свойства кватернионов определяются, в общем, этой таблицей):

 второй множитель
первый множительijk
i-1k-j
j-k-1i
kj-i-1

Кроме того, из этих правил можно вывести правило для умножения кватернионов, заданных в форме [scalar,vector]:

q1 = [s1,v1],
q2 = [s2,v2],
q1*q2 = [s1*s2 - v1*v2, s1*v2 + s2*v1 + v1xv2].

Здесь v1*v2 - скалярное произведение векторов v1, v2; v1xv2 - векторное, все остальные произведения обычные (либо число на число, либо число на вектор).

Нужны же кватернионы для представления и интерполяции поворотов.



Содержание раздела