Cosa sono i vettori?
I vettori sono insiemi di coordinate di diversa dimensione. Ogni coordinata in un vettore rappresenta una posizione assoluta in quella direzione dello spazio in cui si trova il vettore.
- Un vettore 1-D sarebbe {1} . Potrebbe essere, ad esempio, una posizione in X = 1. O un tempo t = 1.
- Un vettore 2D sarebbe {-4,3} . Questa potrebbe essere, ad esempio, una posizione a -4 sull'asse X e 3 sull'asse Y. Potrebbe anche essere la temperatura (3 gradi) in una posizione (-4 metri) all'asse X.
- Un vettore 3-D sarebbe {1,2,3} . Questa potrebbe essere una posizione nello spazio 1 lungo l'asse X, 2 indietro sull'asse Y e 3 in alto sull'asse Z. Oppure potrebbe essere 1 rosso, 2 verde e 3 blu in un colore. Oppure, potrebbe essere una posizione XY ( {1,2} ) in qualche momento T ( {3} ).
Si noti che in tutti i casi, abbiamo assegnato un significato ai vettori per il nostro problema. Mentre troverai comunemente vettori utilizzati per la geometria nei giochi, non c'è motivo per cui non puoi fare qualcos'altro con loro.
Perché uso i vettori?
In primo luogo, non si deve usare vettori. Fintanto che stai tenendo traccia di xey, o di qualsiasi coordinata ti interessi, in qualche modo stai bene.
Tuttavia, il vantaggio di usare i vettori è che rappresentano ordinatamente cose come direzione e posizione, e hanno anche diverse operazioni matematiche definite che rendono la vita più semplice.
Per un semplice esempio di questi, considera il prodotto punto .
Supponiamo di avere un sistema radar in un gioco in stile top-down. Ogni nemico che appare nel settore del radar (un cuneo a forma di torta in 2D) dovrebbe ottenere un piccolo punto rosso sullo schermo. Quindi, devi capire quali sono i nemici nella tua sezione radar.
Potresti verificare se i nemici si trovano all'interno di un triangolo. Potresti anche verificare se i nemici sono contenuti nell'intersezione dei due semispazi degli aerei / linee che definiscono i due lati del settore radar.
Oppure, potresti semplicemente usare un prodotto punto per fare il controllo. Ecco come:
- Crea un vettore che va dal centro del radar verso la "parte anteriore del radar". Normalizzalo.
- Crea un vettore che va dal centro del radar verso l'oggetto di cui vogliamo controllare la visibilità. Normalizzalo.
- Prendi il prodotto punto dei due vettori normalizzati.
- Prendi l'arccosina di quel prodotto e controlla se è inferiore alla metà dell'angolo della larghezza del radar. Se lo è, disegna un blip.
Questo è molto utile e ora ti consente anche di avere radar che puntano in direzioni diverse (basta cambiare il vettore in avanti) e hanno larghezze diverse (basta cambiare l'angolo di larghezza del radar) - e puoi riutilizzare lo stesso codice anche per quei casi !
Perché altrimenti uso i vettori?
Se sei in 2D, forse il modo migliore per ottenere effetti e movimenti complessi (rotazione, ridimensionamento, ecc.) È usare un grafico di scena. Un pianeta ha una nave in orbita, la nave ha un drone in orbita. Il calcolo per questo senza usare la matematica vettoriale è davvero, davvero brutto.
Con la matematica vettoriale, rappresentiamo ognuno con un punto e una matrice di trasformazione 3x3. Il pianeta usa la sua trasformazione, la nave usa la sua trasformazione e la trasformazione del pianeta, e il drone usa la sua trasformazione e la trasformazione della nave e la trasformazione del pianeta.
Quando il pianeta si muove, si cambia la sua trasformazione e la nave e il drone vengono automaticamente posizionati "gratuitamente". Codice molto più pulito.
Ancora non convinto.
I vettori sono anche la rappresentazione nativa di posizione, geometria e movimento utilizzati da quasi tutte le librerie grafiche - e certamente OpenGL e DirectX. Non è probabile che tu riesca a fuggire senza doverli usare.
Conclusioni I
vettori sono un potente strumento per scrivere codice chiaro che risolve i problemi geometrici in modo pulito ed elegante.