Обновление документации по векторам и кватернионам

This commit is contained in:
Andrey Pokidov 2026-03-29 23:00:59 +07:00
parent b8d383da33
commit 2fd2578bb3
20 changed files with 101 additions and 490 deletions

View file

@ -1,62 +1,45 @@
# Кватернионы
Кватернионы — это гиперкомплексные числа, которые расширяют понятие комплексных чисел. Они состоят из одной действительной компоненты и трёх мнимых компонент:
[English version / Английская версия](quaternion-eng.md)
q = w + ix + jy + kz
Кватернионы — это гиперкомплексные числа, которые расширяют понятие комплексных
чисел. Они состоят из одной действительной компоненты и трёх мнимых компонент:
q = s + ix + jy + kz
где:
- w, x, y, z ∈ R - действительные числа
- s, x, y, z ∈ R - действительные числа
- i, j, k - мнимые единицы, удовлетворяющие следующим условиям:
- i<sup>2</sup> = j<sup>2</sup> = k<sup>2</sup> = ijk = -1
Кватернионы были открыты математиком Уильямом Гамильтоном и представлены публике в 1843 году. Они нашли широкое применение в компьютерной графике, робототехнике и физике для описания поворотов в трёхмерном пространстве.
Кватернионы были открыты математиком Уильямом Гамильтоном и представлены публике
в 1843 году. Они нашли широкое применение в компьютерной графике, робототехнике
и физике для описания поворотов в трёхмерном пространстве.
## Реализация кватернионов в библиотеке
Библиотека предоставляет две реализации кватернионов:
1. **Кватернионы общего назначения**
- Поддерживают все основные операции (сложение, вычитание, умножение на скаляр и т.д.).
В библиотеке есть два типа трёхмерных векторов:
- **BGC_FP32_Quaternion** - кватернион на основе чисел с плавающей запятой
одинарной точности
- **BGC_FP64_Quaternion** - кватернион на основе чисел с плавающей запятой
двойной точности
2. **Версоры**:
- Специализированные кватернионы, модуль которых всегда равен единице.
- Подходят для описания поворотов в трёхмерном пространстве.
- Не поддерживают операции сложения, вычитания и умножения на скаляр.
Кватернионы общего назначения также можно использовать для представления поворотов в трёхмерном пространстве. Но разработчик, использующий кватернионы для описания поворотов, сам должен следить за тем, чтобы модули кватернионов не становились меньше величины погрешности и не принимали значение NaN (не число).
### Структуры для кватернионов
#### Кватернионы общего назначения
Определения структур:
```c
typedef struct {
float s0, x1, x2, x3;
} BgcQuaternionFP32;
float s, x, y, z;
} BGC_FP32_Quaternion;
typedef struct {
double s0, x1, x2, x3;
} BgcQuaternionFP64;
```
#### Версоры
```c
typedef struct {
const float s0, x1, x2, x3;
} BgcVersorFP32;
typedef struct {
const double s0, x1, x2, x3;
} BgcVersorFP64;
double s, x, y, z;
} BGC_FP64_Quaternion;
```
Поля:
- s0 - это вещественная часть кватерниона.
- x1, x2, x3 - Мнимые компоненты кватерниона.
Поля версоров объявлены как const, чтобы разработчик использовал функции библиотеки для работы с версорами, а не изменял их напрямую.
Поля кватернионов разработчик, использующий библиотеку, может менять свободно.
- **s** - это вещественная часть кватерниона, буква выбрана от английского слова
scalar - скалярная величина.
- **x**, **y**, **z** - мнимые компоненты кватерниона.
[Документация](intro-rus.md)