148 lines
4.3 KiB
Markdown
148 lines
4.3 KiB
Markdown
# Библиотека 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 -- обычный скаляр
|
||
|
||
|
||
```
|