Vector3i

3D-вектор з цілочисельними координатами.

Опис

3-елементна структура, яка може бути використана для представлення 3D-координат сітки або будь-якого іншого потрійного цілого.

Він використовує цілі координати і тому бажано Vector3, коли потрібна точність. Зауважте, що значення обмежені 32 біт, і на відміну від Vector3 це не можна налаштувати варіантом побудови двигуна. Використовуйте int або PackedInt64Array, якщо потрібні значення 64-бітних.

Примітка: У булевому контексті Вектор3i оцінюватиме false, якщо це дорівнює Vector3i(0, 0). Вектор3i завжди оцінять 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) 🔗

Мінімальний вектор, вектор з усіма компонентами, що дорівнює 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 🔗

Повертає відстань між цим вектором і до.


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)) # Друк (3, -4, 3)

Vector3i operator %(right: int) 🔗

Отримує залишок кожного компонента Vector3i із заданим int. У цій операції використовується скорочене ділення, яке часто небажано, оскільки воно погано працює з від’ємними числами. Розгляньте можливість використання @GlobalScope.posmod() натомість, якщо ви хочете обробляти від’ємні числа.

print(Vector3i(10, -20, 30) % 7) # Друк (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)) # Виводить (13, 24, 35)

Vector3i operator -(right: Vector3i) 🔗

Віднімає кожну компоненту Vector3i від компонентів заданого Vector3i.

print(Vector3i(10, 20, 30) - Vector3i(3, 4, 5)) # Виводить (7, 16, 25)

Vector3i operator /(right: Vector3i) 🔗

Ділить кожну компоненту Vector3i на компоненти заданого Vector3i.

print(Vector3i(10, 20, 30) / Vector3i(2, 5, 3)) # Виводить (5, 4, 10)

Vector3 operator /(right: float) 🔗

Ділить кожен компонент Vector3i на задане число з плаваючою комою float. Повертає Vector3.

print(Vector3i(10, 20, 30) / 2.9) # Виводить (5.0, 10.0, 15.0)

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 еквівалент v.y, і v[2] еквівалент v.z.


Vector3i operator unary+() 🔗

Повертає однакову вартість, якщо + не було. `` +`` нічого не робить, але іноді це може зробити ваш код більш читабельним.


Vector3i operator unary-() 🔗

Повертає негативне значення Vector3i. Це так само, як написано Vector3i(-v.x, -v.y, -v.z). Ця операція закріплює напрямок вектора, зберігаючи однакову величину.