math - Арифметичні функції

Цей модуль містить функції для виконання різних арифметичних та тригонометричних операцій.

class math
pi: number

Число π

e: number

Число e

tau: number

Число τ (2π)

static random(a?, b?)

Повертає випадкове число.

  • Якщо заданий лише один аргумент, повертає випадкове ЦІЛЕ число в діапазоні [0;a] (включно).

  • Якщо задані обидва аргументи, повертає випадкове ЦІЛЕ число в діапазоні [a;b] (включно).

  • Якщо не задані аргументи, повертає випадкове ДРОБОВЕ число в діапазоні [0;1] (включно).

Parameters:
  • a? (integer) – початок діапазону (включно)

  • b? (integer) – кінець діапазону (включно)

Return type:

number

Usage:

1local r = math.random(10, 20)
2print(r) -- Виведе випадкове число від 10 до 20 (включно). Можливо, це буде 13? А можливо, русня - не люди?
static clamp(x, min, max)

Обмежує число x в діапазоні між min та max (включно).

Parameters:
  • x (number) – число, яке потрібно обмежити

  • min (number) – мінімальне значення

  • max (number) – максимальне значення

Return type:

number

Usage:

1print(math.clamp(8.1, 10, 20)) -- Виведе 10
2print(math.clamp(15.2, 10, 20)) -- Виведе 15.2
3print(math.clamp(23.3, 10, 20)) -- Виведе 20
static lerp(min, max, t)

Лінійна інтерполяція.

Повертає значення, яке лінійно інтерполюється між min та max з коефіцієнтом t.

Parameters:
  • min (number) – мінімальне значення

  • max (number) – максимальне значення

  • t (number) – коефіцієнт інтерполяції (від 0 до 1)

Return type:

number

Usage:

1print(math.lerp(0, 100, 0.5)) -- Виведе 50
2print(math.lerp(0, 100, 0.25)) -- Виведе 25
3print(math.lerp(0, 100, 0.7125)) -- Виведе 71.25
static map(x, in_min, in_max, out_min, out_max)

Перетворення значення з одного діапазону в інший.

Повертає число x, перетворене з діапазону [in_min;in_max] в діапазон [out_min;out_max].

Parameters:
  • x (number) – число, яке потрібно перетворити

  • in_min (number) – початок вхідного діапазону

  • in_max (number) – кінець вхідного діапазону

  • out_min (number) – початок вихідного діапазону

  • out_max (number) – кінець вихідного діапазону

Return type:

number

Usage:

1print(math.map(50, 0, 100, 0, 1)) -- Виведе 0.5
2print(math.map(25, 0, 100, 0, 1)) -- Виведе 0.25
3print(math.map(71.25, 0, 100, 0, 1)) -- Виведе 0.7125
static abs(x)

Повертає модуль числа x.

Parameters:

x (number) – число

Return type:

number

static sign(x)

Повертає знак числа x: -1, якщо число від’ємне, 0, якщо число дорівнює 0, 1, якщо число додатнє.

Parameters:

x (number) – число

Return type:

number

Usage:

1print(math.sign(-5)) -- Виведе -1
2print(math.sign(5)) -- Виведе 1
3print(math.sign(0)) -- Виведе 0
static sqrt(x)

Повертає квадратний корінь числа x.

Parameters:

x (number) – число

Return type:

number

static pow(base, exp)

Повертає число x в степені exp.

Parameters:
  • base (number) – число

  • exp (number) – степінь

Return type:

number

Usage:

1print(math.pow(2, 3)) -- Виведе 8
2print(math.pow(64, 0.5)) -- Виведе 8
static min(values)

Повертає мінімальне значення з таблиці.

Parameters:

values (table) – таблиця чисел

Return type:

number

Usage:

1print(math.min({1.1, 2.2, 3.3, 4.4, 5.5})) -- Виведе 1.1
2print(math.min({5, 4, 3, 2, 1})) -- Виведе 1
3print(math.min({-5, -4, -3, -2, -1})) -- Виведе -5
static max(values)

Повертає максимальне значення з таблиці.

Parameters:

values (table) – таблиця чисел

Return type:

number

Usage:

1print(math.max({1.1, 2.2, 3.3, 4.4, 5.5})) -- Виведе 5.5
2print(math.max({5, 4, 3, 2, 1})) -- Виведе 5
3print(math.max({-5, -4, -3, -2, -1})) -- Виведе -1
static sum(values)

Повертає суму всіх чисел з таблиці.

Parameters:

values (table) – таблиця чисел

Return type:

number

Usage:

1print(math.sum({1, 2, 3, 4, 5})) -- Виведе 15
2print(math.sum({1.1, 2.2, 3.3, 4.4, 5.5})) -- Виведе 16.5
3print(math.sum({-5, -4, -3, -2, -1})) -- Виведе -15
static avg(values)

Повертає середнє значення всіх чисел з таблиці.

Parameters:

values (table) – таблиця чисел

Return type:

number

Usage:

1print(math.avg({1, 2, 3, 4, 5})) -- Виведе 3
2print(math.avg({1.1, 2.2, 3.3, 4.4})) -- Виведе 2.75
3print(math.avg({-5, -4, -3, -2})) -- Виведе -3.5
static floor(x)

Округлює число x вниз.

Повертає найбільше ціле число, яке менше або дорівнює x.

Parameters:

x (number) – число

Return type:

integer

Usage:

1print(math.floor(1.1)) -- Виведе 1
2print(math.floor(1.9)) -- Виведе 1
3print(math.floor(-1.1)) -- Виведе -2
4print(math.floor(-1.9)) -- Виведе -2
static ceil(x)

Округлює число x вгору.

Повертає найменше ціле число, яке більше або дорівнює x.

Parameters:

x (number) – число

Return type:

integer

Usage:

1print(math.ceil(1.1)) -- Виведе 2
2print(math.ceil(1.9)) -- Виведе 2
3print(math.ceil(-1.1)) -- Виведе -1
4print(math.ceil(-1.9)) -- Виведе -1
static round(x)

Округлює число x до найближчого цілого.

Parameters:

x (number) – число

Return type:

integer

Usage:

1print(math.round(1.1)) -- Виведе 1
2print(math.round(1.9)) -- Виведе 2
3print(math.round(-1.1)) -- Виведе -1
4print(math.round(-1.9)) -- Виведе -2
static sin(x)

Повертає значення синуса кута x (в радіанах).

Parameters:

x (number) – кут (в радіанах)

Return type:

number

Usage:

1print(math.sin(0)) -- Виведе 0
2print(math.sin(math.pi / 2)) -- Виведе 1
static cos(x)

Повертає значення косинуса кута x (в радіанах).

Parameters:

x (number) – кут (в радіанах)

Return type:

number

Usage:

1print(math.cos(0)) -- Виведе 1
2print(math.cos(math.pi)) -- Виведе -1
static tan(x)

Повертає значення тангенса кута x (в радіанах).

Parameters:

x (number) – кут (в радіанах)

Return type:

number

Usage:

1print(math.tan(0)) -- Виведе 0
2print(math.tan(math.pi / 4)) -- Виведе 1
3print(math.tan(math.pi / 2)) -- Виведе якесь дуже велике число, оскільки тангенс не визначений для кутів, що дорівнюють π/2.
4                             -- Чому? Подумайте самі: трикутник з кутом 180 градусів - це взагалі трикутник?
static asin(x)

Повертає значення арксинуса числа x.

Parameters:

x (number) – число

Return type:

number

static acos(x)

Повертає значення арккосинуса числа x.

Parameters:

x (number) – число

Return type:

number

static atan(x)

Повертає значення арктангенса числа x.

Parameters:

x (number) – число

Return type:

number

static atan2(y, x)

Повертає значення арктангенса числа y/x.

Цей метод дуже зручно використовувати для обчислення кута між віссю x та точкою (x, y). А взагалі, якщо ви розумієте, що таке арктангенс, то, можливо, вам варто спробувати писати код на C? :)

Parameters:
  • y (number) – число y

  • x (number) – число x

static log(x, base?)

Повертає значення логарифму числа x.

Parameters:
  • x (number) – число

  • base? (number) – основа логарифму (за замовчуванням - число e)

Return type:

number

static deg(x)

Перетворює кут x з радіанів в градуси.

Parameters:

x (number) – кут (в радіанах)

Return type:

number

static rad(x)

Перетворює кут x з градусів в радіани.

Parameters:

x (number) – кут (в градусах)

Return type:

number

static norm(x, y)

Нормалізує вектор (x, y) до одиничної довжини.

Parameters:
  • x (number) – координата x

  • y (number) – координата y

Return type:

number or number

static len(x, y)

Повертає довжину вектора (x, y).

Parameters:
  • x (number) – координата x

  • y (number) – координата y

Return type:

number

Usage:

1print(math.len(3, 4)) -- Виведе 5
2print(math.len(1, 1)) -- Виведе 1.4142135623731
static dist(x1, y1, x2, y2)

Повертає відстань між точками (x1;y1) та (x2;y2).

Parameters:
  • x1 (number) – координата x першої точки

  • y1 (number) – координата y першої точки

  • x2 (number) – координата x другої точки

  • y2 (number) – координата y другої точки

Return type:

number

Usage:

1print(math.dist(0, 0, 3, 4) -- Виведе 5
2print(math.dist(0, 0, 1, 1) -- Виведе 1.4142135623731
static rotate(x, y, angle)

Повертає вектор (x, y), обернутий на кут angle за годинниковою стрілкою (якщо уявити, що вісь Y вказує вниз, як це прийнято в комп’ютерній графіці).

Parameters:
  • x (number) – координата x

  • y (number) – координата y

  • angle (number) – кут (в градусах)

Return type:

number or number

Usage:

1local x, y = math.rotate(1, 0, 45)
2print(x, y) -- Виведе 0, 1