Vector3i

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

Описание

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

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

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

Обучающие материалы

Свойства

int

x

0

int

y

0

int

z

0

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

Vector3i

Vector3i()

Vector3i

Vector3i(from: Vector3i)

Vector3i

Vector3i(from: Vector3)

Vector3i

Vector3i(x: int, y: int, z: int)

Методы

Vector3i

abs() const

Vector3i

clamp(min: Vector3i, max: Vector3i) const

Vector3i

clampi(min: int, max: int) const

int

distance_squared_to(to: Vector3i) const

float

distance_to(to: Vector3i) const

float

length() const

int

length_squared() const

Vector3i

max(with: Vector3i) const

int

max_axis_index() const

Vector3i

maxi(with: int) const

Vector3i

min(with: Vector3i) const

int

min_axis_index() const

Vector3i

mini(with: int) const

Vector3i

sign() const

Vector3i

snapped(step: Vector3i) const

Vector3i

snappedi(step: int) const

Операторы

bool

operator !=(right: Vector3i)

Vector3i

operator %(right: Vector3i)

Vector3i

operator %(right: int)

Vector3i

operator *(right: Vector3i)

Vector3

operator *(right: float)

Vector3i

operator *(right: int)

Vector3i

operator +(right: Vector3i)

Vector3i

operator -(right: Vector3i)

Vector3i

operator /(right: Vector3i)

Vector3

operator /(right: float)

Vector3i

operator /(right: int)

bool

operator <(right: Vector3i)

bool

operator <=(right: Vector3i)

bool

operator ==(right: Vector3i)

bool

operator >(right: Vector3i)

bool

operator >=(right: Vector3i)

int

operator [](index: int)

Vector3i

operator unary+()

Vector3i

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().


Константы

ZERO = Vector3i(0, 0, 0) 🔗

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

ONE = Vector3i(1, 1, 1) 🔗

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

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

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

MAX = Vector3i(2147483647, 2147483647, 2147483647) 🔗

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

LEFT = Vector3i(-1, 0, 0) 🔗

Левый единичный вектор. Представляет локальное направление налево и глобальное направление запад.

RIGHT = Vector3i(1, 0, 0) 🔗

Правый единичный вектор. Представляет локальное направление вправо и глобальное направление на восток.

UP = Vector3i(0, 1, 0) 🔗

Верхний единичный вектор.

DOWN = Vector3i(0, -1, 0) 🔗

Нижний единичный вектор.

FORWARD = Vector3i(0, 0, -1) 🔗

Прямой единичный вектор. Представляет локальное направление вперед и глобальное направление на север.

BACK = Vector3i(0, 0, 1) 🔗

Вектор единицы назад. Представляет локальное направление назад и глобальное направление юг.


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

int x = 0 🔗

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


int y = 0 🔗

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


int z = 0 🔗

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


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

Vector3i Vector3i() 🔗

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


Vector3i Vector3i(from: Vector3i)

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


Vector3i Vector3i(from: Vector3)

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


Vector3i Vector3i(x: int, y: int, z: int)

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


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

Vector3i abs() const 🔗

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


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

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


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

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


int distance_squared_to(to: Vector3i) const 🔗

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

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


float distance_to(to: Vector3i) const 🔗

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


float length() const 🔗

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


int length_squared() const 🔗

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

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


Vector3i max(with: Vector3i) const 🔗

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


int max_axis_index() const 🔗

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


Vector3i maxi(with: int) const 🔗

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


Vector3i min(with: Vector3i) const 🔗

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


int min_axis_index() const 🔗

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


Vector3i mini(with: int) const 🔗

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


Vector3i sign() const 🔗

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


Vector3i snapped(step: Vector3i) const 🔗

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


Vector3i snappedi(step: int) const 🔗

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


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

bool operator !=(right: Vector3i) 🔗

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


Vector3i operator %(right: Vector3i) 🔗

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

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

Vector3i operator %(right: int) 🔗

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

print(Vector3i(10, -20, 30) % 7) # Prints (3, -6, 2)

Vector3i operator *(right: Vector3i) 🔗

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

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

Vector3 operator *(right: float) 🔗

Умножает каждый компонент Vector3i на заданный float. Возвращает Vector3.

print(Vector3i(10, 15, 20) * 0.9) # Выводит (9.0, 13.5, 18.0)

Vector3i operator *(right: int) 🔗

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


Vector3i operator +(right: Vector3i) 🔗

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

print(Vector3i(10, 20, 30) + Vector3i(3, 4, 5)) # Prints (13, 24, 35)

Vector3i operator -(right: Vector3i) 🔗

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

print(Vector3i(10, 20, 30) - Vector3i(3, 4, 5)) # Prints (7, 16, 25)

Vector3i operator /(right: Vector3i) 🔗

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

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

Vector3 operator /(right: float) 🔗

Делит каждый компонент Vector3i на заданное значение float. Возвращает Vector3.

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

Vector3i operator /(right: int) 🔗

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


bool operator <(right: Vector3i) 🔗

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


bool operator <=(right: Vector3i) 🔗

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


bool operator ==(right: Vector3i) 🔗

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


bool operator >(right: Vector3i) 🔗

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


bool operator >=(right: Vector3i) 🔗

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


int operator [](index: int) 🔗

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


Vector3i operator unary+() 🔗

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


Vector3i operator unary-() 🔗

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