Vector4

Un vector 4D que utiliza coordenadas de punto flotante.

Descripción

Una estructura de 4 elementos que se puede usar para representar coordenadas 4D o cualquier otro cuarteto de valores numéricos.

Utiliza coordenadas de punto flotante. De forma predeterminada, estos valores de punto flotante utilizan una precisión de 32 bits, a diferencia de float, que siempre tiene 64 bits. Si se necesita precisión doble, compila el motor con la opción precision=double.

Véase Vector4i para su contraparte entera.

Nota: En un contexto booleano, un Vector4 se evaluará como false si es igual a Vector4(0, 0, 0, 0). De lo contrario, un Vector4 siempre se evaluará como true.

Propiedades

float

w

0.0

float

x

0.0

float

y

0.0

float

z

0.0

Constructores

Vector4

Vector4()

Vector4

Vector4(from: Vector4)

Vector4

Vector4(from: Vector4i)

Vector4

Vector4(x: float, y: float, z: float, w: float)

Métodos

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

Operadores

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-()


Enumeraciones

enum Axis: 🔗

Axis AXIS_X = 0

Valor enumerado para el eje X. Devuelto por max_axis_index() y min_axis_index().

Axis AXIS_Y = 1

Valor enumerado para el eje Y. Devuelto por max_axis_index() y min_axis_index().

Axis AXIS_Z = 2

Valor enumerado para el eje Z. Devuelto por max_axis_index() y min_axis_index().

Axis AXIS_W = 3

Valor enumerado para el eje W. Devuelto por max_axis_index() y min_axis_index().


Constantes

ZERO = Vector4(0, 0, 0, 0) 🔗

Vector cero, un vector con todos los componentes ajustados a 0.

ONE = Vector4(1, 1, 1, 1) 🔗

Un vector, un vector con todos los componentes ajustados a 1.

INF = Vector4(inf, inf, inf, inf) 🔗

Vector infinito, un vector con todos los componentes ajustados a @GDScript.INF.


Descripciones de Propiedades

float w = 0.0 🔗

El componente W del vector. También se puede acceder utilizando la posición del índice [3].


float x = 0.0 🔗

El componente X del vector. También se puede acceder utilizando la posición del índice [0].


float y = 0.0 🔗

El componente Y del vector. También se puede acceder usando la posición del índice [1].


float z = 0.0 🔗

El componente Z del vector. También se puede acceder usando la posición del índice [2].


Descripciones de Constructores

Vector4 Vector4() 🔗

Construye un Vector4 inicializado por defecto con todos los componentes establecidos a 0.


Vector4 Vector4(from: Vector4)

Construye un Vector4 como copia del Vector4 dado.


Vector4 Vector4(from: Vector4i)

Construye un nuevo Vector4 a partir del Vector4i dado.


Vector4 Vector4(x: float, y: float, z: float, w: float)

Devuelve un Vector4 con los componentes dados.


Descripciones de Métodos

Vector4 abs() const 🔗

Devuelve un nuevo vector con todos los componentes en valores absolutos (es decir, positivos).


Vector4 ceil() const 🔗

Devuelve un nuevo vector con todos los componentes redondeados hacia arriba (hacia el infinito positivo).


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

Devuelve un nuevo vector con todos los componentes limitados entre los componentes de min y max, ejecutando @GlobalScope.clamp() en cada componente.


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

Devuelve un nuevo vector con todos los componentes restringidos entre min y max, ejecutando @GlobalScope.clamp() en cada componente.


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

Realiza una interpolación cúbica entre este vector y b usando pre_a y post_b como manejadores, y devuelve el resultado en la posición weight. weight está en el rango de 0.0 a 1.0, representando la cantidad de interpolación.


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 🔗

Realiza una interpolación cúbica entre este vector y b usando pre_a y post_b como manejadores, y devuelve el resultado en la posición weight. weight está en el rango de 0.0 a 1.0, representando la cantidad de interpolación.

Puede realizar una interpolación más suave que cubic_interpolate() por los valores de tiempo.


Vector4 direction_to(to: Vector4) const 🔗

Devuelve el vector normalizado que apunta desde este vector a to. Esto es equivalente a usar (to - self).normalized().


float distance_squared_to(to: Vector4) const 🔗

Devuelve la distancia al cuadrado entre este vector y to.

Este método se ejecuta más rápido que distance_to(), así que es preferible si necesitas comparar vectores o necesitas la distancia al cuadrado para alguna fórmula.


float distance_to(to: Vector4) const 🔗

Devuelve la distancia entre este vector y to.


float dot(with: Vector4) const 🔗

Devuelve el producto escalar de este vector y with.


Vector4 floor() const 🔗

Devuelve un nuevo vector con todos los componentes redondeados hacia abajo (hacia el infinito negativo).


Vector4 inverse() const 🔗

Devuelve el inverso del vector. Esto es lo mismo que Vector4(1.0 / v.x, 1.0 / v.y, 1.0 / v.z, 1.0 / v.w).


bool is_equal_approx(to: Vector4) const 🔗

Devuelve true si este vector y to son aproximadamente iguales, ejecutando @GlobalScope.is_equal_approx() en cada componente.


bool is_finite() const 🔗

Devuelve true si este vector es finito, llamando a @GlobalScope.is_finite() en cada componente.


bool is_normalized() const 🔗

Devuelve true si el vector está normalizado, es decir, si su longitud es aproximadamente igual a 1.


bool is_zero_approx() const 🔗

Devuelve true si los valores de este vector son aproximadamente cero, ejecutando @GlobalScope.is_zero_approx() en cada componente.

Este método es más rápido que usar is_equal_approx() con un valor como un vector cero.


float length() const 🔗

Devuelve la longitud (magnitud) de este vector.


float length_squared() const 🔗

Devuelve la longitud cuadrada (magnitud cuadrada) de este vector.

Este método funciona más rápido que el length(), por lo que es preferible si necesitas comparar vectores o necesitas la distancia al cuadrado para alguna fórmula.


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

Devuelve el resultado de la interpolación lineal entre este vector y to por la cantidad weight. weight está en el rango de 0.0 a 1.0, representando la cantidad de interpolación.


Vector4 max(with: Vector4) const 🔗

Devuelve el máximo componente a componente de este y with, equivalente a Vector4(maxf(x, with.x), maxf(y, with.y), maxf(z, with.z), maxf(w, with.w)).


int max_axis_index() const 🔗

Devuelve el eje del valor más alto del vector. Consulta las constantes AXIS_*. Si todos los componentes son iguales, este método devuelve AXIS_X.


Vector4 maxf(with: float) const 🔗

Devuelve el máximo componente a componente de este y with, equivalente a Vector4(maxf(x, with), maxf(y, with), maxf(z, with), maxf(w, with)).


Vector4 min(with: Vector4) const 🔗

Devuelve el mínimo componente a componente de este y with, equivalente a Vector4(minf(x, with.x), minf(y, with.y), minf(z, with.z), minf(w, with.w)).


int min_axis_index() const 🔗

Devuelve el eje del valor más bajo del vector. Ver las constantes AXIS_*. Si todos los componentes son iguales, este método devuelve AXIS_W.


Vector4 minf(with: float) const 🔗

Devuelve el mínimo componente a componente de este y with, equivalente a Vector4(minf(x, with), minf(y, with), minf(z, with), minf(w, with)).


Vector4 normalized() const 🔗

Devuelve el resultado de escalar el vector a longitud unitaria. Equivalente a v / v.length(). Devuelve (0, 0, 0, 0) si v.length() == 0. Véase también is_normalized().

Nota: Esta función puede devolver valores incorrectos si la longitud del vector de entrada es cercana a cero.


Vector4 posmod(mod: float) const 🔗

Devuelve un vector compuesto por el @GlobalScope.fposmod() de los componentes de este vector y mod.


Vector4 posmodv(modv: Vector4) const 🔗

Devuelve un vector compuesto por el @GlobalScope.fposmod() de los componentes de este vector y los componentes de modv.


Vector4 round() const 🔗

Devuelve un nuevo vector con todos los componentes redondeados al entero más cercano, con los casos intermedios redondeados desde cero.


Vector4 sign() const 🔗

Devuelve un nuevo vector con cada componente establecido a 1.0 si es positivo, -1.0 si es negativo y 0.0 si es cero. El resultado es idéntico a llamar a @GlobalScope.sign() en cada componente.


Vector4 snapped(step: Vector4) const 🔗

Devuelve un nuevo vector con cada componente ajustado al múltiplo más cercano del componente correspondiente en step. Esto también se puede usar para redondear los componentes a un número arbitrario de decimales.


Vector4 snappedf(step: float) const 🔗

Devuelve un nuevo vector con cada componente ajustado al múltiplo más cercano de step. Esto también se puede usar para redondear los componentes a un número arbitrario de decimales.


Descripciones de Operadores

bool operator !=(right: Vector4) 🔗

Devuelve true si los vectores no son iguales.

Nota: Debido a errores de precisión en punto flotante, considera usar is_equal_approx() en su lugar, ya que es más fiable.

Nota: Los vectores con elementos @GDScript.NAN no se comportan igual que otros vectores. Por lo tanto, los resultados de este operador podrían no ser precisos si se incluyen NaN.


Vector4 operator *(right: Projection) 🔗

Transforma (multiplica) el Vector4 por la transpuesta de la matriz Projection dada.

Para transformar por la inversa de una proyección, se puede usar en su lugar projection.inverse() * vector. Véase Projection.inverse().


Vector4 operator *(right: Vector4) 🔗

Multiplica cada componente del Vector4 por los componentes del Vector4 dado.

print(Vector4(10, 20, 30, 40) * Vector4(3, 4, 5, 6)) # Imprime (30.0, 80.0, 150.0, 240.0)

Vector4 operator *(right: float) 🔗

Multiplica cada componente del Vector4 por el float dado.

print(Vector4(10, 20, 30, 40) * 2) # Imprime (20.0, 40.0, 60.0, 80.0)

Vector4 operator *(right: int) 🔗

Multiplica cada componente del Vector4 por el int dado.


Vector4 operator +(right: Vector4) 🔗

Suma cada componente del Vector4 con los componentes del Vector4 dado.

print(Vector4(10, 20, 30, 40) + Vector4(3, 4, 5, 6)) # Imprime (13.0, 24.0, 35.0, 46.0)

Vector4 operator -(right: Vector4) 🔗

Resta cada componente del Vector4 por los componentes del Vector4 dado.

print(Vector4(10, 20, 30, 40) - Vector4(3, 4, 5, 6)) # Imprime (7.0, 16.0, 25.0, 34.0)

Vector4 operator /(right: Vector4) 🔗

Divide cada componente del Vector4 por los componentes del Vector4 dado.

print(Vector4(10, 20, 30, 40) / Vector4(2, 5, 3, 4)) # Imprime (5.0, 4.0, 10.0, 10.0)

Vector4 operator /(right: float) 🔗

Divide cada componente del Vector4 por el float dado.

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

Vector4 operator /(right: int) 🔗

Divide cada componente del Vector4 por el int dado.


bool operator <(right: Vector4) 🔗

Compara dos vectores Vector4 comprobando primero si el valor X del vector izquierdo es menor que el valor X del vector right. Si los valores X son exactamente iguales, entonces repite esta comprobación con los valores Y de los dos vectores, los valores Z de los dos vectores, y luego con los valores W. Este operador es útil para ordenar vectores.

Nota: Los vectores con elementos @GDScript.NAN no se comportan igual que otros vectores. Por lo tanto, los resultados de este operador pueden no ser precisos si se incluyen NaNs.


bool operator <=(right: Vector4) 🔗

Compara dos vectores Vector4 comprobando primero si el valor X del vector izquierdo es menor o igual que el valor X del vector right. Si los valores X son exactamente iguales, entonces repite esta comprobación con los valores Y de los dos vectores, los valores Z de los dos vectores, y luego con los valores W. Este operador es útil para ordenar vectores.

Nota: Los vectores con elementos @GDScript.NAN no se comportan igual que otros vectores. Por lo tanto, los resultados de este operador pueden no ser precisos si se incluyen NaNs.


bool operator ==(right: Vector4) 🔗

Devuelve true si los vectores son exactamente iguales.

Nota: Debido a errores de precisión en punto flotante, considera usar is_equal_approx() en su lugar, ya que es más fiable.

Nota: Los vectores con elementos @GDScript.NAN no se comportan igual que otros vectores. Por lo tanto, los resultados de este operador podrían no ser precisos si se incluyen NaN.


bool operator >(right: Vector4) 🔗

Compara dos vectores Vector4 comprobando primero si el valor X del vector izquierdo es mayor que el valor X del vector right. Si los valores X son exactamente iguales, entonces repite esta comprobación con los valores Y de los dos vectores, los valores Z de los dos vectores, y luego con los valores W. Este operador es útil para ordenar vectores.

Nota: Los vectores con elementos @GDScript.NAN no se comportan igual que otros vectores. Por lo tanto, los resultados de este operador pueden no ser precisos si se incluyen NaNs.


bool operator >=(right: Vector4) 🔗

Compara dos vectores Vector4 comprobando primero si el valor X del vector izquierdo es mayor o igual que el valor X del vector right. Si los valores X son exactamente iguales, entonces repite esta comprobación con los valores Y de los dos vectores, los valores Z de los dos vectores, y luego con los valores W. Este operador es útil para ordenar vectores.

Nota: Los vectores con elementos @GDScript.NAN no se comportan igual que otros vectores. Por lo tanto, los resultados de este operador pueden no ser precisos si se incluyen NaNs.


float operator [](index: int) 🔗

Accede a los componentes del vector usando su index. v[0] es equivalente a v.x, v[1] es equivalente a v.y, v[2] es equivalente a v.z, y v[3] es equivalente a v.w.


Vector4 operator unary+() 🔗

Devuelve el mismo valor como si el + no estuviera ahí. El + unario no hace nada, pero a veces puede hacer que tu código sea más legible.


Vector4 operator unary-() 🔗

Devuelve el valor negativo del Vector4. Esto es lo mismo que escribir Vector4(-v.x, -v.y, -v.z, -v.w). Esta operación invierte la dirección del vector manteniendo la misma magnitud. Con los floats, el número cero puede ser tanto positivo como negativo.