2.9 KiB
Версоры
Кватернионы - это гиперкомплексные числа, у которых имеется одна действительная компонента и три комплексных компоненты:
Кватернион имеет четыре степени свободы. Но если ввести ограничение в виде требования, чтобы модуль этого кватерниона был равен единице, то такое множество кватернионов будет иметь только три степени свободы.
Эти кватернионы представляют собой сферу радиуса 1 в четырёхмерном пространстве. "Поверхность" этой сферы имеет размерность равную трём.
Кватернионы единичной длины очень хорошо описывают повороты в трёхмерном пространстве. И это логично, потому что повороты в трёхмерном пространстве имеют три степени свободы, точно также как и сфера в четырёхмерном пространстве
Для кватерниона единичной длины существует специальное название: версор.
Версоры - это кватернионы единичной длины. И к определению кватерниона необходимо просто добавить уравнение:
Версоры в библиотеке
Библиотека имеет отдельную реализацию для версоров в виде специальных структур и набора функций, которые поддерживают модуль версоров близким к единице.
Для описания версора имеется две структуры: BgFP32Versor и BgFP64Versor:
typedef struct {
const float s0, x1, x2, x3;
} BgFP32Versor;
typedef struct {
const double s0, x1, x2, x3;
} BgFP64Versor;
Поля намеренно объявлены констрантными (const), чтобы у разработчика, использующего данные структуры, не было соблазна изменять значения полей напрямую.
С данными структурами лучше использовать специальные функции, которые позволяют устанавливать новые значения в поля структур BgFP32Versor и BgFP64Versor.