Обновление документации по векторам и кватернионам
This commit is contained in:
parent
b8d383da33
commit
2fd2578bb3
20 changed files with 101 additions and 490 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue