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.
la source
Réponses:
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:
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
la source
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.
la source
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.
la source