РАЗНОЕ 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, и получается такая вот таблица умножения комплексных единиц (умножение действительных чисел между собой и на комплексные единицы действует по обычным правилам, так что все свойства кватернионов определяются, в общем, этой таблицей):
Кроме того, из этих правил можно вывести правило для умножения кватернионов, заданных в форме [scalar,vector]: q1 = [s1,v1], q2 = [s2,v2], q1*q2 = [s1*s2 - v1*v2, s1*v2 + s2*v1 + v1xv2]. Здесь v1*v2 - скалярное произведение векторов v1, v2; v1xv2 - векторное, все остальные произведения обычные (либо число на число, либо число на вектор). Нужны же кватернионы для представления и интерполяции поворотов. |