Vector3i
Un vettore 3D che utilizza coordinate intere.
Descrizione
Una struttura a 3 elementi che può essere utilizzata per rappresentare coordinate di griglia 3D o qualsiasi altra tripletta di numeri interi.
Utilizza coordinate intere ed è quindi preferibile a Vector3 quando è necessaria una precisione esatta. Nota che i valori sono limitati a 32 bit e, a differenza di Vector3, questo non può essere configurato con un'opzione di build del motore. Utilizza int o PackedInt64Array se sono necessari valori a 64 bit.
Nota: In un contesto booleano, un Vector3i sarà valutato come false se è uguale a Vector3i(0, 0). Altrimenti, un Vector3i sarà sempre valutato come true.
Tutorial
Proprietà
|
||
|
||
|
Costruttori
Vector3i() |
|
Metodi
abs() const |
|
distance_squared_to(to: Vector3i) const |
|
distance_to(to: Vector3i) const |
|
length() const |
|
length_squared() const |
|
max_axis_index() const |
|
min_axis_index() const |
|
sign() const |
|
Operatori
operator !=(right: Vector3i) |
|
operator %(right: Vector3i) |
|
operator %(right: int) |
|
operator *(right: Vector3i) |
|
operator *(right: float) |
|
operator *(right: int) |
|
operator +(right: Vector3i) |
|
operator -(right: Vector3i) |
|
operator /(right: Vector3i) |
|
operator /(right: float) |
|
operator /(right: int) |
|
operator <(right: Vector3i) |
|
operator <=(right: Vector3i) |
|
operator ==(right: Vector3i) |
|
operator >(right: Vector3i) |
|
operator >=(right: Vector3i) |
|
operator [](index: int) |
|
Enumerazioni
enum Axis: 🔗
Axis AXIS_X = 0
Valore enumerato per l'asse X. Restituito da max_axis_index() e min_axis_index().
Axis AXIS_Y = 1
Valore enumerato per l'asse Y. Restituito da max_axis_index() e min_axis_index().
Axis AXIS_Z = 2
Valore enumerato per l'asse Z. Restituito da max_axis_index() e min_axis_index().
Costanti
ZERO = Vector3i(0, 0, 0) 🔗
Il vettore zero, un vettore con tutti i suoi componenti impostati su 0.
ONE = Vector3i(1, 1, 1) 🔗
Il vettore unitario, un vettore con tutti i suoi componenti impostati su 1.
MIN = Vector3i(-2147483648, -2147483648, -2147483648) 🔗
Il vettore minimo, un vettore con tutti i componenti uguali a INT32_MIN. Può essere utilizzato come equivalente negativo di Vector3.INF per gli interi.
MAX = Vector3i(2147483647, 2147483647, 2147483647) 🔗
Il vettore massimo, un vettore con tutti i componenti uguali a INT32_MAX. Può essere utilizzato come equivalente di Vector3.INF per gli interi.
LEFT = Vector3i(-1, 0, 0) 🔗
Il vettore unitario sinistro. Rappresenta la direzione locale di sinistra e la direzione globale dell'ovest.
RIGHT = Vector3i(1, 0, 0) 🔗
Il vettore unitario destro. Rappresenta la direzione locale di destra e la direzione globale dell'est.
UP = Vector3i(0, 1, 0) 🔗
Il vettore unitario verso l'alto.
DOWN = Vector3i(0, -1, 0) 🔗
Il vettore unitario verso il basso.
FORWARD = Vector3i(0, 0, -1) 🔗
Il vettore unitario anteriore. Rappresenta la direzione locale in avanti e la direzione globale del nord.
BACK = Vector3i(0, 0, 1) 🔗
Il vettore unitario posteriore. Rappresenta la direzione locale del retro e la direzione globale del sud.
Descrizioni delle proprietà
Il componente X del vettore. Accessibile anche tramite la posizione di indice [0].
Il componente Y del vettore. Accessibile anche tramite la posizione di indice [1].
Il componente Z del vettore. Accessibile anche tramite la posizione di indice [2].
Descrizioni dei costruttori
Costruisce un Vector3i predefinito con tutti i componenti impostati su 0.
Vector3i Vector3i(from: Vector3i)
Costruisce un Vector3i come copia del Vector3i specificato.
Vector3i Vector3i(from: Vector3)
Costruisce un nuovo Vector3i dal Vector3 fornito, troncando le parti frazionarie dei componenti (arrotondando verso zero). Per un comportamento diverso, considera di passare il risultato di Vector3.ceil(), Vector3.floor() o Vector3.round() a questo costruttore.
Vector3i Vector3i(x: int, y: int, z: int)
Restituisce un Vector3i con i componenti forniti.
Descrizioni dei metodi
Restituisce un nuovo vettore con tutti i componenti in valori assoluti (ovvero positivi).
Vector3i clamp(min: Vector3i, max: Vector3i) const 🔗
Restituisce un nuovo vettore con tutti i suoi componenti limitati tra i componenti di min e max, eseguendo @GlobalScope.clamp() su ciascun componente.
Vector3i clampi(min: int, max: int) const 🔗
Restituisce un nuovo vettore con tutti i suoi componenti limitati tra min e max, eseguendo @GlobalScope.clamp() su ciascun componente.
int distance_squared_to(to: Vector3i) const 🔗
Restituisce la distanza al quadrato tra questo vettore e to.
Questo metodo è più veloce di distance_to(), quindi è preferibile se è necessario confrontare vettori o se è necessaria la distanza al quadrato per una formula.
float distance_to(to: Vector3i) const 🔗
Restituisce la distanza tra questo vettore e to.
Restituisce la lunghezza (magnitudine) di questo vettore.
Restituisce la lunghezza (magnitudine) al quadrato di questo vettore.
Questo metodo è più veloce di length(), quindi è preferibile se è necessario confrontare vettori o se è necessaria la distanza al quadrato per una formula.
Vector3i max(with: Vector3i) const 🔗
Restituisce il massimo, componente per componente, di questo vettore e with, equivalente a Vector3i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z)).
Restituisce l'asse del valore più alto del vettore. Vedi le costanti AXIS_*. Se tutti i componenti sono uguali, questo metodo restituisce AXIS_X.
Vector3i maxi(with: int) const 🔗
Restituisce il massimo, componente per componente, di questo vettore e with, equivalente a Vector3i(maxi(x, with), maxi(y, with), maxi(z, with)).
Vector3i min(with: Vector3i) const 🔗
Restituisce il minimo, componente per componente, di questo vettore e with, equivalente a Vector3i(mini(x, with.x), mini(y, with.y), mini(z, with.z)).
Restituisce l'asse del valore più basso del vettore. Vedi le costanti AXIS_*. Se tutti i componenti sono uguali, questo metodo restituisce AXIS_Z.
Vector3i mini(with: int) const 🔗
Restituisce il minimo, componente per componente, di questo vettore e with, equivalente a Vector3i(mini(x, with), mini(y, with), mini(z, with)).
Restituisce un nuovo vettore con ogni componente impostato su 1 se è positivo, -1 se è negativo e 0 se è zero. Il risultato è identico alla chiamata di @GlobalScope.sign() su ogni componente.
Vector3i snapped(step: Vector3i) const 🔗
Restituisce un nuovo vettore con ogni componente arrotondato al multiplo più vicino del componente corrispondente in step.
Vector3i snappedi(step: int) const 🔗
Restituisce un nuovo vettore con ogni componente arrotondato al multiplo più vicino di step.
Descrizioni degli operatori
bool operator !=(right: Vector3i) 🔗
Restituisce true se i vettori non sono uguali.
Vector3i operator %(right: Vector3i) 🔗
Ottiene il resto di ogni componente di Vector3i con i componenti del Vector3i fornito. Questa operazione usa la divisione troncata, che spesso non è desiderata in quanto non funziona bene con i numeri negativi. Considera di usare @GlobalScope.posmod() se vuoi gestire i numeri negativi.
print(Vector3i(10, -20, 30) % Vector3i(7, 8, 9)) # Stampa (3, -4, 3)
Vector3i operator %(right: int) 🔗
Ottiene il resto di ogni componente di Vector3i con l'int fornito. Questa operazione usa la divisione troncata, che spesso non è desiderata in quanto non funziona bene con i numeri negativi. Considera di usare @GlobalScope.posmod() se vuoi gestire i numeri negativi.
print(Vector3i(10, -20, 30) % 7) # Stampa (3, -6, 2)
Vector3i operator *(right: Vector3i) 🔗
Moltiplica ogni componente del Vector3i per i componenti del Vector3i fornito.
print(Vector3i(10, 20, 30) * Vector3i(3, 4, 5)) # Stampa (30, 80, 150)
Vector3 operator *(right: float) 🔗
Moltiplica ogni componente del Vector3i per il float fornito. Restituisce un Vector3.
print(Vector3i(10, 15, 20) * 0.9) # Stampa (9.0, 13.5, 18.0)
Vector3i operator *(right: int) 🔗
Moltiplica ogni componente del Vector3i per l'int fornito.
Vector3i operator +(right: Vector3i) 🔗
Aggiunge ogni componente del Vector3i con i componenti del Vector3i fornito.
print(Vector3i(10, 20, 30) + Vector3i(3, 4, 5)) # Stampa (13, 24, 35)
Vector3i operator -(right: Vector3i) 🔗
Sottrae ogni componente del Vector3i dai componenti del Vector3i fornito.
print(Vector3i(10, 20, 30) - Vector3i(3, 4, 5)) # Stampa (7, 16, 25)
Vector3i operator /(right: Vector3i) 🔗
Divide ogni componente del Vector3i per i componenti del Vector3i fornito.
print(Vector3i(10, 20, 30) / Vector3i(2, 5, 3)) # Stampa (5, 4, 10)
Vector3 operator /(right: float) 🔗
Moltiplica ogni componente del Vector3i per il float fornito. Restituisce un Vector3.
print(Vector3i(10, 20, 30) / 2.9) # Stampa (5.0, 10.0, 15.0)
Vector3i operator /(right: int) 🔗
Divide ogni componente del Vector3i per l'int fornito.
bool operator <(right: Vector3i) 🔗
Confronta due vettori Vector3i verificando prima se il valore X del vettore di sinistra è minore del valore X del vettore right. Se i valori X sono esattamente uguali, ripete questa verifica con i valori Y dei due vettori e poi con i valori Z. Questo operatore è utile per ordinare i vettori.
bool operator <=(right: Vector3i) 🔗
Confronta due vettori Vector3i verificando prima se il valore X del vettore di sinistra è minore o uguale al valore X del vettore right. Se i valori X sono esattamente uguali, ripete questa verifica con i valori Y dei due vettori e poi con i valori Z. Questo operatore è utile per ordinare i vettori.
bool operator ==(right: Vector3i) 🔗
Restituisce true se i vettori sono uguali.
bool operator >(right: Vector3i) 🔗
Confronta due vettori Vector3i verificando prima se il valore X del vettore di sinistra è maggiore del valore X del vettore right. Se i valori X sono esattamente uguali, ripete questa verifica con i valori Y dei due vettori e poi con i valori Z. Questo operatore è utile per ordinare i vettori.
bool operator >=(right: Vector3i) 🔗
Confronta due vettori Vector3i verificando prima se il valore X del vettore di sinistra è maggiore o uguale al valore X del vettore right. Se i valori X sono esattamente uguali, ripete questa verifica con i valori Y dei due vettori e poi con i valori Z. Questo operatore è utile per ordinare i vettori.
Accede ai componenti del vettore attraverso il loro indice (index). v[0] è equivalente a v.x, v[1] è equivalente a v.y, e v[2] è equivalente a v.z.
Restituisce lo stesso valore come se + non ci fosse. Il + unario non fa nulla, ma a volte può rendere il tuo codice più leggibile.
Restituisce il valore negativo del Vector3i. Equivale a scrivere Vector3i(-v.x, -v.y, -v.z). Questa operazione inverte la direzione del vettore mantenendo la stessa magnitudine.