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 🔗

Возвращает квадрат расстояния между этим вектором и to.

Этот метод работает быстрее, чем distance_to(), поэтому предпочитайте его, если вам нужно сравнить векторы или вам нужен квадрат расстояния для какой-то формулы.


float distance_to(to: Vector4) const 🔗

Возвращает расстояние между данным вектором и 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). Эта операция меняет направление вектора, сохраняя ту же величину. С плавающей точкой число ноль может быть как положительным, так и отрицательным.