Написание документации: кватернионы и версоры

This commit is contained in:
Andrey Pokidov 2024-11-25 01:57:35 +07:00
parent 5c80084b1e
commit 3ff894cf5d
21 changed files with 114 additions and 18 deletions

47
docs/versor-rus.md Normal file
View file

@ -0,0 +1,47 @@
# Версоры
[Кватернионы](./quaternion-rus.md) - это гиперкомплексные числа, у которых имеется одна действительная
компонента и три комплексных компоненты:
![Определение кватерниона](./media/quaternion_definition.png)
Кватернион имеет четыре степени свободы. Но если ввести ограничение в виде
требования, чтобы модуль этого кватерниона был равен единице, то такое множество
кватернионов будет иметь только три степени свободы.
Эти кватернионы представляют собой сферу радиуса 1 в четырёхмерном пространстве.
"Поверхность" этой сферы имеет размерность равную трём.
Кватернионы единичной длины очень хорошо описывают повороты в трёхмерном
пространстве. И это логично, потому что повороты в трёхмерном пространстве имеют
три степени свободы, точно также как и сфера в четырёхмерном пространстве
Для кватерниона единичной длины существует специальное название: версор.
Версоры - это кватернионы единичной длины. И к определению кватерниона необходимо
просто добавить уравнение:
![Определение версора](./media/versor_definition.png)
## Версоры в библиотеке
Библиотека имеет отдельную реализацию для версоров в виде специальных структур и
набора функций, которые поддерживают модуль версоров близким к единице.
Для описания версора имеется две структуры: **BgFP32Versor** и **BgFP64Versor**:
typedef struct {
const float s0, x1, x2, x3;
} BgFP32Versor;
typedef struct {
const double s0, x1, x2, x3;
} BgFP64Versor;
Поля намеренно объявлены констрантными (const), чтобы у разработчика,
использующего данные структуры, не было соблазна изменять значения полей
напрямую.
С данными структурами лучше использовать специальные функции, которые позволяют
устанавливать новые значения в поля структур **BgFP32Versor** и
**BgFP64Versor**.