2024-07-11 03:31:48 +03:00

135 lines
5.0 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.

# Библиотека *mat4*
*mat4* содержит набор функций для работы с матрицами трансформации размерностью 4x4.
Большинство функций имеют несколько вариантов списка агрументов (перегрузок).
## Типы данных
На данной странице будут использоваться условные обозначения типов.
- vector - массив из трех или четырех чисел
- vec3 - массив из трех чисел
- vec4 - массив из четырех чисел
- matrix - массив из 16 чисел - матрица
> [!WARNING]
>
> Аннотации типов являются частью документации и не указываются при вызове использовании.
## Единичная матрица - *mat4.idt(...)*
```lua
-- создает единичную матрицу
mat4.idt()
-- записывает единичную матрицу в dst
mat4.idt(dst: matrix)
```
## Определитель матрицы - *mat4.determinant(...)*
```lua
-- вычисляет определитель матрицы
mat4.determinant(m: matrix)
```
## Умножение матриц - *mat4.mul(...)*
```lua
-- возвращает результат умножения матриц
mat4.mul(a: matrix, b: matrix)
-- записывает результат умножения матриц в dst
mat4.mul(a: matrix, b: matrix, dst: matrix)
-- возвращает результат умножения матрицы и вектора
mat4.mul(a: matrix, v: vector)
-- записывает результат умножения матрицы и вектора в dst
mat4.mul(a: matrix, v: vector, dst: vector)
```
## Инверсия матрицы - *mat4.inverse(...)*
```lua
-- возвращает результат инверсии матрицы
mat4.inverse(m: matrix)
-- записывает результат инверсии матрицы в dst
mat4.inverse(m: matrix, dst: matrix)
```
## Транспонирование матрицы - *mat4.transpose(...)*
```lua
-- возвращает результат транспонирования матрицы
mat4.transpose(m: matrix)
-- записывает результат транспонирования матрицы в dst
mat4.transpose(m: matrix, dst: matrix)
```
## Смещение - *mat4.translate(...)*
```lua
-- создает матрицу смещения
mat4.translate(translation: vec3)
-- возвращает результат применения смещения к матрице m
mat4.translate(m: matrix, translation: vec3)
-- записывает результат применения смещения к матрице m в dst
mat4.translate(m: matrix, translation: vec3, dst: matrix)
```
## Масштабирование - *mat4.scale(...)*
```lua
-- создает матрицу масштабирования
mat4.scale(scale: vec3)
-- возвращает результат применения масштабирования к матрице m
mat4.scale(m: matrix, scale: vec3)
-- записывает результат применения масштабирования к матрице m в dst
mat4.scale(m: matrix, scale: vec3, dst: matrix)
```
## Вращение - *mat4.rotate(...)*
Угол поворота (angle) указывается в градусах.
```lua
-- создает матрицу поворота (angle - угол поворота) по заданной оси (axis - единичный вектор)
mat4.rotate(axis: vec3, angle: number)
-- возвращает результат применения вращения к матрице m
mat4.rotate(m: matrix, axis: vec3, angle: number)
-- записывает результат применения вращения к матрице m в dst
mat4.rotate(m: matrix, axis: vec3, angle: number, dst: matrix)
```
## Декомпозиция - *mat4.decompose(...)*
Раскладывает матрицу трансформации на составляющие.
```lua
mat4.decompose(m: matrix)
-- возвращает таблицу:
{
scale=vec3,
rotation=matrix,
translation=vec3,
skew=vec3,
perspective=vec4
}
```
## Отслеживание точки *mat4.look_at(...)*
```lua
-- cоздает матрицу вида с точки 'eye' на точку 'center', где вектор 'up' определяет верх.
mat4.look_at(eye: vec3, center: vec3, up: vec3)
-- записывает матрицу вида в dst
mat4.look_at(eye: vec3, center: vec3, up: vec3, dst: matrix)
```
## Перевод в строку - *mat4.tostring(...)*
```lua
-- возвращает строку представляющую содержимое матрицы
mat4.tostring(m: matrix)
-- возвращает строку представляющую содержимое матрицы, многострочную, если multiline = true
mat4.tostring(m: matrix, multiline: bool)
```