Cosa c'è di così diverso / complicato / utile nei vettori?


21

Perdonami se questa non è considerata una vera domanda, ma è qualcosa di cui sono sinceramente confuso.

Sento costantemente che altri sviluppatori di giochi parlano di come l'uso dei vettori sia molto utile, ma anche di come tutti siano intimiditi dalla matematica vettoriale e i vettori possano sembrare scoraggianti. Non ho mai avuto modo di conoscerli.

Quindi, finalmente ho guardato Vector su Wikipedia e sono rimasto sorpreso. A meno che non mi sbagli in qualche modo, un vettore (per semplicità, diciamo che è 2D), è solo una coordinata xey. Se ho frainteso, per favore correggimi.

Quindi, ecco la mia domanda: non significa che qualsiasi rappresentazione di coordinate bidimensionali o tridimensionali è un vettore? Se è così, allora un vettore e le coordinate sono la stessa cosa. Ed è praticamente impossibile creare un gioco senza usare le coordinate, quindi in che modo i vettori sono confusi o nuovi per qualcuno che ha svolto una certa quantità di programmazione di gioco?

Questo è qualcosa su cui potrei usare alcuni chiarimenti. Qualsiasi aiuto è apprezzato.


5
I vettori sono piuttosto semplici fino a quando non inizi a fare rotazioni in 3D ... quindi hai bisogno di quaternioni e quelli ti lasceranno a bocca aperta.
Alistair Buxton,

La nozione di vettore è davvero confusa. Ho chiesto in matematica, math.stackexchange.com/questions/429363 , math.stackexchange.com/questions/384927 ma non ho avuto una risposta chiara. È pura frustrazione. Può essere che puoi aggiungere ad esso.
Val

1
Con tutte le cattive analogie in queste risposte non c'è da meravigliarsi che le persone si confondano.
Alistair Buxton,

Risposte:


29

Non lasciare che un maggiore di matematica ti ascolti chiamando punti o coordinate di Vettori!

Un vettore 2D ha un componente xey , non coordinate. I vettori non definiscono una posizione, definiscono una direzione e una grandezza.

Non posso dirti perché le persone siano intimidite da loro, probabilmente lo stesso motivo per cui le persone sono intimidite dalla matematica in generale, perché tutti dicono che è difficile prima di sapere qualcosa al riguardo!

Vettori e coordinate non sono la stessa cosa. Sembrano simili, ma il modo in cui vengono utilizzati è molto diverso.

Le coordinate definiscono una posizione nel mondo. I vettori definiscono una direzione e una grandezza. I due sono spesso usati insieme. Come esempio:

Un personaggio ha una posizione e una velocità. La posizione è una coordinata e la velocità è un vettore. Aggiungendo la velocità alla posizione, il personaggio si sposterà nella direzione del vettore ad una distanza definita dalla grandezza del vettore (si noti che la grandezza del vettore è la velocità, quindi questo ci dà una direzione e una velocità).

O in questo esempio:

inserisci qui la descrizione dell'immagine

I due personaggi hanno posizioni e il colpo laser è un vettore. Un vettore tra le due posizioni è (3,1). Ciò significa che percorre +3 lungo l'asse X e +1 lungo l'asse Y. Dove la magnitudine può essere trovata con Sqrt ((X X) + (Y Y)).

Una buona panoramica della matematica vettoriale è disponibile sul blog Wolfire


7
Non sono solo i matematici che si arrabbiano quando qualcuno chiama un vettore un punto o una coordinata. Anche noi fisici rovineremo te.
TASagent,

2
+1 Ma se sto selezionando nit, la velocità è un vettore e la velocità è la grandezza di quel vettore.
Ergwun,

2
@Val: non direi che è una sciocchezza. Risolve il malinteso della domanda secondo cui i vettori sono solo coordinate X e Y. Rendere la risposta più formale o accurata menzionando "elementi dello spazio vettoriale" non farebbe nulla di buono, tranne aiutare a spiegare perché le persone trovano l'algebra vettoriale intimidatoria.
Marcks Thomas,

3
I vettori sono solo una posizione in cui ti dicono dove saresti se li applicassi a (0,0). I vettori possono modificare una posizione, ma non contengono informazioni sulla posizione in se stessi. Capisco quello che stai dicendo. Penso che la differenza di cui stiamo parlando non sia significativa per questa domanda. Questo è il modo in cui i vettori vengono utilizzati nello sviluppo del gioco. Grazie per il tuo contributo.
MichaelHouse

4
@Val: qualsiasi buona lezione di algebra lineare concorderà con Byte56: i vettori non sono gli stessi delle posizioni nello spazio . Ha senso aggiungere "3 miglia a nord e 1 miglio a est" a "1 miglio a sud"; ma non ha senso aggiungere "la posizione della Casa Bianca" a "la posizione del Pentagono". Una volta fissato il punto di riferimento come (0,0), è possibile utilizzare i vettori per determinare i punti e viceversa, quindi in alcune rappresentazioni sembrano simili; ma sono diversi. Astrattamente: confronta affine spazio vs. spazio vettoriale .
PLL

9

Penso che il fattore di intimidazione possa sorgere quando inizi a gestire operazioni più complicate come la normalizzazione, i prodotti punto e croce e usi sistemi di coordinate multipli con matrici per trasformarti tra di loro. All'inizio non sono necessariamente facili da capire, anche se hai una forte geometria e uno sfondo di algebra.

Inoltre, almeno negli Stati Uniti, le persone che hanno attraversato la tipica sequenza matematica del liceo sono abituate a pensare alla geometria in termini di linee, pendenze, angoli, ecc. Devono disimparare queste cose in una certa misura e imparare a pensaci invece in termini di vettori e matrici. Non è che i concetti di algebra lineare siano così estesi, ma che sono un insieme di concetti un po 'diversi da quelli usati nella geometria classica, che le persone hanno probabilmente imparato a scuola.


A proposito, la distinzione tra vettori e punti sta nelle operazioni che è possibile eseguire su di essi. Sebbene entrambi siano rappresentati (in un particolare sistema di coordinate) da un elenco di componenti e quindi siano "uguali", le operazioni consentite non sono le stesse. Ad esempio, è possibile aggiungere due vettori o moltiplicare un vettore per uno scalare. Non puoi farlo con i punti - o almeno, non ha senso farlo. Ma puoi sottrarre due punti e il risultato è un vettore da un punto all'altro. Puoi anche aggiungere un punto a un vettore per ottenere un nuovo punto.

Anche punti e vettori si comportano diversamente rispetto alle trasformazioni. Vale a dire, i punti sono soggetti a traduzione, mentre i vettori no. Considera l'esempio di un oggetto che si muove con una posizione (punto) e una velocità (vettore); se traduci l'oggetto in un posto diverso, ne modifichi la posizione, ma non la sua velocità.

In effetti, promuovendo questa linea di ragionamento, non ci sono solo vettori; ci sono altre entità come covector e bivector , che possono anche "sembrare" un vettore in termini di avere un elenco di componenti in un sistema di coordinate, ma che si comportano diversamente in termini di operazioni disponibili e del modo in cui reagiscono alle trasformazioni. Questi appartengono tutti a un campo matematico chiamato algebra di Grassmann . Oltre a ciò, si può essere ancora più generali e considerare l' algebra tensoriale . Questa è roba avanzata però.


1
Gran parte della mia confusione era il motivo per cui la gente pensava che i vettori fossero così complicati, quindi questo ha aiutato. Forse li trovo semplici perché in realtà stavo usando la geometria nella programmazione prima di prendere la geometria del liceo.
Starscape

1
L'esempio di posizione vs velocità utilizzato in un paio di risposte si interrompe quando si hanno posizione (punto), velocità (vettore) e accelerazione (vettore). Se si modifica la velocità, l'accelerazione non cambia, tuttavia sono entrambi vettori. La distinzione tra vettore e punto, sebbene corretta, è una distrazione - in pratica tutti i giochi memorizzano le posizioni come vettori che sono implicitamente relativi all'origine (forse indirettamente se si utilizza un grafico di scena).
Alistair Buxton,

1
@AlistairBuxton Non seguo il tuo punto: se traduci il tuo sistema di coordinate, né la velocità di un oggetto né l'accelerazione cambiano, ma se ruoti le coordinate, allora sia la velocità che l'accelerazione verrebbero ruotate. Quindi non vedo dove qualcosa "si rompe".
Nathan Reed,

2
@AlistairBuxton E non esiste "posizioni nei negozi come vettori". I giochi memorizzano sia le posizioni che i vettori come elenchi di componenti scalari in un particolare sistema di coordinate. Questo non li rende la stessa cosa. Per fare un'analogia: ints e float sono entrambi memorizzati come un elenco di bit binari, ma significano cose diverse e hanno operazioni diverse.
Nathan Reed,

1
@Val Sei completamente fuori base. Un vettore non è [posizione-p, velocità-v]. Non ha né un punto né una velocità al suo interno. È solo [velocità-x, velocità-y, velocità-z] (per un vettore di velocità). Il punto è che questo è un tipo diverso di cose da [posizione x, posizione y, posizione z].
Nathan Reed,

7

I vettori non sono poi così male. C'è solo un po 'di matematica con cui le persone non hanno familiarità.

Innanzitutto, un vettore non rappresenta una posizione nello spazio. Questo è concettualmente molto importante. Un vettore rappresenta una direzione, come "Nord" e una magnitudine. Su una mappa con normali coordinate XY matematiche, "Nord" sarebbe il vettore (0,1) (in alto sull'asse Y). Questo non deve essere confuso con la posizione (0,1), che è un'unità sopra ogni punto in cui metti l'origine. Un vettore è una direzione e una grandezza .

Lo spostamento (movimento) è un vettore (come spostare due unità in alto e un'unità a destra), Posizione no.

I vettori, di per sé, non sono ciò con cui le persone hanno problemi. Di solito sono matrici e operazioni sui vettori.

Ad esempio, se moltiplichi un vettore per matrice speciale chiamata "matrice di rotazione", il vettore viene ruotato per la quantità specificata dalla matrice. Inoltre, alcune persone hanno problemi con la moltiplicazione Matrix. Cerca se non hai familiarità con esso.

Inoltre, puoi "impilare" queste matrici (o operazioni) insieme. Come Ruota di 90 gradi attorno all'asse X, quindi Ruota di 90 gradi attorno all'asse Y. Se chiamiamo la prima matrice M e la seconda matrice N, l'operazione sarebbe v * M * N. Tuttavia, la moltiplicazione Matrix non è commutativa, quindi non è la stessa di v * N * M.

Nella programmazione grafica, si eseguono operazioni considerevolmente più complicate su vettori e altre matrici regolarmente. Trasformazioni per FoV e per mettere le tue coordinate nello spazio dello schermo, ecc. Non è poi così male, ma può essere intimidatorio per le nuove persone.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.