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 🔗
Возвращает квадрат расстояния между этим вектором и to.
Этот метод работает быстрее, чем distance_to(), поэтому предпочитайте его, если вам нужно сравнить векторы или вам нужен квадрат расстояния для какой-то формулы.
float distance_to(to: Vector4) const 🔗
Возвращает расстояние между данным вектором и 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). Эта операция меняет направление вектора, сохраняя ту же величину. С плавающей точкой число ноль может быть как положительным, так и отрицательным.