bgc-c/docs/quaternion-rus.md

62 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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