Vector3

3D-вектор, що використовує координати з рухомою комою.

Опис

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

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

Див. також Vector3i для цілочисельного аналога.

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

Посібники

Властивості

float

x

0.0

float

y

0.0

float

z

0.0

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

Vector3

Vector3()

Vector3

Vector3(from: Vector3)

Vector3

Vector3(from: Vector3i)

Vector3

Vector3(x: float, y: float, z: float)

Методи

Vector3

abs() const

float

angle_to(to: Vector3) const

Vector3

bezier_derivative(control_1: Vector3, control_2: Vector3, end: Vector3, t: float) const

Vector3

bezier_interpolate(control_1: Vector3, control_2: Vector3, end: Vector3, t: float) const

Vector3

bounce(n: Vector3) const

Vector3

ceil() const

Vector3

clamp(min: Vector3, max: Vector3) const

Vector3

clampf(min: float, max: float) const

Vector3

cross(with: Vector3) const

Vector3

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

Vector3

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

Vector3

direction_to(to: Vector3) const

float

distance_squared_to(to: Vector3) const

float

distance_to(to: Vector3) const

float

dot(with: Vector3) const

Vector3

floor() const

Vector3

inverse() const

bool

is_equal_approx(to: Vector3) const

bool

is_finite() const

bool

is_normalized() const

bool

is_zero_approx() const

float

length() const

float

length_squared() const

Vector3

lerp(to: Vector3, weight: float) const

Vector3

limit_length(length: float = 1.0) const

Vector3

max(with: Vector3) const

int

max_axis_index() const

Vector3

maxf(with: float) const

Vector3

min(with: Vector3) const

int

min_axis_index() const

Vector3

minf(with: float) const

Vector3

move_toward(to: Vector3, delta: float) const

Vector3

normalized() const

Vector3

octahedron_decode(uv: Vector2) static

Vector2

octahedron_encode() const

Basis

outer(with: Vector3) const

Vector3

posmod(mod: float) const

Vector3

posmodv(modv: Vector3) const

Vector3

project(b: Vector3) const

Vector3

reflect(n: Vector3) const

Vector3

rotated(axis: Vector3, angle: float) const

Vector3

round() const

Vector3

sign() const

float

signed_angle_to(to: Vector3, axis: Vector3) const

Vector3

slerp(to: Vector3, weight: float) const

Vector3

slide(n: Vector3) const

Vector3

snapped(step: Vector3) const

Vector3

snappedf(step: float) const

Оператори

bool

operator !=(right: Vector3)

Vector3

operator *(right: Basis)

Vector3

operator *(right: Quaternion)

Vector3

operator *(right: Transform3D)

Vector3

operator *(right: Vector3)

Vector3

operator *(right: float)

Vector3

operator *(right: int)

Vector3

operator +(right: Vector3)

Vector3

operator -(right: Vector3)

Vector3

operator /(right: Vector3)

Vector3

operator /(right: float)

Vector3

operator /(right: int)

bool

operator <(right: Vector3)

bool

operator <=(right: Vector3)

bool

operator ==(right: Vector3)

bool

operator >(right: Vector3)

bool

operator >=(right: Vector3)

float

operator [](index: int)

Vector3

operator unary+()

Vector3

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

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

ONE = Vector3(1, 1, 1) 🔗

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

INF = Vector3(inf, inf, inf) 🔗

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

LEFT = Vector3(-1, 0, 0) 🔗

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

RIGHT = Vector3(1, 0, 0) 🔗

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

UP = Vector3(0, 1, 0) 🔗

Одиничний вектор вверх.

DOWN = Vector3(0, -1, 0) 🔗

Одиничний вектор вниз.

FORWARD = Vector3(0, 0, -1) 🔗

Одиничний вектор вперед. Представляє локальний напрямок вперед і глобальний напрямок на північ. Майте на увазі, що напрямок вперед для світла, камер тощо відрізняється від 3D-ресурсів, таких як персонажі, які за домовленістю обернені до камери. Використовуйте константи MODEL_FRONT та подібні під час роботи в просторі 3D-ресурсів.

BACK = Vector3(0, 0, 1) 🔗

Одиничний вектор назад. Представляє локальний напрямок назад і глобальний напрямок на південь.

MODEL_LEFT = Vector3(1, 0, 0) 🔗

Одиничний вектор, спрямований у лівий бік імпортованих 3D-ресурсів.

MODEL_RIGHT = Vector3(-1, 0, 0) 🔗

Одиничний вектор, спрямований у правий бік імпортованих 3D-ресурсів.

MODEL_TOP = Vector3(0, 1, 0) 🔗

Одиничний вектор, спрямований у верхній бік (вгору) імпортованих 3D-ресурсів.

MODEL_BOTTOM = Vector3(0, -1, 0) 🔗

Одиничний вектор, спрямований у нижній бік (вниз) імпортованих 3D-ресурсів.

MODEL_FRONT = Vector3(0, 0, 1) 🔗

Одиничний вектор, спрямований у передній бік (обличчям вперед) імпортованих 3D-ресурсів.

MODEL_REAR = Vector3(0, 0, -1) 🔗

Одиничний вектор, спрямований у задній бік (назад) імпортованих 3D-ресурсів.


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

float x = 0.0 🔗

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


float y = 0.0 🔗

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


float z = 0.0 🔗

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


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

Vector3 Vector3() 🔗

Створює стандартну ініціалізацію Vector3 з усіма компонентами, встановленими на 0.


Vector3 Vector3(from: Vector3)

Створює Vector3 як копію заданого Vector3.


Vector3 Vector3(from: Vector3i)

Створює новий Vector3 з Vector3i.


Vector3 Vector3(x: float, y: float, z: float)

Повертає Vector3 з заданими компонентами.


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

Vector3 abs() const 🔗

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


float angle_to(to: Vector3) const 🔗

Повертає невід’ємний мінімальний кут до заданого вектора, в радіанах.


Vector3 bezier_derivative(control_1: Vector3, control_2: Vector3, end: Vector3, t: float) const 🔗

Повертає похідну в заданій точці t на Кривій Безьє, визначеній цим вектором і заданими точками control_1, control_2, та end.


Vector3 bezier_interpolate(control_1: Vector3, control_2: Vector3, end: Vector3, t: float) const 🔗

Повертає точку в заданій точці t на Кривій Безьє, визначеній цим вектором і заданими точками control_1, control_2, та end.


Vector3 bounce(n: Vector3) const 🔗

Повертає вектор, «відбитий» від площини, визначеної заданою нормаллю n.

Примітка: bounce() виконує операцію, яку більшість рушіїв і фреймворків називають reflect().


Vector3 ceil() const 🔗

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


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

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


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

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


Vector3 cross(with: Vector3) const 🔗

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

Це повертає вектор, перпендикулярний до обох векторів (цього і with), що відповідає вектору нормалі площини, визначеної цими двома векторами. Оскільки існує два таких вектори в протилежних напрямках, цей метод повертає той, що визначається правилом правої руки. Якщо два вектори паралельні, метод повертає нульовий вектор, що корисно для перевірки паралельності векторів.


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

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


Vector3 cubic_interpolate_in_time(b: Vector3, pre_a: Vector3, post_b: Vector3, 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()), завдяки використанню значень часу.


Vector3 direction_to(to: Vector3) const 🔗

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


float distance_squared_to(to: Vector3) const 🔗

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

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


float distance_to(to: Vector3) const 🔗

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


float dot(with: Vector3) const 🔗

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

Скалярний добуток буде 0 для прямого кута (90 градусів), більший за 0, якщо кут менший за 90 градусів і менший за 0, якщо кут більший за 90 градусів.

При використанні одиничних (нормалізованих) векторів результат завжди буде між -1.0 (кут 180 градусів), коли вектори спрямовані в протилежних напрямках, та 1.0 (кут 0 градусів), коли вектори співнаправлені.

Примітка: a.dot(b) еквівалентно b.dot(a).


Vector3 floor() const 🔗

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


Vector3 inverse() const 🔗

Повертає обернений вектор. Це те саме, що Vector3(1.0 / v.x, 1.0 / v.y, 1.0 / v.z).


bool is_equal_approx(to: Vector3) 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(), тому віддавайте йому перевагу, якщо вам потрібно порівняти вектори або потрібен квадрат відстані для якоїсь формули.


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

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


Vector3 limit_length(length: float = 1.0) const 🔗

Повертає вектор із максимальною довжиною, обмежуючи його довжину до length. Якщо вектор нескінченний, результат не визначений.


Vector3 max(with: Vector3) const 🔗

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


int max_axis_index() const 🔗

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


Vector3 maxf(with: float) const 🔗

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


Vector3 min(with: Vector3) const 🔗

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


int min_axis_index() const 🔗

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


Vector3 minf(with: float) const 🔗

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


Vector3 move_toward(to: Vector3, delta: float) const 🔗

Повертає новий вектор, зміщений у напрямку to на фіксовану величину delta. Не виходить за межі кінцевого значення.


Vector3 normalized() const 🔗

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

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


Vector3 octahedron_decode(uv: Vector2) static 🔗

Повертає Vector3 із октаедрично стиснутої форми, створеної за допомогою octahedron_encode() (збереженої як Vector2).


Vector2 octahedron_encode() const 🔗

Повертає октаедрично закодовану (oct32) форму цього Vector3 у вигляді Vector2. Оскільки Vector2 займає на 1/3 менше пам’яті порівняно з Vector3, цей метод стиснення дозволяє передавати більшу кількість нормалізованих (normalized()) векторів Vector3 без збільшення вимог до пам’яті чи сховища. Див. також octahedron_decode().

Примітка: octahedron_encode() можна застосовувати лише до нормалізованих (normalized()) векторів. Функція не перевіряє, чи є Vector3 нормалізованим, і поверне значення, яке не декодується у вихідний вектор, якщо вхідний Vector3 не нормалізований.

Примітка: Октаедричне стиснення є з втратами, хоча візуальні відмінності зазвичай непомітні в реальних сценаріях.


Basis outer(with: Vector3) const 🔗

Повертає зовнішній добуток із with.


Vector3 posmod(mod: float) const 🔗

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


Vector3 posmodv(modv: Vector3) const 🔗

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


Vector3 project(b: Vector3) const 🔗

Повертає новий вектор, отриманий проєкцією цього вектора на заданий вектор b. Отриманий вектор буде паралельним до b. Див. також slide().

Примітка: Якщо b є нульовим вектором, компоненти отриманого вектора будуть рівні @GDScript.NAN.


Vector3 reflect(n: Vector3) const 🔗

Повертає результат відбиття вектора через площину, визначену заданим вектором нормалі n.

Примітка: reflect() відрізняється від того, що інші рушії та фреймворки називають reflect(). В інших рушіях reflect() повертає результат вектора, відбитого заданою площиною. Таким чином, відбиття проходить через заданий вектор нормалі. Тоді як у Godot відбиття проходить через площину і може розглядатися як відскок від нормалі. Див. також bounce(), який робить те, що більшість рушіїв називають reflect().


Vector3 rotated(axis: Vector3, angle: float) const 🔗

Повертає результат обертання цього вектора навколо заданої осі axis на кут angle (у радіанах). Ось має бути нормалізованим вектором. Див. також @GlobalScope.deg_to_rad().


Vector3 round() const 🔗

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


Vector3 sign() const 🔗

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


float signed_angle_to(to: Vector3, axis: Vector3) const 🔗

Повертає кут зі знаком до заданого вектора, в радіанах. Знак кута є додатнім при обертанні проти годинникової стрілки та від'ємним — за годинниковою стрілкою, якщо дивитися зі сторони, вказаної віссю axis.


Vector3 slerp(to: Vector3, weight: float) const 🔗

Повертає результат сферичної лінійної інтерполяції між цим вектором та to, на величину weight. weight знаходиться в діапазоні від 0,0 до 1,0, що представляє величину інтерполяції.

Цей метод також обробляє інтерполяцію довжин, якщо вхідні вектори мають різну довжину. Для окремого випадку, коли один або обидва вхідні вектори мають нульову довжину, цей метод поводиться як lerp().


Vector3 slide(n: Vector3) const 🔗

Повертає новий вектор, отриманий в результаті ковзання цього вектора вздовж площини з нормаллю n. Отриманий новий вектор є перпендикулярним до n і еквівалентний цьому вектору мінус його проєкція на n. Дивіться також project().

Примітка: Вектор n має бути нормалізованим. Дивіться також normalized().


Vector3 snapped(step: Vector3) const 🔗

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


Vector3 snappedf(step: float) const 🔗

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


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

bool operator !=(right: Vector3) 🔗

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

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

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


Vector3 operator *(right: Basis) 🔗

Обернено трансформує (множить) вектор Vector3 на задану матрицю Basis за умови, що базис є ортонормованим (тобто обертання/віддзеркалення припустимі, а масштабування/зкіс — ні).

Вираз vector * basis еквівалентний до basis.transposed() * vector. Дивіться Basis.transposed().

Для трансформації за допомогою оберненого неортонормованого базису (наприклад, з масштабуванням) можна натомість використовувати basis.inverse() * vector. Дивіться Basis.inverse().


Vector3 operator *(right: Quaternion) 🔗

Обернено трансформує (множить) вектор Vector3 на заданий кватерніон Quaternion.

Вираз vector * quaternion еквівалентний до quaternion.inverse() * vector. Дивіться Quaternion.inverse().


Vector3 operator *(right: Transform3D) 🔗

Обернено трансформує (множить) вектор Vector3 на задану матрицю трансформації Transform3D за умови, що базис трансформації є ортонормованим (тобто обертання/віддзеркалення припустимі, а масштабування/зкіс — ні).

Вираз vector * transform еквівалентний до transform.inverse() * vector. Дивіться Transform3D.inverse().

Для трансформації за допомогою оберненої афінної трансформації (наприклад, з масштабуванням) можна натомість використовувати transform.affine_inverse() * vector. Дивіться Transform3D.affine_inverse().


Vector3 operator *(right: Vector3) 🔗

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

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

Vector3 operator *(right: float) 🔗

Множення кожного компонента Vector3 заданими float.


Vector3 operator *(right: int) 🔗

Множення кожного компонента Vector3 заданим int.


Vector3 operator +(right: Vector3) 🔗

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

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

Vector3 operator -(right: Vector3) 🔗

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

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

Vector3 operator /(right: Vector3) 🔗

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

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

Vector3 operator /(right: float) 🔗

Дивиди кожний компонент Vector3 відданий float.


Vector3 operator /(right: int) 🔗

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


bool operator <(right: Vector3) 🔗

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

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


bool operator <=(right: Vector3) 🔗

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

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


bool operator ==(right: Vector3) 🔗

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

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

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


bool operator >(right: Vector3) 🔗

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

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


bool operator >=(right: Vector3) 🔗

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

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


float operator [](index: int) 🔗

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


Vector3 operator unary+() 🔗

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


Vector3 operator unary-() 🔗

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