add docs for vectors

This commit is contained in:
Cogi Asd
2024-07-08 17:11:36 +03:00
parent 18ed0e6353
commit 98504b9f48
2 changed files with 164 additions and 1 deletions
+147
View File
@@ -0,0 +1,147 @@
# Библиотека Vec*n*
*vecn* содержит набор функций для работы с векторами размерностью 2, 3 или 4.
Большинство функций имеют несколько вариантов списка аргументов (перегрузок).
> [!WARNING]
>
> vecn, где n |-> размерность вектора (2, 3, 4), т.е vec2, vec3, vec4
>
## Типы данных
На данной странице будут использоваться условные обозначения типов.
- vector - массив из двух, трех или четырех чисел
- vec2 - массив из двух чисел
- vec3 - массив из трех чисел
- vec4 - массив из четырех чисел
> [!WARNING]
>
> Аннотации типов являются частью документации и не указываются при вызове использовании.
## Операции с векторами
#### Сложение - *vecn.add(...)*
```lua
-- возвращает результат сложения векторов
vecn.add(a: vector, b: vector)
-- возвращает результат сложения вектора и скаляра
vecn.add(a: vector, b: number)
```
#### Вычитание - *vecn.sub(...)*
```lua
-- возвращает результат вычитания векторов
vecn.sub(a: vector, b: vector)
-- возвращает результат вычитания скаляра из вектора
vecn.sub(a: vector, b: number)
```
#### Умножение - *vecn.mul(...)*
```lua
-- возвращает результат умножения векторов
vecn.mul(a: vector, b: vector)
-- возвращает результат умножения вектора на скаляр
vecn.mul(a: vector, b: number)
```
#### Инверсия - *vecn.inv(...)*
```lua
-- возвращает результат инверсии (противоположный) вектора
vecn.inv(a: vector)
```
#### Деление - *vecn.div(...)*
```lua
-- возвращает результат деления векторов
vecn.div(a: vector, b: vector)
-- возвращает результат деления вектора на скаляр
vecn.div(a: vector, b: number)
```
#### Нормализация - *vecn.norm(...)*
```lua
-- возвращает нормализованный вектор
vecn.norm(a: vector)
```
#### Длина вектора - *vecn.len(...)*
```lua
-- возвращает длину вектора
vecn.len(a: vector)
```
#### Абсолютное значение - *vecn.abs(...)*
```lua
-- возвращает вектор с абсолютными значениями
vecn.abs(a: vector)
```
#### Округление - *vecn.round(...)*
```lua
-- возвращает вектор с округленными значениями
vecn.round(a: vector)
```
#### Степень - *vecn.pow(...)*
```lua
-- возвращает вектор с элементами, возведенными в степень
vecn.pow(a: vector, b: number)
```
#### Скалярное произведение - *vecn.dot(...)*
```lua
-- возвращает скалярное произведение векторов
vecn.dot(a: vector, b: vector)
```
#### Векторное произведение - *vecn.cross(...)*
```lua
-- возвращает векторное произведение векторов
vecn.cross(a: vector, b: vector)
```
#### Поворот - *vecn.rot(...)*
> [!WARNING]
> Угол поворота (angle) указывается в радианах.
```lua
-- возвращает вектор, повернутый на заданный угол
vecn.rot(a: vector, angle: number)
```
#### Перевод в строку - *vecn.tostring(...)*
> [!WARNING]
> Возвращает только тогда, когда содержимым является вектор
```lua
-- возвращает строку представляющую содержимое вектора
vecn.tostring(a: vector)
```
## Пример
```lua
-- создание векторов разной размерности
local v1_3d = {1, 2, 2}
local v2_3d = {10, 20, 40}
local v3_4d = {1, 2, 4, 1}
local v4_2d = {1, 1}
local scal = 6 -- обычный скаляр
```