Tutoriel: utilisation des matrices de rotations dans l'espace.

Soyez le premier à donner votre avis sur cette source.

Vue 11 274 fois - Téléchargée 1 245 fois


Description

Suite au post de Top30, il m'est venu à l'idée de vous montrer ce que l'on peut faire rapidement à l'aide de fonctions mathématiques et notamment les matrices de rotations usuelles dans l'espace.

Je vais pas rentrer trop dans le sujet mais ces matrices permettent de déplacer un point en rotation dans l'espace selon un axe donnée en fonction d'un angle.
Dans l'espace, trois rotations sont possibles donc 3 matrices. Ces matrices sont de dimension 3*3.
Pour retrouver les nouvelles coordonnées d'un point en fonction d'un angle , il suffit de multiplier les anciennes coordonnées[x,y,z] par la matrice de rotation.
Attention le produit de 2 matrices n'a rien à voir avec le produit de deux nombres. Je vous incite à retourner dans vos bouquins de maths pour retrouver la technique.

Maintenant faites tourner plusieurs points, reliés les par des segments, vous obtiendrez des formes géométriques en rotation suivant l'axe de votre choix.

Source / Exemple :


rx[1][1]=1;	rx[1][2]=0;	     rx[1][3]=0; 
rx[2][1]=0;	rx[2][2]=Math.cos(wx);    rx[2][3]=-Math.sin(wx); 
rx[3][1]=0;	rx[3][2]=Math.sin(wx);     rx[3][3]=Math.cos(wx); 

/***** ceci est la matrice générale 
pour une rotation d'angle "wy" autour de l'axe des y

          • /
ry[1][1]=Math.cos(wy); ry[1][2]=0; ry[1][3]=-Math.sin(wy); ry[2][1]=0; ry[2][2]=1; ry[2][3]=0; ry[3][1]=Math.sin(wy); ry[3][2]=0; ry[3][3]=Math.cos(wy); /***** ceci est la matrice générale pour une rotation d'angle "wz" autour de l'axe des z
          • /
rz[1][1]=Math.cos(wz); rz[1][2]=-Math.sin(wz); rz[1][3]=0; rz[2][1]=Math.sin(wz); rz[2][2]=Math.cos(wz); rz[2][3]=0; rz[3][1]=0; rz[3][2]=0; rz[3][3]=1;

Conclusion :


Remarque pour la source de Top30, en faisant :
._x = (distance * Math.cos (angle * Math.PI / 180))
._y = (distance * Math.sin (angle * Math.PI / 180))

Il a simplement sans le savoir exprimé le résultat du produit de la matrice de rotation en 2d suivant l'axe z (de dimension 2*2: dans le plan xy) avec les coordonnées de départ.

Effectivement dans l'espace, ces matrices se compliquent (voir ci-dessus) mais peuvent être rapidement retrouvées avec un minimum de connaissances en maths. Elles sont la de toute manière. Utilisez les à votre gré.

Tout ceci est de la théorie, en pratique c'est plus compréhensible.

Je suis à votre disposition pour toute remarque et informations

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Horfee
Messages postés
188
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
10 août 2009
-
bon vu les dates des post j'arrive un peu tard...
Petit commentaire tout de meme : a chaque fois tu effectue 2 fois le calcul du cosinus de chaque angle et 2 fois celui du sinus. C'est pas trop optimisé ! Vaut mieux les stocker (cos et sin sont tres couteux en machine). Ensuite une autre petite optimisation possible, regarder si 2 angles sont egaux, ca peut eviter parfois de refaire tous les calculs...
cs_peewee
Messages postés
6
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
12 octobre 2003
-
pas mal du tout .
mais tres bonne suggetion de creer un moteur 3d pour clips . ce serait vraiment tres intéressant .

si qqun en connais un , il peut me faire signe . ce serait vraiment sympa .

sinon , je cherche avec les autres .
peewee
afad
Messages postés
715
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
10 septembre 2009
-
Yep wolfood, je l'avais récuperé il ya un bail cette source, son auteur s'appelle Damien de http://mxprototypes.free.fr/, je lui ai demandé son accord pour l'utilisation de cette source qui représente très bien ce concept mathématique.

C'etait d'ailleurs le principe de cette source, présenter et expliquer un concept plus qu'une source en elle même. Ce genre de source flashkit .com en regorge par millier mais en comprendre le contenu, c'est autre chose.

A+
afad
poof65
Messages postés
89
Date d'inscription
samedi 19 avril 2003
Statut
Membre
Dernière intervention
26 janvier 2008
-
afad c vraiment trop fort ton code, maintenant fo ke je m'y mette pour arriver a comprendre tou ca pcq a la premiere lecture j'ai rien pigé ^^
cs_wolfood
Messages postés
344
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
22 mai 2004
-
j'ai deja vu cette source autrepart que sur flashkod, sur flash france je crois, c le meme code et les memes commentaires
bref j'avais été bluffé quand je l'ai téléchargé y'a de cela 6 mois environ, j'avais été bluffé en voyant ca, et j'avais essayé de faire un carré mais sans succés lol

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.