Vector4
Вектор 4D з використанням плавно-точкових координат.
Опис
4-оелементна структура, яка може бути використана для представлення координат 4D або будь-яких інших квадроциклів числових значень.
Використовується плаваючі координати точки. За замовчуванням ці значення плаваючі точки використовують 32-бітну точність, на відміну від float, яка завжди 64-біт. Якщо потрібна подвійна точність, зніміть двигун за допомогою параметра , оцінивши=double.
Переглянути Vector4i для свого цілого аналога.
Примітка: У булевому контексті Vector4 оцінюватиме false, якщо це дорівнює Vector4(0, 0, 0). Вектор4 завжди оцінюється true.
Властивості
|
||
|
||
|
||
|
Конструктори
Vector4() |
|
Методи
abs() const |
|
ceil() const |
|
cubic_interpolate(b: Vector4, pre_a: Vector4, post_b: Vector4, weight: float) const |
|
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 |
|
direction_to(to: Vector4) const |
|
distance_squared_to(to: Vector4) const |
|
distance_to(to: Vector4) const |
|
floor() const |
|
inverse() const |
|
is_equal_approx(to: Vector4) const |
|
is_finite() const |
|
is_normalized() const |
|
is_zero_approx() const |
|
length() const |
|
length_squared() const |
|
max_axis_index() const |
|
min_axis_index() const |
|
normalized() const |
|
round() const |
|
sign() const |
|
Оператори
operator !=(right: Vector4) |
|
operator *(right: Projection) |
|
operator *(right: Vector4) |
|
operator *(right: float) |
|
operator *(right: int) |
|
operator +(right: Vector4) |
|
operator -(right: Vector4) |
|
operator /(right: Vector4) |
|
operator /(right: float) |
|
operator /(right: int) |
|
operator <(right: Vector4) |
|
operator <=(right: Vector4) |
|
operator ==(right: Vector4) |
|
operator >(right: Vector4) |
|
operator >=(right: Vector4) |
|
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().
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.
Описи властивостей
Компонент Вектора W. Також доступні за допомогою індексного положення `` [3]``.
Векторний компонент X. Також доступний за допомогою індексної позиції [0].
Векторний компонент Y. Також доступний за допомогою індексної позиції [1].
Векторний компонент Z. Також доступний за допомогою індексної позиції [2].
Описи конструкторів
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 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(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() для кожного компоненту.
Повертає true, якщо цей вектор є скінченним, викликаючи @GlobalScope.is_finite() на кожному компоненту.
Повертає true, якщо вектор нормалізований, тобто його довжина приблизно дорівнює 1.
Повертає true, якщо значення цього вектора приблизно дорівнюють нулю, викликаючи @GlobalScope.is_zero_approx() на кожному компоненті.
Цей метод працює швидше, ніж використання is_equal_approx(), із одним значенням як нульовий вектор.
Повертає довжину (величину) цього вектору.
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)).
Повертає вісь найвищого значення вектора. 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)).
Повертає вісь найнижчого значення вектора. AXIS_* константи. Якщо всі компоненти рівні, цей метод повертає AXIS_W.
Vector4 minf(with: float) const 🔗
Повертає компонентний мінімум цього вектора та with. Еквівалентно Vector4(minf(x, with), minf(y, with), minf(z, with), minf(w, with)).
Повертає результат масштабування вектора до одиничної довжини. Еквівалентно 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.
Повертає новий вектор, у якому всі компоненти округлені до найближчого цілого числа.
Повертає новий вектор, у якому кожен компонент приймає значення 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. Це так само, як написано Vector4(-v.x, -v.y, -v.z, -v.w). Ця операція закріплює напрямок вектора, зберігаючи однакову величину. З поплавками число нуль може бути або позитивним або негативним.