Vector3i
Трехмерный вектор, использующий целочисленные координаты.
Описание
Структура из 3 элементов, которая может использоваться для представления координат сетки 3D или любого другого триплета целых чисел.
Она использует целочисленные координаты и поэтому предпочтительнее Vector3, когда требуется точная точность. Обратите внимание, что значения ограничены 32 битами, и в отличие от Vector3 это нельзя настроить с помощью опции сборки движка. Используйте int или PackedInt64Array, если требуются 64-битные значения.
Примечание: В булевом контексте Vector3i будет оцениваться как false, если он равен Vector3i(0, 0, 0). В противном случае Vector3i всегда будет оцениваться как true.
Обучающие материалы
Свойства
|
||
|
||
|
Конструкторы
Vector3i() |
|
Методы
abs() const |
|
distance_squared_to(to: Vector3i) const |
|
distance_to(to: Vector3i) const |
|
length() const |
|
length_squared() const |
|
max_axis_index() const |
|
min_axis_index() const |
|
sign() const |
|
Операторы
operator !=(right: Vector3i) |
|
operator %(right: Vector3i) |
|
operator %(right: int) |
|
operator *(right: Vector3i) |
|
operator *(right: float) |
|
operator *(right: int) |
|
operator +(right: Vector3i) |
|
operator -(right: Vector3i) |
|
operator /(right: Vector3i) |
|
operator /(right: float) |
|
operator /(right: int) |
|
operator <(right: Vector3i) |
|
operator <=(right: Vector3i) |
|
operator ==(right: Vector3i) |
|
operator >(right: Vector3i) |
|
operator >=(right: Vector3i) |
|
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().
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) 🔗
Вектор единицы назад. Представляет локальное направление назад и глобальное направление юг.
Описания свойств
X компонент вектора. Может быть доступен через индекс [0].
Y компонент вектора. Может быть доступен через индекс [1].
Z компонент вектора. Также может быть доступен по индексу [2].
Описания конструктора
Создает инициализированный по умолчанию 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 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.
Возвращает длину (величину) данного вектора.
Возвращает длину данного вектора в квадрате.
Этот метод выполняется быстрее, чем length(), поэтому он предпочтительнее если вам нужно сравнить векторы или нужно расстояние в квадрате для какой-либо формулы.
Vector3i max(with: Vector3i) const 🔗
Возвращает покомпонентный максимум этого и with, эквивалентно Vector3i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z)).
Возвращает ось наибольшего значения вектора. См. константы 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)).
Возвращает ось наименьшего значения вектора. См. константы AXIS_*. Если все компоненты равны, этот метод возвращает AXIS_Z.
Vector3i mini(with: int) const 🔗
Возвращает покомпонентный минимум этого и with, эквивалентно Vector3i(mini(x, with), mini(y, with), mini(z, with)).
Возвращает новый вектор, в котором каждый компонент установлен на 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. Этот оператор полезен для сортировки векторов.
Доступ к компонентам вектора осуществляется с помощью их index. v[0] эквивалентно v.x, v[1] эквивалентно v.y, а v[2] эквивалентно v.z.
Возвращает то же значение, как если бы + не было. Унарный + ничего не делает, но иногда он может сделать ваш код более читаемым.
Возвращает отрицательное значение Vector3i. Это то же самое, что и запись Vector3i(-v.x, -v.y, -v.z). Эта операция меняет направление вектора, сохраняя ту же величину.