[DirectX] Les vecteurs 4D

Le côté programmation du développement d'un jeu vidéo.

Les vecteurs 4D

Messagepar Filmaker » 29 Déc 2005, 16:29

Salut !
J'ai lu que les API DirectX fournissaient des classes complètes pour créer,et/ou manipuler des vecteurs 2D, 3D, et même 4D !:00000020:

Heu à quoi ressemble un vecteur 4D ? A quoi sert-il ?
Avatar de l’utilisateur
Filmaker
Hello World, I'm new !
 
Messages: 3
Inscription: 30 Sep 2005, 22:24

Messagepar listorien » 29 Déc 2005, 18:24

Je crois que Vecteur 4D = quaternion. Ca sert pour mémoriser les rotations d'un objet 3D.
Les quaternions sont utilisés dans le format 3DS pour stocker les keyframes de rotations.
Avatar de l’utilisateur
listorien
Hello World, I'm new !
 
Messages: 1206
Inscription: 17 Juin 2005, 14:04
Localisation: Le Pecq

Messagepar kratolp » 30 Déc 2005, 11:50

Quaternion c'est plutot en relation avec les matrices.
Un vector4D c'est comme un vector3D mais avec une composante w en plus pour l'homogeneité. Notamment pour les calculs avec les matrices 4D qui permettent de contenir toutes les informations de transformation.
kratolp
Hello World, I'm new !
 
Messages: 146
Inscription: 14 Juil 2005, 23:57

Messagepar listorien » 30 Déc 2005, 12:54

Avatar de l’utilisateur
listorien
Hello World, I'm new !
 
Messages: 1206
Inscription: 17 Juin 2005, 14:04
Localisation: Le Pecq

vecteur 4d pour bmatrice 4D

Messagepar PsyClown » 01 Jan 2006, 19:09

En, fait quand on fait de la conception 3D, on utilse en generale des matrice pour realiser toutes les opérations que ce soit des rotations ou des translations. Le probleme est que quand on utilise des matrice 3x3 les rotations se font par des multiplications de matrice alors que les translations ce font par l'ajout d'un vecteur.

En general les programmeur aiment bien utiliser la meme opération pour faire des rotations et des translations. C'est pour cela que dans les plus part des API de conception 3D ( comme directx par exemple ) , le monde 3D est representé par des matrice 4x4 et non 3x3 en effet avec des matrices 4x4 on peut faire des translation en multipliant des matrices. Du coup toutes les transformations peuvent etre ecrite sous forme de matrice et les toutes les transformations sont des multiplications de matrice .

c'est donc pour cela que le type vector4D existe en directX, mais sache que tu n'est pas obligé de l'utilisé directement. en effet les fonctions de base de directX prennent en general 3 parametre et crée elle meme la matrice de transformation.

PS : voir le sdk directX pour plus d'information.
Desolé pour l'othographe .
PsyClown
Hello World, I'm new !
 
Messages: 3
Inscription: 01 Jan 2006, 19:00

Messagepar IronRaph » 02 Jan 2006, 21:48

Pour conclure avec la très bonne explication de PsyClown il te faut des Vector4D pour des raisons d'homogénéité.

Si tu fais une matrice4x4 * vecteur3d c'est mathématique impossible car il te manque une composante à ton vecteur 3d c'est pour ça que l'on utilise des vecteur 4D avec la dernière composante w = 1.

De cette façon si tu fais matrice4 * vecteur4 tu as un vecteur 4 mais tu ne t'occupe que des 3 premières composantes.

De toute façon en utilisation classique la dernière composante de ton vecteur 4D ferait toujours 1.

Tu peux jouer avec les vecteur 4D si tu veux par exemple multiplier une matrice 4D par un vecteur 4D mais que tu veux ne pas tenir compte des transalation de ton repère (stocké dans ta matrice 4D) tu fous la composante w de ton vecteur 4D à 0 et hop là ;)

Si tu défini w = 2 tu appliquera 2 fois la translation pour chaque composante x y et z de ton vecteur...
IronRaph
Hello World, I'm new !
 
Messages: 67
Inscription: 20 Juil 2005, 10:34

Messagepar RaphAstro » 05 Jan 2006, 17:37

il y a dans la pratique 2 valeurs de w qui sont utilisé.

- 0 : projection à l'infini (décor de fond)
- 1 : les autres objets
RaphAstro
Hello World, I'm new !
 
Messages: 31
Inscription: 12 Sep 2005, 21:23


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 invités

cron