Vector2i
Двумерный вектор, использующий целочисленные координаты.
Описание
Структура из 2 элементов, которая может использоваться для представления координат 2D-сетки или любой другой пары целых чисел.
Она использует целочисленные координаты и поэтому предпочтительнее Vector2, когда требуется наивысшая точность. Обратите внимание, что значения ограничены 32 битами, и в отличие от Vector2 это нельзя настроить с помощью параметра сборки движка. Используйте int или PackedInt64Array, если требуются 64-битные значения.
Примечание: В булевом контексте Vector2i будет оцениваться как false, если он равен Vector2i(0, 0). В противном случае Vector2i всегда будет оцениваться как true.
Обучающие материалы
Свойства
|
||
|
Конструкторы
Vector2i() |
|
Методы
abs() const |
|
aspect() const |
|
distance_squared_to(to: Vector2i) const |
|
distance_to(to: Vector2i) const |
|
length() const |
|
length_squared() const |
|
max_axis_index() const |
|
min_axis_index() const |
|
sign() const |
|
Операторы
operator !=(right: Vector2i) |
|
operator %(right: Vector2i) |
|
operator %(right: int) |
|
operator *(right: Vector2i) |
|
operator *(right: float) |
|
operator *(right: int) |
|
operator +(right: Vector2i) |
|
operator -(right: Vector2i) |
|
operator /(right: Vector2i) |
|
operator /(right: float) |
|
operator /(right: int) |
|
operator <(right: Vector2i) |
|
operator <=(right: Vector2i) |
|
operator ==(right: Vector2i) |
|
operator >(right: Vector2i) |
|
operator >=(right: Vector2i) |
|
operator [](index: int) |
|
Перечисления
enum Axis: 🔗
Axis AXIS_X = 0
Перечисленное значение для оси X. Возвращается max_axis_index() и min_axis_index().
Axis AXIS_Y = 1
Перечисленное значение для оси Y. Возвращается max_axis_index() и min_axis_index().
Константы
ZERO = Vector2i(0, 0) 🔗
Нулевой вектор — вектор у которого все координаты равны 0.
ONE = Vector2i(1, 1) 🔗
Вектор-единица — вектор у которого все координаты равны 1.
MIN = Vector2i(-2147483648, -2147483648) 🔗
Вектор Min, вектор, все компоненты которого равны INT32_MIN. Может использоваться как отрицательный целочисленный эквивалент Vector2.INF.
MAX = Vector2i(2147483647, 2147483647) 🔗
Вектор Max, вектор, все компоненты которого равны INT32_MAX. Может использоваться как целочисленный эквивалент Vector2.INF.
LEFT = Vector2i(-1, 0) 🔗
Левый единичный вектор. Представляет направление влево.
RIGHT = Vector2i(1, 0) 🔗
Правый единичный вектор. Представляет направление вправо.
UP = Vector2i(0, -1) 🔗
Up единичный вектор вверх. Y направлен вниз в 2D, поэтому этот вектор указывает на -Y.
DOWN = Vector2i(0, 1) 🔗
Down - единичный вектор вниз. Y направлен вниз в 2D, поэтому этот вектор указывает на +Y.
Описания свойств
X компонент вектора. Может быть доступен через индекс [0].
Y компонент вектора. Может быть доступен через индекс [1].
Описания конструктора
Создает инициализированный по умолчанию Vector2i со всеми компонентами, установленными в 0.
Vector2i Vector2i(from: Vector2i)
Создает Vector2i как копию заданного Vector2i.
Vector2i Vector2i(from: Vector2)
Создает новый Vector2i из заданного Vector2 путем усечения дробных частей компонентов (округление в сторону нуля). Для другого поведения рассмотрите возможность передачи результата Vector2.ceil(), Vector2.floor() или Vector2.round() этому конструктору.
Vector2i Vector2i(x: int, y: int)
Создает новый Vector2i из заданных x и y.
Описания метода
Возвращает новый вектор в котором все компоненты будут абсолютными значениями (т.е положительными).
Возвращает соотношение сторон данного вектора, отношение x к y.
Vector2i clamp(min: Vector2i, max: Vector2i) const 🔗
Возвращает новый вектор со всеми компонентами, зажатыми между компонентами min и max, путем запуска @GlobalScope.clamp() для каждого компонента.
Vector2i clampi(min: int, max: int) const 🔗
Возвращает новый вектор со всеми компонентами, зажатыми между min и max, путем запуска @GlobalScope.clamp() для каждого компонента.
int distance_squared_to(to: Vector2i) const 🔗
Возвращает квадрат расстояния между этим вектором и to.
Этот метод работает быстрее, чем distance_to(), поэтому предпочитайте его, если вам нужно сравнить векторы или вам нужен квадрат расстояния для какой-то формулы.
float distance_to(to: Vector2i) const 🔗
Возвращает расстояние между данным вектором и to.
Возвращает длину (величину) данного вектора.
Возвращает длину данного вектора в квадрате.
Этот метод выполняется быстрее, чем length(), поэтому он предпочтительнее если вам нужно сравнить векторы или нужно расстояние в квадрате для какой-либо формулы.
Vector2i max(with: Vector2i) const 🔗
Возвращает покомпонентный максимум этого и with, что эквивалентно Vector2i(maxi(x, with.x), maxi(y, with.y)).
Возвращает ось наибольшего значения вектора. См. константы AXIS_*. Если все компоненты равны, этот метод возвращает AXIS_X.
Vector2i maxi(with: int) const 🔗
Возвращает покомпонентный максимум этого и with, что эквивалентно Vector2i(maxi(x, with), maxi(y, with)).
Vector2i min(with: Vector2i) const 🔗
Возвращает покомпонентный минимум этого и with, эквивалентный Vector2i(mini(x, with.x), mini(y, with.y)).
Возвращает ось наименьшего значения вектора. См. константы AXIS_*. Если все компоненты равны, этот метод возвращает AXIS_Y.
Vector2i mini(with: int) const 🔗
Возвращает покомпонентный минимум этого и with, эквивалентно Vector2i(mini(x, with), mini(y, with)).
Возвращает новый вектор, в котором каждый компонент установлен на 1, если он положительный, -1, если он отрицательный, и 0, если он равен нулю. Результат идентичен вызову @GlobalScope.sign() для каждого компонента.
Vector2i snapped(step: Vector2i) const 🔗
Возвращает новый вектор, в котором каждый компонент привязан к ближайшему кратному соответствующего компонента в step.
Vector2i snappedi(step: int) const 🔗
Возвращает новый вектор, в котором каждый компонент привязан к ближайшему кратному step.
Описания оператора
bool operator !=(right: Vector2i) 🔗
Возвращает true, если векторы не равны.
Vector2i operator %(right: Vector2i) 🔗
Получает остаток каждого компонента Vector2i с компонентами заданного Vector2i. Эта операция использует усеченное деление, которое часто нежелательно, поскольку оно плохо работает с отрицательными числами. Рассмотрите возможность использования @GlobalScope.posmod() вместо этого, если вы хотите обрабатывать отрицательные числа.
print(Vector2i(10, -20) % Vector2i(7, 8)) # Prints (3, -4)
Vector2i operator %(right: int) 🔗
Получает остаток каждого компонента Vector2i с заданным int. Эта операция использует усеченное деление, которое часто нежелательно, поскольку оно плохо работает с отрицательными числами. Рассмотрите возможность использования @GlobalScope.posmod() вместо этого, если вы хотите обрабатывать отрицательные числа.
print(Vector2i(10, -20) % 7) # Prints (3, -6)
Vector2i operator *(right: Vector2i) 🔗
Умножает каждый компонент Vector2i на компоненты заданного Vector2i.
print(Vector2i(10, 20) * Vector2i(3, 4)) # Выводит (30, 80)
Vector2 operator *(right: float) 🔗
Умножает каждый компонент Vector2i на заданный float. Возвращает Vector2.
print(Vector2i(10, 15) * 0.9) # Выводит (9.0, 13.5)
Vector2i operator *(right: int) 🔗
Умножает каждый компонент Vector2i на заданное int.
Vector2i operator +(right: Vector2i) 🔗
Добавляет каждый компонент Vector2i к компонентам указанного Vector2i.
print(Vector2i(10, 20) + Vector2i(3, 4)) # Prints (13, 24)
Vector2i operator -(right: Vector2i) 🔗
Вычитает каждый компонент Vector2i из компонентов заданного Vector2i.
print(Vector2i(10, 20) - Vector2i(3, 4)) # Prints (7, 16)
Vector2i operator /(right: Vector2i) 🔗
Делит каждый компонент Vector2i на компоненты заданного Vector2i.
print(Vector2i(10, 20) / Vector2i(2, 5)) # Prints (5, 4)
Vector2 operator /(right: float) 🔗
Делит каждый компонент Vector2i на заданное значение float. Возвращает Vector2.
print(Vector2i(1, 2) / 2.5) # Выводит (0.4, 0.8)
Vector2i operator /(right: int) 🔗
Делит каждый компонент Vector2i на заданное int.
bool operator <(right: Vector2i) 🔗
Сравнивает два вектора Vector2i, сначала проверяя, меньше ли значение X левого вектора, чем значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов. Этот оператор полезен для сортировки векторов.
bool operator <=(right: Vector2i) 🔗
Сравнивает два вектора Vector2i, сначала проверяя, меньше ли значение X левого вектора или равно ли ему значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов. Этот оператор полезен для сортировки векторов.
bool operator ==(right: Vector2i) 🔗
Возвращает true если векторы равны.
bool operator >(right: Vector2i) 🔗
Сравнивает два вектора Vector2i, сначала проверяя, больше ли значение X левого вектора, чем значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов. Этот оператор полезен для сортировки векторов.
bool operator >=(right: Vector2i) 🔗
Сравнивает два вектора Vector2i, сначала проверяя, больше ли значение X левого вектора или равно ли ему значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов. Этот оператор полезен для сортировки векторов.
Доступ к компонентам вектора осуществляется с помощью их index. v[0] эквивалентно v.x, а v[1] эквивалентно v.y.
Возвращает то же значение, как если бы + не было. Унарный + ничего не делает, но иногда он может сделать ваш код более читаемым.
Возвращает отрицательное значение Vector2i. Это то же самое, что и запись Vector2i(-v.x, -v.y). Эта операция меняет направление вектора, сохраняя ту же величину.