Vector3i

Un vector 3D que utiliza coordenadas enteras.

Descripción

Una estructura de 3 elementos que puede usarse para representar coordenadas de cuadrícula 3D o cualquier otro triplete de enteros.

Utiliza coordenadas enteras y, por lo tanto, es preferible a Vector3 cuando se requiere precisión exacta. Ten en cuenta que los valores están limitados a 32 bits y, a diferencia de Vector3, esto no se puede configurar con una opción de compilación del motor. Utiliza int o PackedInt64Array si necesitan valores de 64 bits.

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

Tutoriales

Propiedades

int

x

0

int

y

0

int

z

0

Constructores

Vector3i

Vector3i()

Vector3i

Vector3i(from: Vector3i)

Vector3i

Vector3i(from: Vector3)

Vector3i

Vector3i(x: int, y: int, z: int)

Métodos

Vector3i

abs() const

Vector3i

clamp(min: Vector3i, max: Vector3i) const

Vector3i

clampi(min: int, max: int) const

int

distance_squared_to(to: Vector3i) const

float

distance_to(to: Vector3i) const

float

length() const

int

length_squared() const

Vector3i

max(with: Vector3i) const

int

max_axis_index() const

Vector3i

maxi(with: int) const

Vector3i

min(with: Vector3i) const

int

min_axis_index() const

Vector3i

mini(with: int) const

Vector3i

sign() const

Vector3i

snapped(step: Vector3i) const

Vector3i

snappedi(step: int) const

Operadores

bool

operator !=(right: Vector3i)

Vector3i

operator %(right: Vector3i)

Vector3i

operator %(right: int)

Vector3i

operator *(right: Vector3i)

Vector3

operator *(right: float)

Vector3i

operator *(right: int)

Vector3i

operator +(right: Vector3i)

Vector3i

operator -(right: Vector3i)

Vector3i

operator /(right: Vector3i)

Vector3

operator /(right: float)

Vector3i

operator /(right: int)

bool

operator <(right: Vector3i)

bool

operator <=(right: Vector3i)

bool

operator ==(right: Vector3i)

bool

operator >(right: Vector3i)

bool

operator >=(right: Vector3i)

int

operator [](index: int)

Vector3i

operator unary+()

Vector3i

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


Constantes

ZERO = Vector3i(0, 0, 0) 🔗

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

ONE = Vector3i(1, 1, 1) 🔗

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

MIN = Vector3i(-2147483648, -2147483648, -2147483648) 🔗

Vector mínimo, un vector con todos los componentes iguales a INT32_MIN. Se puede utilizar como un entero negativo equivalente a Vector3.INF.

MAX = Vector3i(2147483647, 2147483647, 2147483647) 🔗

Vector máximo, un vector con todos los componentes iguales a INT32_MAX. Se puede utilizar como un entero equivalente a Vector3.INF.

LEFT = Vector3i(-1, 0, 0) 🔗

Vector de la unidad izquierda. Representa la dirección local de la izquierda y la dirección global del oeste.

RIGHT = Vector3i(1, 0, 0) 🔗

Vector de la unidad derecha. Representa la dirección local de la derecha, y la dirección global del este.

UP = Vector3i(0, 1, 0) 🔗

Vector de la unidad superior.

DOWN = Vector3i(0, -1, 0) 🔗

Vector de la unidad inferior.

FORWARD = Vector3i(0, 0, -1) 🔗

Vector de la unidad de adelante. Representa la dirección local de avance, y la dirección global del norte.

BACK = Vector3i(0, 0, 1) 🔗

Vector de la unidad trasera. Representa la dirección local de la espalda, y la dirección global del sur.


Descripciones de Propiedades

int x = 0 🔗

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


int y = 0 🔗

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


int z = 0 🔗

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


Descripciones de Constructores

Vector3i Vector3i() 🔗

Construye un Vector3i inicializado por defecto con todos los componentes establecidos en 0.


Vector3i Vector3i(from: Vector3i)

Construye un Vector3i como una copia del Vector3i dado.


Vector3i Vector3i(from: Vector3)

Construye un nuevo Vector3i a partir del Vector3 dado truncando las fracciones de los componentes (redondeando hacia cero). Para un comportamiento diferente, considera pasar el resultado de Vector3.ceil(), Vector3.floor() o Vector3.round() a este constructor.


Vector3i Vector3i(x: int, y: int, z: int)

Devuelve un Vector3i con los componentes dados.


Descripciones de Métodos

Vector3i abs() const 🔗

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


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

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


Vector3i clampi(min: int, max: int) const 🔗

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


int distance_squared_to(to: Vector3i) 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: Vector3i) const 🔗

Devuelve la distancia entre este vector y to.


float length() const 🔗

Devuelve la longitud (magnitud) de este vector.


int 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.


Vector3i max(with: Vector3i) const 🔗

Devuelve el máximo por componente de este y with, equivalente a Vector3i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z)).


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.


Vector3i maxi(with: int) const 🔗

Devuelve el máximo por componente de este y with, equivalente a Vector3i(maxi(x, with), maxi(y, with), maxi(z, with)).


Vector3i min(with: Vector3i) const 🔗

Devuelve el mínimo componente por componente de este y with, equivalente a Vector3i(mini(x, with.x), mini(y, with.y), mini(z, with.z)).


int min_axis_index() const 🔗

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


Vector3i mini(with: int) const 🔗

Devuelve el mínimo componente por componente de este y with, equivalente a Vector3i(mini(x, with), mini(y, with), mini(z, with)).


Vector3i sign() const 🔗

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


Vector3i snapped(step: Vector3i) const 🔗

Devuelve un nuevo vector con cada componente ajustado al múltiplo más cercano del componente correspondiente en step.


Vector3i snappedi(step: int) const 🔗

Devuelve un nuevo vector con cada componente ajustado al múltiplo más cercano de step.


Descripciones de Operadores

bool operator !=(right: Vector3i) 🔗

Devuelve true si los vectores no son iguales.


Vector3i operator %(right: Vector3i) 🔗

Obtiene el resto de cada componente del Vector3i con los componentes del Vector3i dado. Esta operación utiliza la división truncada, que a menudo no es deseada ya que no funciona bien con números negativos. Considera usar @GlobalScope.posmod() en su lugar si quieres manejar números negativos.

print(Vector3i(10, -20, 30) % Vector3i(7, 8, 9)) # Imprime (3, -4, 3)

Vector3i operator %(right: int) 🔗

Obtiene el resto de cada componente del Vector3i con el int dado. Esta operación utiliza la división truncada, que a menudo no es deseada ya que no funciona bien con números negativos. Considera usar @GlobalScope.posmod() en su lugar si quieres manejar números negativos.

print(Vector3i(10, -20, 30) % 7) # Imprime (3, -6, 2)

Vector3i operator *(right: Vector3i) 🔗

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

print(Vector3i(10, 20, 30) * Vector3i(3, 4, 5)) # Imprime (30, 80, 150)

Vector3 operator *(right: float) 🔗

Multiplica cada componente del Vector3i por el float dado. Devuelve un Vector3.

print(Vector3i(10, 15, 20) * 0.9) # Imprime (9.0, 13.5, 18.0)

Vector3i operator *(right: int) 🔗

Multiplica cada componente del Vector3i por el int dado.


Vector3i operator +(right: Vector3i) 🔗

Suma cada componente del Vector3i por los componentes del Vector3i dado.

print(Vector3i(10, 20, 30) + Vector3i(3, 4, 5)) # Imprime (13, 24, 35)

Vector3i operator -(right: Vector3i) 🔗

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

print(Vector3i(10, 20, 30) - Vector3i(3, 4, 5)) # Imprime (7, 16, 25)

Vector3i operator /(right: Vector3i) 🔗

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

print(Vector3i(10, 20, 30) / Vector3i(2, 5, 3)) # Imprime (5, 4, 10)

Vector3 operator /(right: float) 🔗

Divide cada componente del Vector3i por el float dado. Devuelve un Vector3.

print(Vector3i(10, 20, 30) / 2.9) # Imprime (5.0, 10.0, 15.0)

Vector3i operator /(right: int) 🔗

Divide cada componente de Vector3i por el int dado.


bool operator <(right: Vector3i) 🔗

Compara dos vectores Vector3i comprobando primero si el valor X del vector de la izquierda 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, y luego con los valores Z. Este operador es útil para ordenar vectores.


bool operator <=(right: Vector3i) 🔗

Compara dos vectores Vector3i comprobando primero si el valor X del vector de la izquierda 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, y luego con los valores Z. Este operador es útil para ordenar vectores.


bool operator ==(right: Vector3i) 🔗

Devuelve true si los vectores son iguales.


bool operator >(right: Vector3i) 🔗

Compara dos vectores Vector3i comprobando primero si el valor X del vector de la izquierda 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, y luego con los valores Z. Este operador es útil para ordenar vectores.


bool operator >=(right: Vector3i) 🔗

Compara dos vectores Vector3i comprobando primero si el valor X del vector de la izquierda 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, y luego con los valores Z. Este operador es útil para ordenar vectores.


int operator [](index: int) 🔗

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


Vector3i 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.


Vector3i operator unary-() 🔗

Devuelve el valor negativo del Vector3i. Esto es lo mismo que escribir Vector3i(-v.x, -v.y, -v.z). Esta operación invierte la dirección del vector manteniendo la misma magnitud.