# Версоры [Кватернионы](./quaternion-rus.md) - это гиперкомплексные числа, у которых имеется одна действительная компонента и три мнимых компоненты: q = w + ix + jy + kz, где w - действительная компонена, x, y, z - мнимые компоненты, а i, j, k - мнимые единицы где - w, x, y, z ∈ R - действительные числа - i, j, k - мнимые единицы, удовлетворяющие следующим условиям: - i2 = j2 = k2 = ijk = -1 Кватернионы были открыты математиком Уильямом Гамильтоном и представлены публике в 1843 году. Позже Гамильтон предложил особый класс кватернионов, которые назвал версорами. ## Что такое версор? Версор - это кватернион, модуль которого равен единице. То есть, к формулам, определяющим кватернионы, необходимо добавить условие, что модуль кватерниона равен единице. К формулам, определяющим кватернион достаточно добавить уравнение равенства модуля единице: q = w + ix + jy + kz где - w, x, y, z ∈ R - действительные числа - i, j, k - мнимые единицы, удовлетворяющие следующим условиям: - i2 = j2 = k2 = ijk = -1 - w2 + x2 + y2 + z2 = 1 Название происходит от латинского глагола "versare", означающего "поворачивать", "вращать", к которому добавлено латинское окончание -or, обозначающее субъект, выполняющий действие. Дословно латинское слово "versor" можно перевести как "вращатель" или "поворачиватель". ## Применение версоров Версоры оказались отличным инструментом для описания поворотов в трёхмерном пространстве. Для комбинации двух последовательных поворотов полезной оказалась операция умножения кватернионов, а для получения обратного поворота - операция взятия сопряжённого кватерниона. При умножении двух версоров (кватернионов единичной длины) и при взятии сопряжённого версора результат также будет версором, то есть кватернионом единичной длины. Сложение и вычитание двух кватернионов, а также умножение и деление кватерниона на число оказались не нужны для описания поворотов в трёхмерном пространстве. Несмотря на то, что версоры как класс кватернионов были предложены ещё Уильямом Гамильтоном для описаний поворотов ещё в середине 19 века, в русскоязычной литературе термин "версор" встречается настолько редко, что можно сказать, что не употребляется. ## Преимущества версоров 1. **Сохранение модуля**: Версоры сохраняют модуль, равный единице, что предотвращает их вырождение. 2. **Эффективность**: Библиотека BGC автоматически нормализует версоры только при необходимости, что позволяет избежать лишних вычислений. ## Реализация в библиотеке BGC Библиотека BGC предоставляет отдельную реализацию для версоров в виде структур и функций, которые поддерживают модуль версоров близким к единице. ### Структуры ```c typedef struct { const float s0, x1, x2, x3; } BgcVersorFP32; typedef struct { const double s0, x1, x2, x3; } BgcVersorFP64; ``` Поля: - s0 - это вещественная часть версора. - x1, x2, x3 - Мнимые компоненты версора. ## Операции с версорами - [Сброс состояния](./versor-reset-rus.md) - [Указание значений компонент](./versor-set-values-rus.md) - Копирование состояния (копирование значений компонент) - Обмен состояниями (обмен значениями компонент) - Построение на основе поворота - Проверка на отсутствие поворота - Преобразование типа - Сокращение поворота - Инверсия - Комбинирование - Получение описание поворота - Получение матрицы поворота - Получение матрицы обратного поворота - Поворот вектора - Обратный поворот вектора - Сравнение