45 lines
2 KiB
Markdown
45 lines
2 KiB
Markdown
# Кватернионы
|
||
|
||
[English version / Английская версия](quaternion-eng.md)
|
||
|
||
Кватернионы — это гиперкомплексные числа, которые расширяют понятие комплексных
|
||
чисел. Они состоят из одной действительной компоненты и трёх мнимых компонент:
|
||
|
||
q = s + ix + jy + kz
|
||
|
||
где:
|
||
|
||
- s, x, y, z ∈ R - действительные числа
|
||
- i, j, k - мнимые единицы, удовлетворяющие следующим условиям:
|
||
- i<sup>2</sup> = j<sup>2</sup> = k<sup>2</sup> = ijk = -1
|
||
|
||
Кватернионы были открыты математиком Уильямом Гамильтоном и представлены публике
|
||
в 1843 году. Они нашли широкое применение в компьютерной графике, робототехнике
|
||
и физике для описания поворотов в трёхмерном пространстве.
|
||
|
||
## Реализация кватернионов в библиотеке
|
||
|
||
В библиотеке есть два типа трёхмерных векторов:
|
||
- **BGC_FP32_Quaternion** - кватернион на основе чисел с плавающей запятой
|
||
одинарной точности
|
||
- **BGC_FP64_Quaternion** - кватернион на основе чисел с плавающей запятой
|
||
двойной точности
|
||
|
||
Определения структур:
|
||
|
||
```c
|
||
typedef struct {
|
||
float s, x, y, z;
|
||
} BGC_FP32_Quaternion;
|
||
|
||
typedef struct {
|
||
double s, x, y, z;
|
||
} BGC_FP64_Quaternion;
|
||
```
|
||
|
||
Поля:
|
||
- **s** - это вещественная часть кватерниона, буква выбрана от английского слова
|
||
"scalar" - скалярная величина.
|
||
- **x**, **y**, **z** - мнимые компоненты кватерниона.
|
||
|
||
[Документация](intro-rus.md)
|