Vector2
Вектор 2D з використанням плавно-точкових координат.
Опис
Дворівнева структура, яка може бути використана для представлення 2D координат або будь-якої іншої пари нумерних значень.
Використовується плаваючі координати точки. За замовчуванням ці значення плаваючі точки використовують 32-бітну точність, на відміну від float, яка завжди 64-біт. Якщо потрібна подвійна точність, зніміть двигун за допомогою параметра precision=double.
Див Vector2i для свого цілого аналога.
Примітка: У булевому контексті Vector2 буде оцінювати false, якщо це дорівнює Vector2(0, 0). Інакше, Vector2 завжди буде оцінювати true.
Посібники
Властивості
|
||
|
Конструктори
Vector2() |
|
Методи
abs() const |
|
angle() const |
|
angle_to_point(to: Vector2) const |
|
aspect() const |
|
bezier_derivative(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const |
|
bezier_interpolate(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const |
|
ceil() const |
|
cubic_interpolate(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float) const |
|
cubic_interpolate_in_time(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float, b_t: float, pre_a_t: float, post_b_t: float) const |
|
direction_to(to: Vector2) const |
|
distance_squared_to(to: Vector2) const |
|
distance_to(to: Vector2) const |
|
floor() const |
|
from_angle(angle: float) static |
|
is_equal_approx(to: Vector2) const |
|
is_finite() const |
|
is_normalized() const |
|
is_zero_approx() const |
|
length() const |
|
length_squared() const |
|
limit_length(length: float = 1.0) const |
|
max_axis_index() const |
|
min_axis_index() const |
|
move_toward(to: Vector2, delta: float) const |
|
normalized() const |
|
orthogonal() const |
|
round() const |
|
sign() const |
|
Оператори
operator !=(right: Vector2) |
|
operator *(right: Transform2D) |
|
operator *(right: Vector2) |
|
operator *(right: float) |
|
operator *(right: int) |
|
operator +(right: Vector2) |
|
operator -(right: Vector2) |
|
operator /(right: Vector2) |
|
operator /(right: float) |
|
operator /(right: int) |
|
operator <(right: Vector2) |
|
operator <=(right: Vector2) |
|
operator ==(right: Vector2) |
|
operator >(right: Vector2) |
|
operator >=(right: Vector2) |
|
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 = Vector2(0, 0) 🔗
Нульовий вектор — вектор, у якого всі компоненти встановлені в 0.
ONE = Vector2(1, 1) 🔗
Одиничний вектор — вектор, у якого всі компоненти встановлені в 1.
INF = Vector2(inf, inf) 🔗
Вектор нескінченності — вектор, у якого всі компоненти встановлені в @GDScript.INF.
LEFT = Vector2(-1, 0) 🔗
Одиничний вектор ліворуч. Представляє напрямок ліворуч.
RIGHT = Vector2(1, 0) 🔗
Одиничний вектор праворуч. Представляє напрямок праворуч.
UP = Vector2(0, -1) 🔗
Вектор блоку. Я вниз в 2D, тому це векторні точки -Y.
DOWN = Vector2(0, 1) 🔗
Вектор внизу. Я вниз в 2D, так що це векторні точки +Y.
Описи властивостей
Векторний компонент X. Також доступний за допомогою індексної позиції [0].
Векторний компонент Y. Також доступний за допомогою індексної позиції [1].
Описи конструкторів
Vector2 з усіма компонентами, встановленими до 0.
Vector2 Vector2(from: Vector2)
Vector2 як копія даної Vector2.
Vector2 Vector2(from: Vector2i)
Створює новий Vector2 з Vector2i.
Vector2 Vector2(x: float, y: float)
Constructs a new Vector2 з x і y.
Описи методів
Повертає новий вектор з усіма компонентами в абсолютних значеннях (тобто позитиву).
Повертаємо цей кут вектора відносно позитивних вісь X, або (1, 0) вектор, в радіях.
Наприклад, Vector2.RIGHT.angle() повернеться нуль, Vector2.DOWN.angle() повернеться PI / 2 (червний поворот, або 90 градусів), а Vector2(1, -1).angle() повернеться -PI / 4 (негативний вісімх поворот, або -45 градусів).
Equivalent до результату @GlobalScope.atan2(), коли називається вектором y і x в якості параметрів: atan2(y, x).
float angle_to(to: Vector2) const 🔗
Повертає кут зі знаком до заданого вектора в радіанах.
float angle_to_point(to: Vector2) const 🔗
Повертає кут між рядком, що з'єднує дві точки і вісь X, в радіанах.
a.angle_to_point(b) еквівалента (b - a).angle().
Повертаємо співвідношення сторін цього вектора, співвідношення x до y.
Vector2 bezier_derivative(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const 🔗
Повертає похідну в заданій точці t на Кривій Безьє, визначеній цим вектором і заданими точками control_1, control_2, та end.
Vector2 bezier_interpolate(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const 🔗
Повертає точку в заданій точці t на Кривій Безьє, визначеній цим вектором і заданими точками control_1, control_2, та end.
Vector2 bounce(n: Vector2) const 🔗
Повертаємо вектор «вимкнено» з лінії, визначеної заданим нормам n перпендикулярно лінії.
Note: bounce() виконує операцію, яка більшість двигунів і рамок виклику reflect().
Повертає новий вектор, у якого всі компоненти округлені до більшого цілого (до додатної нескінченності).
Vector2 clamp(min: Vector2, max: Vector2) const 🔗
Повертає новий вектор, у якого всі компоненти обмежені між відповідними компонентами min і max, викликаючи @GlobalScope.clamp() для кожного компоненту.
Vector2 clampf(min: float, max: float) const 🔗
Повертає новий вектор, у якого всі компоненти обмежені між min і max, викликаючи @GlobalScope.clamp() для кожного компоненту.
float cross(with: Vector2) const 🔗
Повертаємо 2D аналог поперечного виробу для цього вектора і пара з.
Це підписана площа паралелограма, утворена двома векторами. Якщо другий вектор за годинниковою стрілкою з першого вектора, то перехресний продукт - позитивна площа. Якщо проти годинникової стрілки, перехресний продукт є негативною зоною. Якщо два вектори паралельно це повертає нуль, що робить його корисним для тестування, якщо два вектори паралельно.
Примітка: Перетинний продукт не визначений математично. Цей метод складається з 2D векторів у площині XY 3D і використовує їх поперечний компонент Z Z як аналог.
Vector2 cubic_interpolate(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float) const 🔗
Виконує кубічну інтерполяцію між цим вектором і b, використовуючи pre_a і post_b як контрольні точки, та повертає результат у позиції weight. weight знаходиться в діапазоні від 0.0 до 1.0 і визначає ступінь інтерполяції.
Vector2 cubic_interpolate_in_time(b: Vector2, pre_a: Vector2, post_b: Vector2, 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()), завдяки використанню значень часу.
Vector2 direction_to(to: Vector2) const 🔗
Повертає нормалізований вектор, що вказує від цього вектора до to. Це еквівалентно виразу (b - a).normalized().
float distance_squared_to(to: Vector2) const 🔗
Повертає квадрат відстані між цим вектором і to.
Цей метод працює швидше, ніж distance_to(), тому надавайте йому перевагу, якщо потрібно порівнювати вектори або використовувати квадрат відстані у формулі.
float distance_to(to: Vector2) const 🔗
Повертає відстань між цим вектором і до.
float dot(with: Vector2) const 🔗
Повертає скалярний добуток цього вектора і with. Це можна використовувати для порівняння кута між двома векторами. Наприклад, цей метод можна застосувати, щоб визначити, чи ворог дивиться на гравця.
Скалярний добуток буде 0 для прямого кута (90 градусів), більший за 0, якщо кут менший за 90 градусів і менший за 0, якщо кут більший за 90 градусів.
При використанні одиничних (нормалізованих) векторів результат завжди буде між -1.0 (кут 180 градусів), коли вектори спрямовані в протилежних напрямках, та 1.0 (кут 0 градусів), коли вектори співнаправлені.
Примітка: a.dot(b) еквівалентно b.dot(a).
Повертає новий вектор, у якого всі компоненти округлені вниз (до від'ємної нескінченності).
Vector2 from_angle(angle: float) static 🔗
Створює Vector2, повернутий на заданий кут angle у радіанах. Це еквівалентно виконанню Vector2(cos(angle), sin(angle)) або Vector2.RIGHT.rotated(angle).
print(Vector2.from_angle(0)) # Виводить (1.0, 0.0)
print(Vector2(1, 0).angle()) # Виводить 0.0, що є кутом, використаним вище.
print(Vector2.from_angle(PI / 2)) # Виводить (0.0, 1.0)
Примітка: Довжина повернутого Vector2 становить приблизно 1.0, але не гарантується, що вона буде точно 1.0 через проблеми з точністю чисел з плаваючою комою. Викличте normalized() для повернутого Vector2, якщо вам потрібен одиничний вектор.
bool is_equal_approx(to: Vector2) 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(), тому віддавайте йому перевагу, якщо вам потрібно порівняти вектори або потрібен квадрат відстані для якоїсь формули.
Vector2 lerp(to: Vector2, weight: float) const 🔗
Повертає результат лінійної інтерполяції між цим вектором та to на величину weight. Значення weight повинно знаходитися в діапазоні від 0.0 до 1.0 і представляє ступінь інтерполяції.
Vector2 limit_length(length: float = 1.0) const 🔗
Повертає вектор із максимальною довжиною, обмежуючи його довжину до length. Якщо вектор нескінченний, результат не визначений.
Vector2 max(with: Vector2) const 🔗
Повертає вектор, кожен компонент якого є максимальним серед відповідних компонентів цього вектора та вектора with. Еквівалентно Vector2(maxf(x, with.x), maxf(y, with.y)).
Повертає вісь найвищого значення вектора. AXIS_* константи. Якщо всі компоненти рівні, цей метод повертає AXIS_X.
Vector2 maxf(with: float) const 🔗
Повертає компонентний максимум цього вектора і with, еквівалентно Vector2(maxf(x, with), maxf(y, with)).
Vector2 min(with: Vector2) const 🔗
Повертає вектор, кожен компонент якого є мінімальним серед відповідного компонента цього вектора та вектора with. Еквівалентно Vector2(minf(x, with.x), minf(y, with.y)).
Повертає вісь найнижчого значення вектора. AXIS_* константи. Якщо всі компоненти рівні, цей метод повертає AXIS_Y.
Vector2 minf(with: float) const 🔗
Повертає компонентний мінімум цього вектора та with. Еквівалентно Vector2(minf(x, with), minf(y, with)).
Vector2 move_toward(to: Vector2, delta: float) const 🔗
Повертає новий вектор, зміщений у напрямку to на фіксовану величину delta. Не виходить за межі кінцевого значення.
Повертає результат масштабування вектора до одиничної довжини. Еквівалентно v / v.length(). Повертає (0, 0), якщо v.length() == 0. Див. також is_normalized().
Примітка: Ця функція може повертати некоректні значення, якщо довжина вхідного вектора наближена до нуля.
Повертає перпендикулярний вектор обертається 90 градусів проти годинникової стрілки порівняно з оригінальною, з однаковою довжиною.
Vector2 posmod(mod: float) const 🔗
Повертає вектор, який складається з @GlobalScope.fposmod() компонентів цього вектора та mod.
Vector2 posmodv(modv: Vector2) const 🔗
Повертає вектор, який складається з @GlobalScope.fposmod() компонентів цього вектора та компонентів modv.
Vector2 project(b: Vector2) const 🔗
Повертає новий вектор, отриманий проєкцією цього вектора на заданий вектор b. Отриманий вектор буде паралельним до b. Див. також slide().
Примітка: Якщо b є нульовим вектором, компоненти отриманого вектора будуть рівні @GDScript.NAN.
Vector2 reflect(line: Vector2) const 🔗
Повертає результат відбиття вектора від лінії, визначеної заданим вектором напрямку line.
Примітка: reflect() відрізняється від того, що інші рушії та фреймворки називають reflect(). В інших рушіях reflect() приймає нормаль до напрямку, який є напрямком, перпендикулярним до лінії. У Godot ви безпосередньо вказуєте напрямок лінії. Див. також bounce(), який виконує те, що більшість рушіїв називають reflect().
Vector2 rotated(angle: float) const 🔗
Повертає результат обертання цього вектора на angle (у радіанах). Див. також @GlobalScope.deg_to_rad().
Повертає новий вектор, у якому всі компоненти округлені до найближчого цілого числа.
Повертає новий вектор, у якому кожен компонент приймає значення 1.0, якщо він додатний, -1.0, якщо від'ємний, і 0.0, якщо нульовий. Результат ідентичний виклику @GlobalScope.sign() для кожного компонента.
Vector2 slerp(to: Vector2, weight: float) const 🔗
Повертає результат сферичної лінійної інтерполяції між цим вектором та to, на величину weight. weight знаходиться в діапазоні від 0,0 до 1,0, що представляє величину інтерполяції.
Цей метод також обробляє інтерполяцію довжин, якщо вхідні вектори мають різну довжину. Для окремого випадку, коли один або обидва вхідні вектори мають нульову довжину, цей метод поводиться як lerp().
Vector2 slide(n: Vector2) const 🔗
Повертає новий вектор, отриманий від ковзання цього вектора по лінії з нормаллю n. Отриманий новий вектор перпендикулярно n, і еквівалентний цьому вектору мінус його проекції n. Дивіться також project().
Примітка: Вектор n повинен бути нормований. Дивись також normalized().
Vector2 snapped(step: Vector2) const 🔗
Повертає новий вектор, кожна компонента якого прив'язана до найближчого кратного відповідної компоненти у векторі step. Це також можна використовувати для заокруглення компонент до довільної кількості знаків після коми.
Vector2 snappedf(step: float) const 🔗
Повертає новий вектор, кожна компонента якого прив'язана до найближчого кратного значення step. Це також можна використовувати для заокруглення компонент до довільної кількості знаків після коми.
Описи операторів
bool operator !=(right: Vector2) 🔗
Повертає true, якщо вектори не рівні.
Примітка: Через помилки точності з плаваючою комою, краще використати is_equal_approx(), який є більш надійним.
Примітка: Вектори з елементами @GDScript.NAN не поводяться так само, як інші вектори. Тому результати цього оператора можуть бути неточними, якщо включено NaN.
Vector2 operator *(right: Transform2D) 🔗
Неперевершено трансформується (мультипси) Vector2 заданим Transform2D матрицею перетворення, під припущенням, що трансформаційна основа є ортонормальним (тобто обертання / рефлекція є дрібним, масштабування / шавлія не).
vector * трансформатор еквівалент transform.inverse() * вектор. Transform2D.inverse().
Для перетворення інверсом афінової трансформації (наприклад, з масштабуванням) transform.affine_inverse() * вектор можна використовувати замість. Transform2D.affine_inverse().
Vector2 operator *(right: Vector2) 🔗
Множить кожен компонент Vector2 компонентами заданого Vector2.
print(Vector2(10, 20) * Vector2(3, 4)) # Виводить (30.0, 80.0)
Vector2 operator *(right: float) 🔗
Множення кожного компонента Vector2 заданими float.
Vector2 operator *(right: int) 🔗
Множення кожного компонента Vector2 заданої int.
Vector2 operator +(right: Vector2) 🔗
Додає кожен компонент Vector2 компонентами заданого Vector2.
print(Vector2(10, 20) + Vector2(3, 4)) # Виводить (13.0, 24.0)
Vector2 operator -(right: Vector2) 🔗
Віднімає кожну компоненту Vector2 від компонентів заданого Vector2.
print(Vector2(10, 20) - Vector2(3, 4)) # Виводить (7.0, 16.0)
Vector2 operator /(right: Vector2) 🔗
Ділить кожну компоненту Vector2 на компоненти заданого Vector2.
print(Vector2(10, 20) / Vector2(2, 5)) # Виводить (5.0, 4.0)
Vector2 operator /(right: float) 🔗
Дивиди кожний компонент Vector2 відданий float.
Vector2 operator /(right: int) 🔗
Дивиди кожного компонента Vector2 за умови int.
bool operator <(right: Vector2) 🔗
Порівнює два вектори Vector2, спочатку перевіряючи чи значення X у лівого вектора менше за значення right вектора, і, за рівності X, повторює перевірку для значень Y. Корисно для сортування.
Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.
bool operator <=(right: Vector2) 🔗
Порівнює два вектори Vector2, спочатку перевіряючи чи значення X у лівого вектора менше чи рівне до right вектора, і, за рівності X, повторює перевірку для значень Y. Корисно для сортування.
Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.
bool operator ==(right: Vector2) 🔗
Повертає true, якщо вектори абсолютно рівні.
Примітка: Через помилки точності з плаваючою комою, краще використати is_equal_approx(), який є більш надійним.
Примітка: Вектори з елементами @GDScript.NAN не поводяться так само, як інші вектори. Тому результати цього оператора можуть бути неточними, якщо включено NaN.
bool operator >(right: Vector2) 🔗
Порівнює два вектори Vector2, спочатку перевіряючи чи значення X у лівого вектора більше за значення right вектора, і, за рівності X, повторює перевірку для значень Y. Корисно для сортування.
Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.
bool operator >=(right: Vector2) 🔗
Порівнює два вектори Vector2, спочатку перевіряючи чи значення X у лівого вектора більше чи рівне до right вектора, і, за рівності X, повторює перевірку для значень Y. Корисно для сортування.
Примітка: Поведінка векторів з @GDScript.NAN відрізняється від інших. Через це результати цього методу можуть бути неточними за наявності NaN-ів.
float operator [](index: int) 🔗
Доступ до векторних компонентів за допомогою їх index. v[0] еквівалент v.x, і v[1] еквівалент v.y.
Повертає однакову вартість, якщо + не було. `` +`` нічого не робить, але іноді це може зробити ваш код більш читабельним.
Повертає негативне значення Vector2. Vector2(-v.x, -v.y). Ця операція закріплює напрямок вектора, зберігаючи однакову величину. З поплавками число нуль може бути або позитивним або негативним.