Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Vector4

Четырехмерный вектор, использующий координаты с плавающей точкой.

Описание

Структура из 4 элементов, которая может использоваться для представления 4D-координат или любой другой четверки числовых значений.

Она использует координаты с плавающей точкой. По умолчанию эти значения с плавающей точкой используют 32-битную точность, в отличие от float, который всегда 64-битный. Если требуется двойная точность, скомпилируйте движок с опцией precision=double.

См. Vector4i для его целочисленного аналога.

Примечание: В булевом контексте Vector4 будет оцениваться как false, если он равен Vector4(0, 0, 0, 0). В противном случае Vector4 всегда будет оцениваться как 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 🔗

Returns the squared Euclidean distance between this vector and to.

This method runs faster than distance_to(), so prefer it if you need to compare vectors or need the squared distance for some formula.


float distance_to(to: Vector4) const 🔗

Returns the Euclidean distance between this vector and to.


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() * vector можно использовать вместо этого. См. 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)) # Prints (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)) # Prints (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)) # Prints (5.0, 4.0, 10.0, 10.0)

Vector4 operator /(right: float) 🔗

Делит каждый компонент Vector4 на заданное float.

print(Vector4(10, 20, 30, 40) / 2) # Prints (5.0, 10.0, 15.0, 20.0)

Vector4 operator /(right: int) 🔗

Делит каждый компонент Vector4 на заданное int.


bool operator <(right: Vector4) 🔗

Сравнивает два вектора Vector4, сначала проверяя, меньше ли значение X левого вектора, чем значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, значениями Z двух векторов, а затем со значениями W. Этот оператор полезен для сортировки векторов.

Примечание: Векторы с элементами @GDScript.NAN ведут себя не так, как другие векторы. Поэтому результаты этого оператора могут быть неточными, если включены NaN-ы.


bool operator <=(right: Vector4) 🔗

Сравнивает два вектора Vector4, сначала проверяя, меньше ли значение X левого вектора или равно ли ему значение 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 левого вектора, чем значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, значениями Z двух векторов, а затем со значениями W. Этот оператор полезен для сортировки векторов.

Примечание: Векторы с элементами @GDScript.NAN ведут себя не так, как другие векторы. Поэтому результаты этого оператора могут быть неточными, если включены NaN.


bool operator >=(right: Vector4) 🔗

Сравнивает два вектора Vector4, сначала проверяя, больше ли значение X левого вектора или равно ли ему значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, значениями Z двух векторов, а затем со значениями W. Этот оператор полезен для сортировки векторов.

Примечание: Векторы с элементами @GDScript.NAN ведут себя не так, как другие векторы. Поэтому результаты этого оператора могут быть неточными, если включены NaN.


float operator [](index: int) 🔗

Доступ к компонентам вектора осуществляется с помощью их index. v[0] эквивалентно v.x, v[1] эквивалентно v.y, v[2] эквивалентно v.z, а v[3] эквивалентно v.w.


Vector4 operator unary+() 🔗

Возвращает то же значение, как если бы + не было. Унарный + ничего не делает, но иногда он может сделать ваш код более читаемым.


Vector4 operator unary-() 🔗

Возвращает отрицательное значение Vector4. Это то же самое, что и запись Vector4(-v.x, -v.y, -v.z, -v.w). Эта операция меняет направление вектора, сохраняя ту же величину. С плавающей точкой число ноль может быть как положительным, так и отрицательным.