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