Qu'est-ce qui est si différent / compliqué / utile dans les vecteurs?

21

Pardonnez-moi si ce n'est pas considéré comme une vraie question, mais c'est quelque chose qui me dérange vraiment.

J'entends constamment d'autres développeurs de jeux parler de la façon dont l'utilisation des vecteurs est très utile, mais aussi comment tout le monde est intimidé par les mathématiques vectorielles et les vecteurs peuvent sembler intimidants. Je n'ai jamais eu le temps d'en apprendre sur eux.

Donc, finalement j'ai regardé Vector sur Wikipédia, et j'ai été surpris. Sauf erreur de ma part, un vecteur (par souci de simplicité, disons que c'est 2D), n'est qu'une coordonnée x et y. Si j'ai mal compris, veuillez me corriger.

Voici donc ma question: cela ne signifie-t-il pas que toute représentation de coordonnées bidimensionnelles (ou tridimensionnelles) est un vecteur? Si oui, alors les vecteurs et les coordonnées sont la même chose. Et il est à peu près impossible de créer un jeu sans utiliser de coordonnées, alors comment les vecteurs sont-ils déroutants ou nouveaux pour quelqu'un qui a fait une certaine programmation de jeu?

C'est une chose sur laquelle je pourrais apporter quelques éclaircissements. Toute aide est appréciée.

paysage étoilé
la source
5
Les vecteurs sont assez simples jusqu'à ce que vous commenciez à faire des rotations en 3D ... alors vous avez besoin de quaternions et ceux-ci vous épateront.
Alistair Buxton
La notion de vecteur est vraiment déroutante. J'ai demandé dans math, math.stackexchange.com/questions/429363 , math.stackexchange.com/questions/384927 mais je n'ai eu aucune réponse claire. C'est une pure frustration. Peut-être que vous pouvez y ajouter.
Val
1
Avec toutes les mauvaises analogies dans ces réponses, il n'est pas étonnant que les gens soient confus.
Alistair Buxton

Réponses:

29

Ne laissez pas une majeure en mathématiques vous entendre appeler des points ou des coordonnées de vecteurs!

Un vecteur 2D a une composante x et y , pas une coordonnée. Les vecteurs ne définissent pas une position, ils définissent une direction et une grandeur.

Je ne peux pas vous dire pourquoi les gens sont intimidés par eux, probablement la même raison pour laquelle les gens sont intimidés par les mathématiques en général, parce que tout le monde dit que c'est difficile avant d'en savoir quelque chose!

Les vecteurs et les coordonnées ne sont pas la même chose. Ils se ressemblent, mais leur utilisation est très différente.

Les coordonnées définissent une position dans le monde. Les vecteurs définissent une direction et une amplitude. Les deux sont souvent utilisés ensemble. Par exemple:

Un personnage a une position et une vitesse. La position est une coordonnée et la vitesse est un vecteur. L'ajout de la vitesse à la position déplacera le personnage dans la direction du vecteur à une distance définie par la magnitude du vecteur (notez que la magnitude du vecteur est la vitesse, donc cela nous donne une direction et une vitesse).

Ou dans cet exemple:

entrez la description de l'image ici

Les deux personnages ont des positions et le tir laser est un vecteur. Un vecteur entre les deux positions est (3,1). Cela signifie qu'il se déplace +3 le long de l'axe X et +1 le long de l'axe Y. Où la magnitude peut être trouvée avec Sqrt ((X X) + (Y Y)).

Un bon aperçu des mathématiques vectorielles peut être trouvé sur le blog Wolfire

MichaelHouse
la source
7
Ce ne sont pas seulement les mathématiciens qui s'énervent quand quelqu'un appelle un vecteur un point ou une coordonnée. Nous, physiciens, vous gâcherons aussi.
TASagent
2
+1 Mais si je fais de la cueillette, la vitesse est un vecteur et la vitesse est la grandeur de ce vecteur.
Ergwun
2
@Val: Je ne dirais pas que c'est un non-sens. Il répond à l'idée fausse de la question selon laquelle les vecteurs ne sont que des coordonnées x et y. Rendre la réponse plus formelle ou précise en mentionnant des «éléments de l'espace vectoriel» ne ferait de bien à personne, sauf pour expliquer pourquoi les gens trouvent l'algèbre vectorielle intimidante.
Marcks Thomas
3
Les vecteurs ne sont qu'une position dans la mesure où ils vous indiquent où vous seriez si vous les appliquiez à (0,0). Les vecteurs peuvent modifier une position, mais ne contiennent pas d'informations de position en eux-mêmes. Je comprends ce que vous dites. Je pense que la différence dont nous parlons n'est pas importante pour cette question. C'est ainsi que les vecteurs sont utilisés dans le développement de jeux. Merci pour votre contribution.
MichaelHouse
4
@Val: toute bonne leçon d'algèbre linéaire sera d'accord avec Byte56: les vecteurs ne sont pas les mêmes que les positions dans l'espace . Il est logique d'ajouter «3 milles au nord et 1 mille à l'est» à «1 mille au sud»; mais cela n'a pas de sens d'ajouter "la position de la Maison Blanche" à "la position du Pentagone". Une fois que vous fixez le point de référence à (0,0), vous pouvez utiliser des vecteurs pour déterminer les points, et vice versa, donc dans certaines représentations, ils se ressemblent; mais ils sont différents. Abstraitement: comparer l' espace affines par rapport à l' espace vectoriel .
PLL
9

Je pense que le facteur d'intimidation peut survenir lorsque vous commencez à traiter des opérations plus complexes telles que la normalisation, les produits scalaires et croisés et l'utilisation de plusieurs systèmes de coordonnées avec des matrices pour les transformer. Ceux-ci ne sont pas nécessairement faciles à comprendre au premier abord, même si vous avez une solide géométrie et un fond d'algèbre.

De plus, au moins aux États-Unis, les gens qui ont suivi la séquence mathématique typique du secondaire sont habitués à penser à la géométrie en termes de lignes, de pentes, d'angles, etc. Ils doivent désapprendre ce genre de choses dans une certaine mesure et apprendre à pensez plutôt en termes de vecteurs et de matrices. Ce n'est pas que les concepts d'algèbre linéaire soient si étendus, mais qu'il s'agit d'un ensemble de concepts quelque peu différent de ceux utilisés en géométrie classique, que les gens ont probablement appris à l'école.


BTW, la distinction entre les vecteurs et les points réside dans les opérations que vous pouvez effectuer sur eux. Bien que les deux soient représentés (dans un système de coordonnées particulier) par une liste de composants, et qu'ils paraissent donc "identiques", les opérations autorisées ne sont pas les mêmes. Par exemple, vous pouvez ajouter deux vecteurs ou multiplier un vecteur par un scalaire. Vous ne pouvez pas faire cela avec des points - ou du moins, cela n'a aucun sens de le faire. Mais vous pouvez soustraire deux points, et le résultat est un vecteur d'un point à l'autre. Vous pouvez également ajouter un point à un vecteur pour obtenir un nouveau point.

Les points et les vecteurs se comportent également différemment en ce qui concerne les transformations. A savoir, les points sont sujets à traduction, tandis que les vecteurs ne le sont pas. Prenons l'exemple d'un objet se déplaçant avec une position (point) et une vitesse (vecteur); si vous déplacez l'objet vers un autre endroit, vous modifiez sa position, mais pas sa vitesse.

En fait, pour approfondir ce raisonnement, il n'y a pas que des vecteurs; il existe d'autres entités comme les covecteurs et les bivecteurs , qui peuvent également "ressembler" à un vecteur en termes d'avoir une liste de composants dans un système de coordonnées, mais qui se comportent différemment en termes d'opérations disponibles et de la façon dont ils réagissent aux transformations. Tout cela appartient à un domaine mathématique appelé l' algèbre de Grassmann . Au-delà, on peut être encore plus général et considérer l' algèbre tensorielle . Ce sont des choses avancées cependant.

Nathan Reed
la source
1
Une grande partie de ma confusion était pourquoi les gens pensaient que les vecteurs étaient si compliqués, donc cela a aidé. Peut-être que je les trouve simples parce que j'utilisais en fait la géométrie dans la programmation avant de prendre le lycée.
starscape
1
L'exemple position / vitesse utilisé dans quelques réponses se décompose lorsque vous avez position (point), vitesse (vecteur) et accélération (vecteur). Si vous modifiez la vitesse, l'accélération ne change pas, mais ce sont tous les deux des vecteurs. La distinction entre le vecteur et le point, bien que correcte, est une distraction - en pratique, tous les jeux stockent les positions comme des vecteurs qui sont implicitement relatifs à l'origine (peut-être indirectement si vous utilisez un graphique de scène).
Alistair Buxton
1
@AlistairBuxton Je ne suis pas sur votre point - si vous traduisez votre système de coordonnées, ni la vitesse d'un objet ni l'accélération ne changent, mais si vous faites pivoter les coordonnées, alors la vitesse et l'accélération seront toutes deux tournées. Je ne vois donc pas où quelque chose "tombe en panne".
Nathan Reed
2
@AlistairBuxton Et il n'y a rien de tel que "stocker des positions comme vecteurs". Les jeux stockent les positions et les vecteurs sous forme de listes de composants scalaires dans un système de coordonnées particulier. Cela ne fait pas d'eux la même chose. Pour faire une analogie: les entiers et les flottants sont tous deux stockés sous forme de liste de bits binaires, mais signifient différentes choses et ont des opérations différentes.
Nathan Reed
1
@Val Vous êtes complètement hors de la base. Un vecteur n'est pas [position p, vitesse v]. Il n'a ni point ni vitesse à l'intérieur. C'est juste [vitesse x, vitesse y, vitesse z] (pour un vecteur vitesse). Le fait est que c'est un type de chose différent de [position x, position y, position z].
Nathan Reed
7

Les vecteurs ne sont vraiment pas si mauvais. Il y a juste un peu de mathématiques que les gens ne connaissent pas.

Tout d'abord, un vecteur ne représente pas une position dans l'espace. Ceci est conceptuellement très important. Un vecteur représente une direction, comme «Nord», et une magnitude. Sur une carte avec des coordonnées Math XY normales, «Nord» serait le vecteur (0,1) (en haut sur l'axe Y). Cela ne doit pas être confondu avec la position (0,1), qui est une unité au-dessus de l'endroit où vous mettez l'origine. Un vecteur est une direction et une grandeur .

Le déplacement (mouvement) est un vecteur (comme déplacer deux unités vers le haut et une unité vers la droite), la position ne l'est pas.

Les vecteurs, en soi, ne sont pas ce avec quoi les gens ont un problème. Ce sont généralement des matrices et des opérations sur des vecteurs.

Par exemple, si vous multipliez un vecteur par une matrice spéciale appelée «matrice de rotation», le vecteur pivote de la quantité spécifiée par la matrice. De plus, certaines personnes ont des problèmes avec la multiplication matricielle. Cherchez-le si vous ne le connaissez pas.

De plus, vous pouvez «empiler» ces matrices (ou opérations) ensemble. Comme Rotation à 90 degrés autour de l'axe X, puis Rotation à 90 degrés autour de l'axe Y. Si nous appelons la première matrice M et la seconde matrice N, alors l'opération serait v * M * N. Cependant, la multiplication matricielle n'est pas commutative, ce qui n'est pas la même chose que v * N * M.

En programmation graphique, vous effectuez régulièrement des opérations beaucoup plus compliquées sur les vecteurs et autres matrices. Transformations pour FoV et pour mettre vos coordonnées dans l'espace d'écran, etc. Ce n'est vraiment pas si mal, mais cela peut être intimidant pour de nouvelles personnes.

TASagent
la source