Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Лекция



Сразу хочу сказать, что здесь никакой воды про гиперкомплексные числа, и только нужная информация. Для того чтобы лучше понимать что такое гиперкомплексные числа, кватернионы , настоятельно рекомендую прочитать все из категории Алгебра.

гиперкомплексные числа — конечномерные алгебры над полем вещественных чисел (то есть числа, над которыми есть пара операций [типа сложения и умножения], также еще «умножение на вещественное число»).

Свойства

  • Кроме комплексных чисел, никакие из этих расширений не образуют поля.
  • По теореме Фробениуса единственные гиперкомплексные числа, для которых можно ввести деление, без делителей нуля, это: комплексные числа, кватернионы ичисла Кэли (октавы).
  • Семейство «алгебр Клиффорда» задает многомерные пространства с «умножением», определяемым квадратичной псевдометрикой.

Примеры

  • Комплексные числа, Паракомплексные (=Двойные числа), Дуальные числа
  • Бикомплексные числа
  • Кватернионы, Бикватернионы, Паракватернионы, Дуальные кватернионы
  • Алгебра Кэли (=октонионы)
  • Седенионы
  • Поличисла

Кватернион

Кватернио́ны (от лат. quaterni, по четыре) — система гиперкомплексных чисел, образующая векторное пространство размерностью четыре над полем вещественных чисел. Обычно обозначаются Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. Предложены Уильямом Гамильтоном в 1843 году.

Кватернионы удобны для описания изометрий трех- и четырехмерного евклидовых пространств, и поэтому получили широкое распространение в механике. Также их используют в вычислительной математике, например, при создании трехмерной графики.

Анри Пуанкаре писал о кватернионах: «Их появление дало мощный толчок развитию алгебры; исходя от них, наука пошла по пути обобщения понятия числа, придя к концепциям матрицы и линейного оператора, пронизывающим современную математику. Это была революция в арифметике, подобная той, которую сделал Лобачевскийв геометрии» .

Кватернионы были введены Гамильтоном в XVIII веке. Кватернионы являются 4-х мерным расширением множества комплексных чисел, другими словами — это гиперкомплексные числа. То есть кватернион q задается четверкой чисел (x, y, z, w):

w + xi + yj + zk
, где i2 = j2 = k2 = –1.

Его можно также записывать в виде:

[w,v]
, где w называют скаляр, а v = (x, y, z) — вектор.

Определения

Стандартное

Кватернионы можно определить как формальную сумму Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр где Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — вещественные числа, а Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игрмнимые единицы со следующим свойством: Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. Таким образом, таблица умножения базисных кватернионовГиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — выглядит так:


\begin{matrix}
& \times & \mathbf1 & \mathbf{i} & \mathbf{j} & \mathbf{k} \\
& \mathbf1 & \,1 & \,i & \,j & \,k \\
& \mathbf{i} & \,i & \,-1 & \,k & \,-j \\
& \mathbf{j} & \,j & \,-k & \,-1 & \,i \\
& \mathbf{k} & \,k & \,j & \,-i & \,-1 \\
\end{matrix}

Например, Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, a Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

Как вектор и скаляр

Кватернион представляет собой пару Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр где Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — вектор трехмерного пространства, а Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — скаляр, то есть вещественное число.

Операции сложения определены следующим образом:

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Произведение определяется следующим образом:

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

где Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр обозначает скалярное произведение, а Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — векторное произведение.

В частности,

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Заметим, что:

  • Алгебраические операции в кватернионах обладают свойством дистрибутивности;
  • Антикоммутативность векторного произведения влечет некоммутативность произведения кватернионов.

Через комплексные числа

Произвольный кватернион Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр можно представить как пару комплексных чисел в виде

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

или эквивалентно

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

где Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — комплексные числа, поскольку Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр выполняется как для комплексных чисел, так и для кватернионов, а Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

Через матричные представления

Вещественными матрицами

Кватернионы также можно определить как вещественные матрицы следующего вида с обычными матричными произведением и суммой:

\begin{pmatrix}
 a & -b    & -c     & -d \\ 
 b & \;\;a & -d     & \;\; c \\
 c & \;\;d & \;\; a & -b \\
 d & -c    & \;\; b & \;\; a 
\end{pmatrix}.

При такой записи:

  • сопряженному кватерниону соответствует транспонированная матрица:

    
\bar q \mapsto 
Q ^ T
;

  • четвертая степень модуля кватерниона равна определителю соответствующей матрицы:

    
\left|q \right| ^ 4 =
\det Q
.

Комплексными матрицами

Альтернативно, кватернионы можно определить как комплексные матрицы следующего вида с обычными матричными произведением и суммой:

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

здесь Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр и Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр обозначают комплексно-сопряженные числа к Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр и Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

Такое представление имеет несколько замечательных свойств:

  • комплексному числу соответствует диагональная матрица;
  • сопряженному кватерниону соответствует сопряженная транспонированная матрица:

    
\bar q \mapsto 
\bar Q ^ T
;

  • квадрат модуля кватерниона равен определителю соответствующей матрицы:

    
\left|q \right| ^ 2 =
\det Q
.

Связанные объекты и операции

Для кватерниона

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

кватернион Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр называется скалярной частью Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр а кватернион Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игрвекторной частью. Если Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр то кватернион называется чисто скалярным, а при Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игрчисто векторным.

Сопряжение

Для кватерниона Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр сопряженным называется:

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Сопряженное произведение есть произведение сопряженных в обратном порядке:

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Для кватернионов справедливо равенство

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Модуль

Так же, как и для комплексных чисел,

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

называется модулем Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. Если Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр то Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр называется единичным кватернионом.

В качестве нормы кватерниона обычно рассматривают его модуль:  \left\|z \right\| =
\left |z \right | .

Таким образом, на множестве кватернионов можно ввести метрику. Кватернионы образуют метрическое пространство, изоморфное Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр с евклидовой метрикой.

Кватернионы с модулем в качестве нормы образуют банахову алгебру.

Из тождества четырех квадратов вытекает, что Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр иными словами, кватернионы обладают мультипликативной нормой и образуют ассоциативную алгебру с делением.

Обращение умножения (деление)

Кватернион, обратный по умножению к Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, вычисляется так: Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

Алгебраические свойства

Четыре базисных кватерниона и четыре противоположных им по знаку образуют по умножению группу кватернионов (порядка 8). Обозначается:

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

Множество кватернионов является примером кольца с делением.

Множество кватернионов образует четырехмерную ассоциативную алгебру с делением над полем вещественных (но не комплексных) чисел. Вообще Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр являются единственными конечномерными ассоциативными алгебрами с делением над полем вещественных чисел .

Некоммутативность умножения кватернионов приводит к неожиданным последствиям. Например, количество различных корней полиномиального уравнения над множеством кватернионов может быть больше, чем степень уравнения. В частности, уравнение 
q^2 + 1 = 0 имеет бесконечно много решений — это все единичные чисто векторные кватернионы.

Кватернионы и повороты пространства

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр
Организация трех степеней свободы, но окончательная свобода меньших колец зависит от положения больших колец

Кватернионы, рассматриваемые как алгебра над Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, образуют четырехмерное вещественное векторное пространство. Об этом говорит сайт https://intellect.icu . Любой поворот этого пространства относительно Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр может быть записан в виде Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, где Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр и Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — пара единичных кватернионов, при этом пара Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр определяется с точностью до знака, то есть один поворот определяют в точности две пары — Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр и Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. Из этого следует, что группа Ли Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр поворотов Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр есть факторгруппа Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, где Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр обозначает мультипликативную группу единичных кватернионов.

Чисто векторные кватернионы образуют трехмерное вещественно векторное пространство. Любой поворот пространства чисто векторных кватернионов относительно Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр может быть записан в виде Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, где Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — некоторый единичный кватернион. Соответственно, Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, в частности, Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр диффеоморфно Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

«Целые» кватернионы

В качестве нормы кватерниона выберем квадрат его модуля: 
\left\|z \right\| = \left |z \right | ^ 2 .

Целыми по Гурвицу (также engl) принято называть кватернионы Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр такие, что все Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — целые и одинаковой четности.

Целый кватернион называется

  • четным
  • нечетным
  • простым

если таким же свойством обладает его норма.

Целый кватернион называется примитивным, если он не делится ни на какое натуральное число, кроме Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, нацело (иными словами, 
\gcd \left(2a, 2b, 2c, 2d \right) \le 2
).

Целые единичные кватернионы

Существует 24 целых единичных кватерниона:

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр,

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

Они образуют группу по умножению и лежат в вершинах правильного четырехмерного многогранника — кубооктаэдра (не путать с трехмерным многогранником-кубооктаэдром).

Разложение на простые сомножители

Для примитивных кватернионов верен аналог основной теоремы арифметики.

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


q = 
\left(q_1 \epsilon_1 \right)
\left(\bar\epsilon_1 q_2 \epsilon_2 \right)
\left(\bar\epsilon_2 q_3 \epsilon_3 \right)
...
\left(\bar\epsilon_{n-1} q_n \right)
,

где 
\epsilon_1, 
\epsilon_2, 
\epsilon_3, … 
\epsilon_{n-1} — целые единичные кватернионы.

Например, примитивный кватернион Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр имеет норму 60, значит, по модулю домножения на единицы он имеет ровно 12 разложений в произведение простых кватернионов, отвечающих 12 разложениям числа 60 в произведений простых:

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Общее число разложений такого кватерниона равно Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Функции кватернионного переменного

Вспомогательные функции

Знак кватерниона вычисляется так:


\operatorname {sgn}\, q =
\frac {q} {\left|q \right|}
.

Аргумент кватерниона — это угол поворота четырехмерного вектора, который отсчитывается от вещественной единицы:

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

В дальнейшем используется представление заданного кватерниона Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр в виде

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Здесь Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — вещественная часть кватерниона, Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. При этом Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, поэтому проходящая через Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр и вещественную прямую плоскость имеет структуру алгебры комплексных чисел, что позволяет перенести на случай кватернионов произвольные аналитические функции. Они удовлетворяют стандартным соотношениям, если все аргументы имеют вид Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр для фиксированного единичного вектора Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. В случае если требуется рассматривать кватернионы с разным направлением, формулы значительно усложняются, в силу некоммутативности алгебры кватернионов.

Элементарные функции

Стандартное определение аналитических функций на ассоциативной нормированной алгебре основано на разложении этих функций в степенные ряды. Рассуждения, доказывающие корректность определения таких функций, полностью аналогичны комплексному случаю и основаны на вычислении радиуса сходимости соответствующих степенных рядов. Учитывая указанное выше «комплексное» представление для заданного кватерниона, соответствующие ряды можно привести к указанной ниже компактной форме. Здесь приведены лишь некоторые наиболее употребительные аналитические функции, аналогично можно вычислить любую аналитическую функцию. Общее правило таково: если Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр для комплексных чисел, то Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, где кватернион Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр рассматривается в «комплексном» представлении Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

Степень и логарифм

 
\exp q = \exp a \left(
\cos \left|\mathbf{u} \right| + \sin \left| \mathbf{u} \right|  \hat{\mathbf{u}}
\right)

 
\ln q = \ln \left|q \right| + \arg q\, \hat{\mathbf{u}}

Отметим, что, как обычно в комплексном анализе, логарифм оказывается определен лишь с точностью до Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

Тригонометрические функции

 
\sin q 
= 
\sin a \,
\operatorname {ch} \left|\mathbf{u} \right| 
+
\cos a \, \operatorname {sh} \left|\mathbf{u} \right| \hat{\mathbf{u}}

 
\cos q 
= 
\cos a \,
\operatorname {ch} \left|\mathbf{u} \right| 
-
\sin a \, \operatorname {sh} \left|\mathbf{u} \right| \hat{\mathbf{u}}

 
\operatorname {tg}\, q 
= \frac{\sin q}{\cos q}

Регулярные функции

Существуют разные способы определения регулярных функций кватернионного переменного. Самый явный — рассмотрение кватернионно дифференцируемых функций, при этом можно рассматривать праводифференцируемые и леводифференцируемые функции, не совпадающие в силу некоммутативности умножения кватернионов. Очевидно, что их теория полностью аналогична. Определим кватернионно леводифференцируемую функцию Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр как имеющую предел

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Оказывается, что все такие функции имеют в некоторой окрестности точки Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр вид

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

где Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр — постоянные кватернионы. Другой способ основан на использовании операторов

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

и рассмотрении таких кватернионных функций Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, для которых

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

что полностью аналогично использованию операторов Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр и Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр в комплексном случае. При этом получаются аналоги интегральной теоремы Коши, теории вычетов,гармонических функций и рядов Лорана для кватернионных функций .

Производная Гато

Производная Гато функции кватернионного переменного определена согласно формуле

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Производная Гато является аддитивным отображением приращения аргумента и может быть представлена в виде

\partial f(x)(dx)=
\frac{{}_{(s)0}\partial f(x)}{\partial x}
dx
\frac{{}_{(s)1}\partial f(x)}{\partial x}

Здесь предполагается суммирование по индексу Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. Число слагаемых зависит от выбора функции Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. Выражения Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр и Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр называются компонентами производной.

Виды умножений

Умножение Грассмана

Так по-другому называется общепринятое умножение кватернионов (Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр).

Евклидово умножение

Отличается от общепринятого тем, что вместо первого сомножителя берется сопряженный к нему: Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. Оно также некоммутативно.

Скалярное произведение

Аналогично одноименной операции для векторов:

 
p \cdot q = \frac{\bar p q + \bar q p}{2}
.

Эту операцию можно использовать для выделения одного из коэффициентов, например, 
\left(a + bi + cj + dk\right) \cdot i = b
.

Определение модуля кватерниона можно видоизменить:

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр.

Внешнее произведение

	
\operatorname {Outer}\left(p, q\right) = \frac {\bar p q - \bar q p} {2}
.

Используется не очень часто, тем не менее рассматривается в дополнение к скалярному произведению.

Векторное произведение

Аналогично одноименной операции для векторов. Результатом является тоже вектор:

 
p \times q = \frac{pq - qp}{2}.

Из истории

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

Памятная табличка на мосту Брум Бридж в Дублине: «Здесь на прогулке, 16 октября 1843 года, во вспышке гения, сэр Уильям Роуэн Гамильтон открыл формулу перемножения кватернионов»

Система кватернионов была впервые опубликована Гамильтоном в 1843 году. Историки науки также обнаружили наброски по этой теме в неопубликованных рукописях Гаусса, относящихся к 1819—1820 годам.

Бурное и чрезвычайно плодотворное развитие комплексного анализа в XIX веке стимулировало у математиков интерес к следующей задаче: найти новый вид чисел, аналогичный по свойствам комплексным, но содержащий не одну, а две мнимые единицы. Предполагалось, что такая модель будет полезна при решении пространственных задач математической физики. Однако работа в этом направлении оказалась безуспешной.

Новый вид чисел был обнаружен ирландским математиком Уильямом Гамильтоном в 1843 году, и он содержал не две, как ожидалось, а три мнимые единицы. Гамильтон назвал эти числа кватернионами. Позднее Фробениус строго доказал (1877)теорему, согласно которой расширить комплексное поле до поля или тела с двумя мнимыми единицами невозможно.

Несмотря на необычные свойства новых чисел (их некоммутативность), эта модель довольно быстро принесла практическую пользу. Максвелл использовал компактную кватернионную запись для формулировки своих уравнений электромагнитного поля.[10]Позднее на основе алгебры кватернионов был создан трехмерный векторный анализ (Гиббс, Хевисайд).

Современное применение

В XX веке были сделаны несколько попыток использовать кватернионные модели в квантовой механике[11] и теории относительности[12]. Реальное применение кватернионы нашли в современной компьютерной графике и программировании игр[13], а также в вычислительной механике[14][15], в инерциальной навигации и теории управления[16][17]. С 2003 года издается журнал «Гиперкомплексные числа в геометрии и физике»[18].

Во многих областях применения были найдены более общие и практичные средства, чем кватернионы. Например, в наши дни для исследования движений в пространстве чаще всего применяется матричное исчисление[19]. Однако там, где важно задавать трехмерный поворот при помощи минимального числа скалярных параметров, использование параметров Родрига — Гамильтона (то есть четырех компонент кватерниона поворота) весьма часто оказывается предпочтительным: такое описание никогда не вырождается, а при описании поворотов тремя параметрами (например, углами Эйлера) всегда существуют критические значения этих параметров, когда описание вырождается[14][15].

Как алгебра над Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, кватернионы образуют вещественное векторное пространство Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, снабженное тензором третьего ранга Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр типа (1,2), иногда называемогоструктурным тензором. Как всякий тензор такого типа, Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр отображает каждую 1-форму Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр на Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр и пару векторов Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр из Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр в вещественное число Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. Для любой фиксированной 1-формы Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр превращается в ковариантный тензор второго ранга, который, в случае его симметрии, становится скалярным произведением на Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. Поскольку каждое вещественное векторное пространство является также вещественным линейным многообразием, такое скалярное произведение порождает тензорное поле, которое, при условии его невырожденности, становится (псевдо- или собственно-)евклидовой метрикой на Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр. В случае кватернионов это скалярное произведение индефинитно, его сигнатура не зависит от 1-формы Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр, а соответствующая псевдоевклидова метрика есть метрика Минковского[20]. Эта метрика автоматически продолжается на группу Ли ненулевых кватернионов вдоль ее левоинвариантных векторных полей, образуя так называемую закрытую ФЛРУ (Фридман — Леметр — Робертсон — Уолкер) метрику[21] — важное решение уравнений Эйнштейна. Эти результаты проясняют некоторые аспекты проблемы совместимости квантовой механики и общей теории относительности в рамках теории квантовой гравитации[22].

Кватернионы в программировании игр.

Существует несколько путей представления вращения объектов. Многие программисты используют для этого матрицы вращения или углы Эйлера. Каждое из этих решений работает замечательно, до тех пор, пока вы не пытаетесь осуществить гладкую интерполяцию между двумя разными положениями объекта. Например, представьте себе объект, который просто свободно вращается в пространстве. Если хранить вращение, как матрицу или в виде углов Эйлера, то гладкая интерполяция окажется довольно дорогостоящей по вычислениям и будет не столь гладкой, как при интерполяции кватернионами. Хотя и можно попытаться наиболее близко расставить временные ключи на стадии создания анимации, однако это влечет за собой хранение большего количества данных для данного вращения и не совсем тривиально ясно, какой выбирать шаг. Понятно, что и в этом случае без интерполяции не обойтись, никогда не известно какой FPS будет у игрока.

Многие игры от третьего лица используют кватернионы для анимации движения камеры. Все игры от третьего лица располагают камеру на некотором расстоянии от персонажа. Так как камера имеет другое движение, отличающееся от движения персонажа, например, при повороте персонажа - камера движется по дуге, то иногда бывает, что это движение выглядит не натурально, скачками. Это одна из проблем, которую можно решить при помощи кватернионов. Кватернионы также удобно использовать в летных симуляторах, таких как ИЛ-2 Штурмовик. Вместо манипулирования тремя углами (roll, pitch и yaw), представляя вращение вокруг осей x, y и z соответственно, намного проще использовать один кватернион. Да и вообще много игр и приложений трехмерной графики сохраняют ориентацию объектов в кватернионах. Например, легче добавить угловую скорость к кватерниону, чем к матрице.

Основные операции и свойства кватернионов

Рассмотрим два кватерниона: q[w,v] и q'[w',v']. Для них справедливо следующее:

q+q' = [w+w',v+v']

qq' = [ww' – v·v', vxv' + wv' + w'v]
, где x - векторное произведение, а · — скалярное.

norm(q) = sqrt(w2+x2+y2+z2) (размер)

q*=[w, –v] (сопряжение)

Гиперкомплексные числа. Кватернионы и их применение в зd графике при разработке игр

norm(q)=1 => q–1=q*

Кватернионы расширяют концепцию вращения в трехмерном пространстве до вращения в четырехмерном. Вращение можно задать единичным кватернионом (norm(q) = 1). Чтобы кватернион привести к единичному виду, или другими словами нормализовать, необходимо вычислить его размер norm(q) и все четыре члена кватерниона разделить на величину полученного размера.

Пространство кватернионов представляет собой 4-х мерное пространство. Множество всех единичных векторов — есть 4-х мерная сфера с радиусом 1. Кватернионы можно рассматривать, как добавление дополнительного угла поворота к сферическим координатам, (сферические координаты - долгота, широта, угол поворота).

Если вращение задано некоторым кватернионом q, то вектор v после вращения будет иметь вид v':

V'=q V q–1
, где V = [o,v], V'=[0,v']

Преобразования

Вращение вокруг оси

Рассмотрим вращение на угол Q вокруг оси, заданной направляющим вектором v. Это вращение можно задать кватернионом:
q=[cos(Q/2),sin(Q/2)v]

При необходимости нужно не забыть нормализовать полученный кватернион.

Преобразование сферических координат в кватернион

struct Quaternion{
  float x,y,z; // Вектор
  float w;     // Скаляр
};

//Преобразование сферических кординат в кватернион
void SphericalToQuaternion(Quaternion * q, float latitude, float longitude, 
                           float angle)
{
  float sin_a = sin( angle / 2 );
  float cos_a = cos( angle / 2 );

  float sin_lat = sin( latitude );
  float cos_lat = cos( latitude );

  float sin_long = sin( longitude );
  float cos_long = cos( longitude );

  q->x = sin_a * cos_lat * sin_long;
  q->y = sin_a * sin_lat;
  q->z = sin_a * sin_lat * cos_long;
  q->w = cos_a;
}

Углы Эйлера

Вращение задается yaw, pitch и roll. Тогда кватернион вычисляется следующим образом:

qroll = [cos (y/2), (sin(y/2), 0, 0)]
qpitch = [cos (q/2), (0, sin(q/2), 0)]
qyaw = [cos (f/2), (0, 0, sin(f/2))]
q = qyaw qpitch qroll

Преобразования матрицы поворота в кватернион

Для задания вращения достаточно матрицы размером 3x3. Однако, поскольку многие 3D API используют для трансформации матрицы размером 4x4, мы тоже будем рассматривать такую размерность матрицы. При этом, чтобы дополнительные данные не влияли на смысл матрицы, дополнительные строка и столбец выставляются в ноль, за исключением их пересечения, которое выставляется в 1. Ниже приведен код преобразования матрицы поворота в кватернион. Ясно, что эта матрица не должна нести в себе другую информацию кроме вращения, например — масштабирование.

// Преобразование матрицы в кватернион
void MatrixToQuaternion(Quaternion * quat, float m  )
{
  float  tr, s, q ;
  int    i, j, k;

  int nxt  = {1, 2, 0};

  tr = m   + m   + m  ;

  if (tr > 0.0)
  {
    s = sqrt (tr + 1.0);
    quat->w = s / 2.0;
    s = 0.5 / s;
    quat->x = (m   - m  ) * s;
    quat->y = (m   - m  ) * s;
    quat->z = (m   - m  ) * s;
  }
  else
  {
    i = 0;
    if (m   > m  ) i = 1;
    if (m   > m[i][i]) i = 2;
    j = nxt[i];
    k = nxt[j];

    s = sqrt ((m[i][i] - (m[j][j] + m[k][k])) + 1.0);

    q[i] = s * 0.5;

    if (s != 0.0) s = 0.5 / s;

    q  = (m[j][k] - m[k][j]) * s;
    q[j] = (m[i][j] + m[j][i]) * s;
    q[k] = (m[i][k] + m[k][i]) * s;

    quat->x = q ;
    quat->y = q ;
    quat->z = q ;
    quat->w = q ;
  }
}

Преобразование единичного кватерниона в матрицу поворота

Преобразование единичного кватерниона в матрицу поворота можно записать в виде:

TRot = [ 1-2y2-2z2 2xy-2wz 2xz+2wy
2xy+2wz 1-2x2-2z2 2yz-2wx
2xz-2wy 2yz+2wx 1-2x2-2y2 ]

// Преобразование кватерниона в матрицу
void QuaternionToMatrix(float m  , const Quaternion * quat)
{
  float wx, wy, wz, xx, yy, yz, xy, xz, zz, x2, y2, z2;
  x2 = quat->x + quat->x;
  y2 = quat->y + quat->y;
  z2 = quat->z + quat->z;
  xx = quat->x * x2;   xy = quat->x * y2;   xz = quat->x * z2;
  yy = quat->y * y2;   yz = quat->y * z2;   zz = quat->z * z2;
  wx = quat->w * x2;   wy = quat->w * y2;   wz = quat->w * z2;

  m  =1.0f-(yy+zz); m  =xy-wz;        m  =xz+wy;
  m  =xy+wz;        m  =1.0f-(xx+zz); m  =yz-wx;
  m  =xz-wy;        m  =yz+wx;        m  =1.0f-(xx+yy);

  m   = m   = m   = 0;
  m   = m   = m   = 0;
  m   = 1;
}

При работе с иерархией объектов и инверсной кинематикой возникает композитное задание вращения. В этом случае использование кватернионов предпочтительнее, чем матриц. То есть, если вращение задано двумя матрицами R1 и R2, то чтобы вычислить матрицу поворота нужно перемножить эти матрицы: R = R1 x R2. Аналогично, если вращение задано двумя кватернионами q1 и q2, то результирующий кватернион поворота будет q = q1 x q2. Ясно, что вычисление произведения кватернионов происходит быстрее, чем матриц. Причем произведение кватернионов можно оптимизировать:

void MulQuaternions(Quaternion *res, 
                    const Quaternion *q1, const Quaternion *q2)
{
  float A, B, C, D, E, F, G, H;

  A = (q1->w + q1->x) * (q2->w + q2->x);
  B = (q1->z - q1->y) * (q2->y - q2->z);
  C = (q1->x - q1->w) * (q2->y + q2->z);
  D = (q1->y + q1->z) * (q2->x - q2->w);
  E = (q1->x + q1->z) * (q2->x + q2->y);
  F = (q1->x - q1->z) * (q2->x - q2->y);
  G = (q1->w + q1->y) * (q2->w - q2->z);
  H = (q1->w - q1->y) * (q2->w + q2->z);

  res->w = B + (-E - F + G + H) * 0.5;
  res->x = A - ( E + F + G + H) * 0.5; 
  res->y =-C + ( E - F + G - H) * 0.5;
  res->z =-D + ( E - F - G + H) * 0.5;
}

Гладкая интерполяция

Одним из наиболее полезных свойств кватернионов является достижение гладкой анимации при интерполяции. Рассмотрим интерполяцию между двумя кватернионами, которые задают вращение. При этом интерполяция происходит вдоль кратчайшей дуги. Этого можно достичь при помощи сферической линейной интерполяции (SLERP - Spherical Linear intERPolation):

SLERP(t) = (p sin((1–t)a) – q sin(ta)) / sin(a)

где q и p - кватернионы.
t - изменяется от 0 до 1,
a - угол между q и p, cos(a) = (q,p)/(|q|*|p|) = (q,p).

При очень маленьких a, чтобы избежать деления на ноль, пользуйтесь обычной линейной интерполяцией. Реализация:

void Slerp(Quaternion * res
           Quaternion * q, Quaternion * p, float t)
{
  float p1 ;
  double omega, cosom, sinom, scale0, scale1;

  // косинус угла
  cosom = q->x*p->x + q->y*p->y + q->z*p->z + q->w*p->w;

  if ( cosom <0.0 )
  { 
    cosom = -cosom;
    p1  = - p->x;  p1  = - p->y;
    p1  = - p->z;  p1  = - p->w;
  }
  else
  {
    p1  = p->x;    p1  = p->y;
    p1  = p->z;    p1  = p->w;
  }

  if ( (1.0 - cosom) > DELTA )
  {
    // стандартный случай (slerp)
    omega = acos(cosom);
    sinom = sin(omega);
    scale0 = sin((1.0 - t) * omega) / sinom;
    scale1 = sin(t * omega) / sinom;
  }
  else
  {        
    // если маленький угол - линейная интерполяция
    scale0 = 1.0 - t;
    scale1 = t;
  }

  res->x = scale0 * q->x + scale1 * p1 ;
  res->y = scale0 * q->y + scale1 * p1 ;
  res->z = scale0 * q->z + scale1 * p1 ;
  res->w = scale0 * q->w + scale1 * p1 ;
}

Кватернионы в DirectX

Вместе с DirectX SDK поставляется утилитная библиотека Direct3DX utility library. В ней немного места уделено и кватернионам. Кватернион задается структурой:

typedef struct D3DXQUATERNION {
  FLOAT x,y,z,w;
} D3DXQUATERNION;

Есть набор функций для работы со стандартными возможностями кватернионов:

Перемножение двух кватернионов:
D3DXQuaternionMultiply()

Получить размер:
D3DXQuaternionLength()

Нормализация:
D3DXQuaternionNormalize()

Преобразование улов Эйлера в кватернион:
D3DXQuaternionRotationYawPitchRoll()

Преобразование матрицы вращения в кватернион и обратно:
D3DXQuaternionRotationMatrix()
D3DXMatrixRotationQuaternion()

Сферическая линейная интерполяция:
D3DXQuaternionSlerp()

И т.д. Полное описание всех функций смотрите в DirectX SDK.

Кватернионы в MAX SDK

В Max SDK кватернионы описываются классом С++:

class Quat{...};

Класс наполнен необходимыми методами и операторами. Конструкции языка С++ позволяют перегружать операторы, например, для кватернионов можно записать сумму в более читаемом виде:

q = q1+q2;

Кроме методов класса Quat, в классе для матриц Matrix3 есть метод преобразования из кватерниона:
void SetRotate(const Quat& q);

Кватернион, задающий вращение, можно получить для любого объекта сцены. Трансформация хранится в объектах класса INode. Сначала, нужно получить контроллер вращения из контроллера трансформации, затем воспользоваться методом GetValue() для этого контроллера:

void GetQuat(Quat * pQuat, const pNode * pNode)
{
  Control * pTransf = pNode->GetTMController();
  if(pTransf)
  {
    Control * pCtrl = pTransf->GetRotationController();
    if(pCtrl)
      pCtrl->GetValue(0, pQuat, NEVER, CTRL_ABSOLUTE);
  }
}

Во время экспорта будьте внимательны с координатными системами. Ваша координатная система может не совпадать с координатной системой выбранной в 3D Studio MAX. Например, ось z здесь направлена вверх, а многие другие API, включая DirectX и OpenGL, направляют вверх ось y. По этой причине в полученных кватернионах параметр y может не соответствовать вашему y. Например, при экспорте в координатную систему DirectX можно пользоваться следующим преобразованием, обратите внимание на знаки и на компоненты y и z:

dx_quat.x = -max_quat.x;
dx_quat.y = -max_quat.z;
dx_quat.z = -max_quat.y;
dx_quat.w =  max_quat.w;

Вау!! 😲 Ты еще не читал? Это зря!

  • Процедура Кэли — Диксона позволяет последовательно вводить новые мнимые единицы.
  • Кватернионы и вращение пространства
  • Кватернионный анализ
  • Октавы
  • Теорема Фробениуса
  • Шарнирный клин

Пожалуйста, пиши комментарии, если ты обнаружил что-то неправильное или если ты желаешь поделиться дополнительной информацией про гиперкомплексные числа Надеюсь, что теперь ты понял что такое гиперкомплексные числа, кватернионы и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Алгебра

создано: 2014-09-15
обновлено: 2021-03-13
134444



Рейтиг 7 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Алгебра

Термины: Алгебра