Vector4

Вектор 4D з використанням плавно-точкових координат.

Опис

4-оелементна структура, яка може бути використана для представлення координат 4D або будь-яких інших квадроциклів числових значень.

Використовується плаваючі координати точки. За замовчуванням ці значення плаваючі точки використовують 32-бітну точність, на відміну від float, яка завжди 64-біт. Якщо потрібна подвійна точність, зніміть двигун за допомогою параметра , оцінивши=double.

Переглянути Vector4i для свого цілого аналога.

Примітка: У булевому контексті Vector4 оцінюватиме false, якщо це дорівнює Vector4(0, 0, 0). Вектор4 завжди оцінюється true.

Властивості

float

w

0.0

float

x

0.0

float

y

0.0

float

z

0.0

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

Vector4

Vector4()

Vector4

Vector4(from: Vector4)

Vector4

Vector4(from: Vector4i)

Vector4

Vector4(x: float, y: float, z: float, w: float)

Методи

Vector4

abs() const

Vector4

ceil() const

Vector4

clamp(min: Vector4, max: Vector4) const

Vector4

clampf(min: float, max: float) const

Vector4

cubic_interpolate(b: Vector4, pre_a: Vector4, post_b: Vector4, weight: float) const

Vector4

cubic_interpolate_in_time(b: Vector4, pre_a: Vector4, post_b: Vector4, weight: float, b_t: float, pre_a_t: float, post_b_t: float) const

Vector4

direction_to(to: Vector4) const

float

distance_squared_to(to: Vector4) const

float

distance_to(to: Vector4) const

float

dot(with: Vector4) const

Vector4

floor() const

Vector4

inverse() const

bool

is_equal_approx(to: Vector4) const

bool

is_finite() const

bool

is_normalized() const

bool

is_zero_approx() const

float

length() const

float

length_squared() const

Vector4

lerp(to: Vector4, weight: float) const

Vector4

max(with: Vector4) const

int

max_axis_index() const

Vector4

maxf(with: float) const

Vector4

min(with: Vector4) const

int

min_axis_index() const

Vector4

minf(with: float) const

Vector4

normalized() const

Vector4

posmod(mod: float) const

Vector4

posmodv(modv: Vector4) const

Vector4

round() const

Vector4

sign() const

Vector4

snapped(step: Vector4) const

Vector4

snappedf(step: float) const

Оператори

bool

operator !=(right: Vector4)

Vector4

operator *(right: Projection)

Vector4

operator *(right: Vector4)

Vector4

operator *(right: float)

Vector4

operator *(right: int)

Vector4

operator +(right: Vector4)

Vector4

operator -(right: Vector4)

Vector4

operator /(right: Vector4)

Vector4

operator /(right: float)

Vector4

operator /(right: int)

bool

operator <(right: Vector4)

bool

operator <=(right: Vector4)

bool

operator ==(right: Vector4)

bool

operator >(right: Vector4)

bool

operator >=(right: Vector4)

float

operator [](index: int)

Vector4

operator unary+()

Vector4

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 = Vector4(0, 0, 0, 0) 🔗

Нульовий вектор — вектор, у якого всі компоненти встановлені в 0.

ONE = Vector4(1, 1, 1, 1) 🔗

Одиничний вектор — вектор, у якого всі компоненти встановлені в 1.

INF = Vector4(inf, inf, inf, inf) 🔗

Вектор нескінченності — вектор, у якого всі компоненти встановлені в @GDScript.INF.


Описи властивостей

float w = 0.0 🔗

Компонент Вектора W. Також доступні за допомогою індексного положення `` [3]``.


float x = 0.0 🔗

Векторний компонент X. Також доступний за допомогою індексної позиції [0].


float y = 0.0 🔗

Векторний компонент Y. Також доступний за допомогою індексної позиції [1].


float z = 0.0 🔗

Векторний компонент Z. Також доступний за допомогою індексної позиції [2].


Описи конструкторів

Vector4 Vector4() 🔗

Vector4 з усіма компонентами, встановленими до 0.


Vector4 Vector4(from: Vector4)

Vector4 як копія даної Vector4.


Vector4 Vector4(from: Vector4i)

Створює новий Vector4 із заданого Vector4i.


Vector4 Vector4(x: float, y: float, z: float, w: float)

Повернення Vector4 з заданими компонентами.


Описи методів

Vector4 abs() const 🔗

Повертає новий вектор з усіма компонентами в абсолютних значеннях (тобто позитиву).


Vector4 ceil() const 🔗

Повертає новий вектор, у якого всі компоненти округлені до більшого цілого (до додатної нескінченності).


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

Повертає новий вектор, у якого всі компоненти обмежені між відповідними компонентами min і max, викликаючи @GlobalScope.clamp() для кожного компоненту.


Vector4 clampf(min: float, max: float) const 🔗

Повертає новий вектор, у якого всі компоненти обмежені між min і max, викликаючи @GlobalScope.clamp() для кожного компоненту.


Vector4 cubic_interpolate(b: Vector4, pre_a: Vector4, post_b: Vector4, weight: float) const 🔗

Виконує кубічну інтерполяцію між цим вектором і b, використовуючи pre_a і post_b як контрольні точки, та повертає результат у позиції weight. weight знаходиться в діапазоні від 0.0 до 1.0 і визначає ступінь інтерполяції.


Vector4 cubic_interpolate_in_time(b: Vector4, pre_a: Vector4, post_b: Vector4, weight: float, b_t: float, pre_a_t: float, post_b_t: float) const 🔗

Виконує кубічну інтерполяцію між цим вектором і b, використовуючи pre_a і post_b як контрольні точки, та повертає результат у позиції weight. weight знаходиться в діапазоні від 0.0 до 1.0 і визначає ступінь інтерполяції.

Може виконувати плавнішу інтерполяцію, ніж cubic_interpolate()), завдяки використанню значень часу.


Vector4 direction_to(to: Vector4) const 🔗

Повертає нормалізований вектор, що вказує від цього вектора до to. Це еквівалентно виразу (b - a).normalized().


float distance_squared_to(to: Vector4) const 🔗

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

Цей метод працює швидше, ніж distance_to(), тому надавайте йому перевагу, якщо потрібно порівнювати вектори або використовувати квадрат відстані у формулі.


float distance_to(to: Vector4) const 🔗

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


float dot(with: Vector4) const 🔗

Повертає скалярний добуток цього вектора та with.


Vector4 floor() const 🔗

Повертає новий вектор, у якого всі компоненти округлені вниз (до від'ємної нескінченності).


Vector4 inverse() const 🔗

Повертає попереку вектора. Vector4(1.0 / v.x, 1.0 / v.y, 1.0 / v.z, 1.0 / v.w).


bool is_equal_approx(to: Vector4) const 🔗

Повертає true, якщо цей вектор і to є приблизно рівними, викликаючи @GlobalScope.is_equal_approx() для кожного компоненту.


bool is_finite() const 🔗

Повертає true, якщо цей вектор є скінченним, викликаючи @GlobalScope.is_finite() на кожному компоненту.


bool is_normalized() const 🔗

Повертає true, якщо вектор нормалізований, тобто його довжина приблизно дорівнює 1.


bool is_zero_approx() const 🔗

Повертає true, якщо значення цього вектора приблизно дорівнюють нулю, викликаючи @GlobalScope.is_zero_approx() на кожному компоненті.

Цей метод працює швидше, ніж використання is_equal_approx(), із одним значенням як нульовий вектор.


float length() const 🔗

Повертає довжину (величину) цього вектору.


float length_squared() const 🔗

Повертає квадрат довжини (квадрат величини) цього вектора.

Цей метод працює швидше, ніж length(), тому віддавайте йому перевагу, якщо вам потрібно порівняти вектори або потрібен квадрат відстані для якоїсь формули.


Vector4 lerp(to: Vector4, weight: float) const 🔗

Повертає результат лінійної інтерполяції між цим вектором та to на величину weight. Значення weight повинно знаходитися в діапазоні від 0.0 до 1.0 і представляє ступінь інтерполяції.


Vector4 max(with: Vector4) const 🔗

Повертає вектор, кожен компонент якого є максимальним серед відповідних компонентів цього вектора та вектора with. Еквівалентно Vector4(maxf(x, with.x), maxf(y, with.y), maxf(z, with.z), maxf(w, with.w)).


int max_axis_index() const 🔗

Повертає вісь найвищого значення вектора. AXIS_* константи. Якщо всі компоненти рівні, цей метод повертає AXIS_X.


Vector4 maxf(with: float) const 🔗

Повертає компонентний максимум цього вектора і with, еквівалентно Vector4(maxf(x, with), maxf(y, with), maxf(z, with), maxf(w, with)).


Vector4 min(with: Vector4) const 🔗

Повертає вектор, кожен компонент якого є мінімальним серед відповідного компонента цього вектора та вектора with. Еквівалентно Vector4(minf(x, with.x), minf(y, with.y), minf(z, with.z), minf(w, with.w)).


int min_axis_index() const 🔗

Повертає вісь найнижчого значення вектора. AXIS_* константи. Якщо всі компоненти рівні, цей метод повертає AXIS_W.


Vector4 minf(with: float) const 🔗

Повертає компонентний мінімум цього вектора та with. Еквівалентно Vector4(minf(x, with), minf(y, with), minf(z, with), minf(w, with)).


Vector4 normalized() const 🔗

Повертає результат масштабування вектора до одиничної довжини. Еквівалентно v / v.length(). Повертає (0, 0, 0, 0), якщо v.length() == 0. Див. також is_normalized().

Примітка: Ця функція може повертати некоректні значення, якщо довжина вхідного вектора наближена до нуля.


Vector4 posmod(mod: float) const 🔗

Повертає вектор, який складається з @GlobalScope.fposmod() компонентів цього вектора та mod.


Vector4 posmodv(modv: Vector4) const 🔗

Повертає вектор, який складається з @GlobalScope.fposmod() компонентів цього вектора та компонентів modv.


Vector4 round() const 🔗

Повертає новий вектор, у якому всі компоненти округлені до найближчого цілого числа.


Vector4 sign() const 🔗

Повертає новий вектор, у якому кожен компонент приймає значення 1.0, якщо він додатний, -1.0, якщо від'ємний, і 0.0, якщо нульовий. Результат ідентичний виклику @GlobalScope.sign() для кожного компонента.


Vector4 snapped(step: Vector4) const 🔗

Повертає новий вектор, кожна компонента якого прив'язана до найближчого кратного відповідної компоненти у векторі step. Це також можна використовувати для заокруглення компонент до довільної кількості знаків після коми.


Vector4 snappedf(step: float) const 🔗

Повертає новий вектор, кожна компонента якого прив'язана до найближчого кратного значення step. Це також можна використовувати для заокруглення компонент до довільної кількості знаків після коми.


Описи операторів

bool operator !=(right: Vector4) 🔗

Повертає true, якщо вектори не рівні.

Примітка: Через помилки точності з плаваючою комою, краще використати is_equal_approx(), який є більш надійним.

Примітка: Вектори з елементами @GDScript.NAN не поводяться так само, як інші вектори. Тому результати цього оператора можуть бути неточними, якщо включено NaN.


Vector4 operator *(right: Projection) 🔗

Трансформи (мультати) Vector4 за допомогою транспозиції даної матриці Projection.

Для перетворення за допомогою інверсу проекції projection.inverse() * вектор можна використовувати замість. Див. Projection.inverse().


Vector4 operator *(right: Vector4) 🔗

Множить кожну компоненту Vector4 на компоненти заданого Vector4.

print(Vector4(10, 20, 30, 40) * Vector4(3, 4, 5, 6)) # Виводить (30.0, 80.0, 150.0, 240.0)

Vector4 operator *(right: float) 🔗

Множить кожен компонент Vector4 на задане число з плаваючою комою float.

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

Vector4 operator *(right: int) 🔗

Множиці кожного компонента Vector4 за умови int.


Vector4 operator +(right: Vector4) 🔗

Додає кожен компонент Vector4 до компонентів заданого Vector4.

print(Vector4(10, 20, 30, 40) + Vector4(3, 4, 5, 6)) # Виводить (13.0, 24.0, 35.0, 46.0)

Vector4 operator -(right: Vector4) 🔗

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

print(Vector4(10, 20, 30, 40) - Vector4(3, 4, 5, 6)) # Виводить (7.0, 16.0, 25.0, 34.0)

Vector4 operator /(right: Vector4) 🔗

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

print(Vector4(10, 20, 30, 40) / Vector4(2, 5, 3, 4)) # Виводить (5.0, 4.0, 10.0, 10.0)

Vector4 operator /(right: float) 🔗

Ділить кожен компонент Vector4 на задане число з плаваючою комою.

print(Vector4(10, 20, 30, 40) / 2) # Виводить (5.0, 10.0, 15.0, 20.0)

Vector4 operator /(right: int) 🔗

Дивиди кожного компонента Vector4 за умови int.


bool operator <(right: Vector4) 🔗

Порівнює два вектори Vector4, спочатку перевіряючи чи значення X у лівого вектора менше за значення right вектора, і, за рівності X, повторює перевірку для значень Y, а потім Z, після чого W. Корисно для сортування.

Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.


bool operator <=(right: Vector4) 🔗

Порівнює два вектори Vector4, спочатку перевіряючи чи значення X у лівого вектора менше чи рівне до right вектора, і, за рівності X, повторює перевірку для значень Y, а потім Z, після чого W. Корисно для сортування.

Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.


bool operator ==(right: Vector4) 🔗

Повертає true, якщо вектори абсолютно рівні.

Примітка: Через помилки точності з плаваючою комою, краще використати is_equal_approx(), який є більш надійним.

Примітка: Вектори з елементами @GDScript.NAN не поводяться так само, як інші вектори. Тому результати цього оператора можуть бути неточними, якщо включено NaN.


bool operator >(right: Vector4) 🔗

Порівнює два вектори Vector4, спочатку перевіряючи чи значення X у лівого вектора більше за значення right вектора, і, за рівності X, повторює перевірку для значень Y, а потім Z, після чого W. Корисно для сортування.

Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.


bool operator >=(right: Vector4) 🔗

Порівнює два вектори Vector4, спочатку перевіряючи чи значення X у лівого вектора більше чи рівне до right вектора, і, за рівності X, повторює перевірку для значень Y, а потім Z, після чого W. Корисно для сортування.

Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.


float operator [](index: int) 🔗

Доступ до векторних компонентів за допомогою їх параметр. v[0] еквівалент v.x, v еквівалент v.y, v еквівалент v.z, і v128 еквівалент v.w.w[/code].


Vector4 operator unary+() 🔗

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


Vector4 operator unary-() 🔗

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