Vector4i

Четырехмерный вектор, использующий целочисленные координаты.

Описание

Структура из 4 элементов, которая может использоваться для представления координат сетки 4D или любой другой четверки целых чисел.

Она использует целочисленные координаты и поэтому предпочтительнее Vector4, когда требуется точная точность. Обратите внимание, что значения ограничены 32 битами, и в отличие от Vector4 это нельзя настроить с помощью опции сборки движка. Используйте int или PackedInt64Array, если требуются 64-битные значения.

Примечание: В булевом контексте Vector4i будет оцениваться как false, если он равен Vector4i(0, 0, 0, 0). В противном случае Vector4i всегда будет оцениваться как true.

Свойства

int

w

0

int

x

0

int

y

0

int

z

0

Конструкторы

Vector4i

Vector4i()

Vector4i

Vector4i(from: Vector4i)

Vector4i

Vector4i(from: Vector4)

Vector4i

Vector4i(x: int, y: int, z: int, w: int)

Методы

Vector4i

abs() const

Vector4i

clamp(min: Vector4i, max: Vector4i) const

Vector4i

clampi(min: int, max: int) const

int

distance_squared_to(to: Vector4i) const

float

distance_to(to: Vector4i) const

float

length() const

int

length_squared() const

Vector4i

max(with: Vector4i) const

int

max_axis_index() const

Vector4i

maxi(with: int) const

Vector4i

min(with: Vector4i) const

int

min_axis_index() const

Vector4i

mini(with: int) const

Vector4i

sign() const

Vector4i

snapped(step: Vector4i) const

Vector4i

snappedi(step: int) const

Операторы

bool

operator !=(right: Vector4i)

Vector4i

operator %(right: Vector4i)

Vector4i

operator %(right: int)

Vector4i

operator *(right: Vector4i)

Vector4

operator *(right: float)

Vector4i

operator *(right: int)

Vector4i

operator +(right: Vector4i)

Vector4i

operator -(right: Vector4i)

Vector4i

operator /(right: Vector4i)

Vector4

operator /(right: float)

Vector4i

operator /(right: int)

bool

operator <(right: Vector4i)

bool

operator <=(right: Vector4i)

bool

operator ==(right: Vector4i)

bool

operator >(right: Vector4i)

bool

operator >=(right: Vector4i)

int

operator [](index: int)

Vector4i

operator unary+()

Vector4i

operator unary-()


Перечисления

enum Axis: 🔗

Axis AXIS_X = 0

Перечисленное значение для оси X. Возвращается max_axis_index() и min_axis_index().

Axis AXIS_Y = 1

Перечисленное значение для оси Y. Возвращается max_axis_index() и min_axis_index().

Axis AXIS_Z = 2

Перечисленное значение для оси Z. Возвращается max_axis_index() и min_axis_index().

Axis AXIS_W = 3

Перечисленное значение для оси W. Возвращается max_axis_index() и min_axis_index().


Константы

ZERO = Vector4i(0, 0, 0, 0) 🔗

Нулевой вектор — вектор у которого все координаты равны 0.

ONE = Vector4i(1, 1, 1, 1) 🔗

Вектор-единица — вектор у которого все координаты равны 1.

MIN = Vector4i(-2147483648, -2147483648, -2147483648, -2147483648) 🔗

Вектор Min - вектор, все компоненты которого равны INT32_MIN. Может использоваться как отрицательный целочисленный эквивалент Vector4.INF.

MAX = Vector4i(2147483647, 2147483647, 2147483647, 2147483647) 🔗

Вектор Max - вектор, все компоненты которого равны INT32_MAX. Может использоваться как целочисленный эквивалент Vector4.INF.


Описания свойств

int w = 0 🔗

Компонент вектора W. Также доступен с помощью индексной позиции [3].


int x = 0 🔗

X компонент вектора. Может быть доступен через индекс [0].


int y = 0 🔗

Y компонент вектора. Может быть доступен через индекс [1].


int z = 0 🔗

Z компонент вектора. Также может быть доступен по индексу [2].


Описания конструктора

Vector4i Vector4i() 🔗

Создает инициализированный по умолчанию Vector4i со всеми компонентами, установленными в 0.


Vector4i Vector4i(from: Vector4i)

Создает Vector4i как копию заданного Vector4i.


Vector4i Vector4i(from: Vector4)

Создает новый Vector4i из заданного Vector4 путем усечения дробных частей компонентов (округление в сторону нуля). Для другого поведения рассмотрите возможность передачи результата Vector4.ceil(), Vector4.floor() или Vector4.round() этому конструктору.


Vector4i Vector4i(x: int, y: int, z: int, w: int)

Возвращает Vector4i с заданными компонентами.


Описания метода

Vector4i abs() const 🔗

Возвращает новый вектор в котором все компоненты будут абсолютными значениями (т.е положительными).


Vector4i clamp(min: Vector4i, max: Vector4i) const 🔗

Возвращает новый вектор со всеми компонентами, зажатыми между компонентами min и max, путем запуска @GlobalScope.clamp() для каждого компонента.


Vector4i clampi(min: int, max: int) const 🔗

Возвращает новый вектор со всеми компонентами, зажатыми между min и max, путем запуска @GlobalScope.clamp() для каждого компонента.


int distance_squared_to(to: Vector4i) const 🔗

Возвращает квадрат расстояния между этим вектором и to.

Этот метод работает быстрее, чем distance_to(), поэтому предпочитайте его, если вам нужно сравнить векторы или вам нужен квадрат расстояния для какой-то формулы.


float distance_to(to: Vector4i) const 🔗

Возвращает расстояние между данным вектором и to.


float length() const 🔗

Возвращает длину (величину) данного вектора.


int length_squared() const 🔗

Возвращает длину данного вектора в квадрате.

Этот метод выполняется быстрее, чем length(), поэтому он предпочтительнее если вам нужно сравнить векторы или нужно расстояние в квадрате для какой-либо формулы.


Vector4i max(with: Vector4i) const 🔗

Возвращает покомпонентный максимум этого и with, что эквивалентно Vector4i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z), maxi(w, with.w)).


int max_axis_index() const 🔗

Возвращает ось наибольшего значения вектора. См. константы AXIS_*. Если все компоненты равны, этот метод возвращает AXIS_X.


Vector4i maxi(with: int) const 🔗

Возвращает покомпонентный максимум этого и with, что эквивалентно Vector4i(maxi(x, with), maxi(y, with), maxi(z, with), maxi(w, with)).


Vector4i min(with: Vector4i) const 🔗

Возвращает покомпонентный минимум этого и with, эквивалентно Vector4i(mini(x, with.x), mini(y, with.y), mini(z, with.z), mini(w, with.w)).


int min_axis_index() const 🔗

Возвращает ось наименьшего значения вектора. См. константы AXIS_*. Если все компоненты равны, этот метод возвращает AXIS_W.


Vector4i mini(with: int) const 🔗

Возвращает покомпонентный минимум этого и with, эквивалентный Vector4i(mini(x, with), mini(y, with), mini(z, with), mini(w, with)).


Vector4i sign() const 🔗

Возвращает новый вектор, в котором каждый компонент установлен на 1, если он положительный, -1, если он отрицательный, и 0, если он равен нулю. Результат идентичен вызову @GlobalScope.sign() для каждого компонента.


Vector4i snapped(step: Vector4i) const 🔗

Возвращает новый вектор, в котором каждый компонент привязан к ближайшему кратному соответствующего компонента в step.


Vector4i snappedi(step: int) const 🔗

Возвращает новый вектор, в котором каждый компонент привязан к ближайшему кратному step.


Описания оператора

bool operator !=(right: Vector4i) 🔗

Возвращает true, если векторы не равны.


Vector4i operator %(right: Vector4i) 🔗

Получает остаток каждого компонента Vector4i с компонентами заданного Vector4i. Эта операция использует усеченное деление, которое часто нежелательно, поскольку оно плохо работает с отрицательными числами. Рассмотрите возможность использования @GlobalScope.posmod() вместо этого, если вы хотите обрабатывать отрицательные числа.

print(Vector4i(10, -20, 30, -40) % Vector4i(7, 8, 9, 10)) # Prints (3, -4, 3, 0)

Vector4i operator %(right: int) 🔗

Получает остаток каждого компонента Vector4i с заданным int. Эта операция использует усеченное деление, которое часто нежелательно, поскольку оно плохо работает с отрицательными числами. Рассмотрите возможность использования @GlobalScope.posmod() вместо этого, если вы хотите обрабатывать отрицательные числа.

print(Vector4i(10, -20, 30, -40) % 7) # Prints (3, -6, 2, -5)

Vector4i operator *(right: Vector4i) 🔗

Умножает каждый компонент Vector4i на компоненты заданного Vector4i.

print(Vector4i(10, 20, 30, 40) * Vector4i(3, 4, 5, 6)) # Выводит (30, 80, 150, 240)

Vector4 operator *(right: float) 🔗

Умножает каждый компонент Vector4i на заданный float.

Возвращает значение Vector4 из-за операций с плавающей точкой.

print(Vector4i(10, 20, 30, 40) * 2) # Выводит (20.0, 40.0, 60.0, 80.0)

Vector4i operator *(right: int) 🔗

Умножает каждый компонент Vector4i на заданное int.


Vector4i operator +(right: Vector4i) 🔗

Добавляет каждый компонент Vector4i к компонентам указанного Vector4i.

print(Vector4i(10, 20, 30, 40) + Vector4i(3, 4, 5, 6)) # Prints (13, 24, 35, 46)

Vector4i operator -(right: Vector4i) 🔗

Вычитает каждый компонент Vector4i из компонентов заданного Vector4i.

print(Vector4i(10, 20, 30, 40) - Vector4i(3, 4, 5, 6)) # Prints (7, 16, 25, 34)

Vector4i operator /(right: Vector4i) 🔗

Делит каждый компонент Vector4i на компоненты заданного Vector4i.

print(Vector4i(10, 20, 30, 40) / Vector4i(2, 5, 3, 4)) # Prints (5, 4, 10, 10)

Vector4 operator /(right: float) 🔗

Делит каждый компонент Vector4i на заданное значение float.

Возвращает значение Vector4, поскольку выполняются операции с плавающей запятой.

print(Vector4i(1, 2, 3, 4) / 2.5) # Выводит (0.4, 0.8, 1.2, 1.6)

Vector4i operator /(right: int) 🔗

Делит каждый компонент Vector4i на заданное int.


bool operator <(right: Vector4i) 🔗

Сравнивает два вектора Vector4i, сначала проверяя, меньше ли значение X левого вектора, чем значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, значениями Z двух векторов, а затем со значениями W. Этот оператор полезен для сортировки векторов.


bool operator <=(right: Vector4i) 🔗

Сравнивает два вектора Vector4i, сначала проверяя, меньше ли значение X левого вектора или равно ли ему значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, значениями Z двух векторов, а затем со значениями W. Этот оператор полезен для сортировки векторов.


bool operator ==(right: Vector4i) 🔗

Возвращает true, если векторы точно равны.


bool operator >(right: Vector4i) 🔗

Сравнивает два вектора Vector4i, сначала проверяя, больше ли значение X левого вектора, чем значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, значениями Z двух векторов, а затем со значениями W. Этот оператор полезен для сортировки векторов.


bool operator >=(right: Vector4i) 🔗

Сравнивает два вектора Vector4i, сначала проверяя, больше ли значение X левого вектора или равно ли ему значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, значениями Z двух векторов, а затем со значениями W. Этот оператор полезен для сортировки векторов.


int operator [](index: int) 🔗

Доступ к компонентам вектора осуществляется с помощью их index. v[0] эквивалентно v.x, v[1] эквивалентно v.y, v[2] эквивалентно v.z, а v[3] эквивалентно v.w.


Vector4i operator unary+() 🔗

Возвращает то же значение, как если бы + не было. Унарный + ничего не делает, но иногда он может сделать ваш код более читаемым.


Vector4i operator unary-() 🔗

Возвращает отрицательное значение Vector4i. Это то же самое, что и запись Vector4i(-v.x, -v.y, -v.z, -v.w). Эта операция меняет направление вектора, сохраняя ту же величину.