bgc-c/docs/versor-rus.md

5.8 KiB
Raw Blame History

Версоры

Кватернионы - это гиперкомплексные числа, у которых имеется одна действительная компонента и три мнимых компоненты:

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 предоставляет отдельную реализацию для версоров в виде структур и функций, которые поддерживают модуль версоров близким к единице.

Структуры

    typedef struct {
        const float s0, x1, x2, x3;
    } BgcVersorFP32;

    typedef struct {
        const double s0, x1, x2, x3;
    } BgcVersorFP64;

Поля:

  • s0 - это вещественная часть версора.
  • x1, x2, x3 - Мнимые компоненты версора.

Операции с версорами

  • Сброс состояния
  • Указание значений компонент
  • Копирование состояния (копирование значений компонент)
  • Обмен состояниями (обмен значениями компонент)
  • Построение на основе поворота
  • Проверка на отсутствие поворота
  • Преобразование типа
  • Сокращение поворота
  • Инверсия
  • Комбинирование
  • Получение описание поворота
  • Получение матрицы поворота
  • Получение матрицы обратного поворота
  • Поворот вектора
  • Обратный поворот вектора
  • Сравнение