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.
Checking the stable version of the documentation...
Vector4
Четырехмерный вектор, использующий координаты с плавающей точкой.
Описание
Структура из 4 элементов, которая может использоваться для представления 4D-координат или любой другой четверки числовых значений.
Она использует координаты с плавающей точкой. По умолчанию эти значения с плавающей точкой используют 32-битную точность, в отличие от float, который всегда 64-битный. Если требуется двойная точность, скомпилируйте движок с опцией precision=double.
См. Vector4i для его целочисленного аналога.
Примечание: В булевом контексте Vector4 будет оцениваться как false, если он равен Vector4(0, 0, 0, 0). В противном случае Vector4 всегда будет оцениваться как 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 🔗
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(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() * 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. Это то же самое, что и запись Vector4(-v.x, -v.y, -v.z, -v.w). Эта операция меняет направление вектора, сохраняя ту же величину. С плавающей точкой число ноль может быть как положительным, так и отрицательным.