Quels sont les vecteurs?
Les vecteurs sont des ensembles de coordonnées de dimensions variables. Chaque coordonnée dans un vecteur représente une position absolue dans cette direction de l'espace dans lequel se trouve le vecteur.
- Un vecteur 1-D serait {1} . Cela pourrait être, par exemple, une position à X = 1. Ou un temps t = 1.
- Un vecteur 2D serait {-4,3} . Cela pourrait être, par exemple, une position à -4 sur l'axe X et 3 sur l'axe Y. Il pourrait également s'agir de la température (3 degrés) à une position (-4 mètres) en arrière sur l'axe X.
- Un vecteur 3-D serait {1,2,3} . Cela pourrait être une position dans l'espace 1 le long de l'axe X, 2 en arrière sur l'axe Y et 3 en haut sur l'axe Z. Ou cela peut être 1 rouge, 2 verts et 3 bleus dans une couleur. Ou, il pourrait s'agir d'une position XY ( {1,2} ) à un moment T ( {3} ).
Notez que dans tous les cas, nous avons attribué une signification aux vecteurs pour notre problème. Bien que vous trouverez généralement des vecteurs utilisés pour la géométrie dans les jeux, il n'y a aucune raison que vous ne puissiez pas faire autre chose avec eux.
Pourquoi dois-je utiliser des vecteurs?
Tout d' abord, vous ne devez utiliser des vecteurs. Tant que vous gardez une trace de x et y, ou de toutes les coordonnées qui vous intéressent, d'une certaine manière, tout va bien.
Cependant, l'avantage d'utiliser des vecteurs est qu'ils représentent parfaitement des choses telles que la direction et la position, et ont également défini plusieurs opérations mathématiques qui vous facilitent la vie.
Pour un exemple simple de ceux-ci, considérons le produit scalaire .
Supposons que vous ayez un système radar dans un jeu de style descendant. Chaque ennemi qui apparaît dans le secteur du radar (un coin en forme de tarte en 2D) devrait avoir un petit point rouge sur votre écran. Donc, vous devez déterminer quels ennemis se trouvent dans votre section radar.
Vous pouvez tester si les ennemis sont à l'intérieur d'un triangle. Vous pouvez également tester si les ennemis sont contenus dans l'intersection des deux demi-espaces des plans / lignes définissant les deux côtés du secteur radar.
Ou, vous pouvez simplement utiliser un produit scalaire pour effectuer la vérification. Voici comment:
- Créez un vecteur allant du centre du radar vers "l'avant du radar". Normalisez-le.
- Créez un vecteur allant du centre du radar vers l'objet dont nous voulons vérifier la visibilité radar. Normalisez-le.
- Prenez le produit scalaire des deux vecteurs normalisés.
- Prenez l'arc cosinus de ce produit et vérifiez s'il est inférieur à la moitié de l'angle de la largeur du radar. Si c'est le cas, dessinez un blip.
Ceci est très pratique et vous permet également d'avoir des radars qui pointent dans différentes directions (changez simplement le vecteur avant) et ont des largeurs différentes (changez simplement l'angle de largeur du radar) - et vous pouvez également réutiliser le même code pour ces cas !
Sinon, pourquoi utiliser des vecteurs?
Si vous êtes en 2D, le meilleur moyen d'obtenir des effets et des mouvements complexes (rotation, mise à l'échelle, etc.) est peut-être d'utiliser un graphique de scène. Une planète a un navire en orbite, le navire a un drone en orbite. Le calcul pour cela sans utiliser les mathématiques vectorielles est vraiment, vraiment moche.
Avec les mathématiques vectorielles, nous représentons chacun comme ayant un point et une matrice de transformation 3x3. La planète utilise sa transformation, le navire utilise sa transformation et la transformation de la planète, et le drone utilise sa transformation et la transformation du navire et la transformation de la planète.
Lorsque la planète bouge, vous changez sa transformation et le vaisseau et le drone se positionnent automatiquement "gratuitement". Code beaucoup plus propre.
Toujours pas convaincu.
Les vecteurs sont également la représentation native de la position, de la géométrie et du mouvement utilisée par presque toutes les bibliothèques graphiques - et certainement OpenGL et DirectX. Vous ne risquez pas de vous échapper sans avoir à les utiliser.
Conclusion
Les vecteurs sont un outil puissant pour écrire du code clair qui résout les problèmes géométriques de manière propre et élégante.