begin process at 2012 05 26 07:01:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > TUTORIEL: UTILISATION DES MATRICES DE ROTATIONS DANS L'ESPACE.

TUTORIEL: UTILISATION DES MATRICES DE ROTATIONS DANS L'ESPACE.


 Information sur la source

Note :
Aucune note
Catégorie :Tutoriaux Niveau :Initié Date de création :24/07/2003 Date de mise à jour :24/07/2003 15:02:38 Vu / téléchargé :9 783 / 1 191

Auteur : afad

Ecrire un message privé
Site perso
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

 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

  • 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;
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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Rotation3d.flaTélécharger ce fichier [Réservé aux membres club]18 432 octets

Télécharger le zip


 Sources du même auteur

[FAME] CODER EN AS2 SANS L'ÉDITEUR FLASH (R)
Source avec Zip CLASS JAVASCRIPT [DIALOGUE AVEC FLASH]
Source avec Zip EVALUER LA VITESSE DE CONNECTION INTERNET (FLASH MX)
Source avec Zip SPECTRUM 3D INSPIRÉ DE LA SOURCE DE BLACKWIZZARD
Source avec Zip INTERPOLATIONS DE MVT TYPE PENNER POUR LES NULS

 Sources de la même categorie

Source avec Zip Source avec une capture COMPTEUR DE VISITES GRAPHIQUE AS2 (ACTION SCRIPT 2) FLASH CS... par snoozkilla
Source avec Zip Source avec une capture GALERIE D'IMAGES AVEC TITRES ET COMMENTAIRES par yasdar
Source avec Zip Source avec une capture GUITARE ZÉRO 1 LE MOTEUR LOURD par titouanbaillon
AS3.0: UPLOAD DE FICHIER ET RECUPERATION DE LA REPONSE DU SE... par nickydaquick
MODIFIER LES APOSTROPHES ET AUTRES CARACTÈRES MADE IN WORD D... par ourso

Commentaires et avis

Commentaire de upyboobs le 24/07/2003 15:09:43

tres bien !!! vivent les maths !!! je vais m'y mettre !

Commentaire de tom le 24/07/2003 16:44:20 administrateur CS

dommage que ca ne soit pas fait en poo...

Commentaire de righton le 24/07/2003 16:46:49

Retourner dans mes bouquins de maths? mais j'ai tout brulé après mon bac !
Bravo quand même !

Commentaire de top30 le 24/07/2003 21:06:17

eeehuuuh merci pour moi... Mais surtout bravo à toi ! C est un des moteur 3D des plus petits que j ai pu voir... Chapeaau !
Sur le site de macormedia.. Je sais plus ou... Y en a un aussi... Si ca t interesse !

Commentaire de upyboobs le 25/07/2003 01:45:49

petite note...
si vous voulez changer le sens de la rotation il vous suffit de modifier des signes dans les matrices:
matrices 1 : mettre -1 au lieu de 1
                  enlever le - au sinus et le mettre au cosinus (au dessous)
matrices 2 : enlever le - au sinus et le mettre au cosinus (au dessous)
matrices 3 : mettre -1 au lieu de 1
                  enlever le - au sinus et le mettre au cosinus (au dessous)

normalement ca devrait faire l'affaire.

Commentaire de neo33 le 25/07/2003 13:56:33

j'ai 12 ans et jsuis en 5ieme alors je comprend rien a ce que ta marqué mais sinon c'est bien

Commentaire de afad le 25/07/2003 14:05:01

Oui effectivement la, t'as le tps de voir venir neo
lol j'avais pas pensé à ça..

Commentaire de afad le 25/07/2003 14:07:25

Si vous avez d'autres questions ou suggestions ou proposition comme vient de le faire de façon remarquable upyboobs, n'hesiter pas, je suis dispo.

A+
afaD

Commentaire de top30 le 25/07/2003 14:36:47

Moi j ai un truc JAMAIS FAIT pour toi ! Un truc que si ca marche tu peux être celecre comme notre ami Penner...
Vous recreer TOUS avec vos moteurs 3D des X, des Y et des Z ! OK ?
sachant que Falsh te propose déjà un X et un Y.. Et pour les connaisseur quasi un Z avec son "_xscale, _yscale)...
Bref..

Faut chier un moteur 3D :
Creer une object : "_3D" comme les objects Maths et autre....
puis des fonctions et autres comme :
monClip.move3D (_x, _y, _sc);  /(/ _sc etant une fonction de scale au clip)
monClip._3Dx = une valeur du point _x sur la scene !
monClip._3Dy = une valeur du point _y sur la scene !
monClip._3Dsc = une valeur de d'echelle du clip !
pas oblkigatoir en plus... Mais bref.. Faut chier un moteur 3D pour movie Clip et par pour dessin !

Commentaire de righton le 25/07/2003 15:00:18

ça c'est de la suggestion ! c'est clair faut nous chier ça vite fait là !!

;D

Commentaire de upyboobs le 25/07/2003 15:50:39

hop hop hop...
explique un peu plus a quoi tu pense car  notre ami penner a fait un truc qui pourrait etre ce que tu dis...

Commentaire de upyboobs le 25/07/2003 15:57:13

au fait concernant la rotation dans l'autre sens... plutot que de changer les signes dans l'autres sens metter une variable que vous définirez au début de la page... et meme un petit effet sylmpa :
tout les x secondes vous attribué a un signe de facon aléatoire... avec getTimer(), random, et une boucle if... si random donne un chiffre < a 0.5 a sera négatif et sinon positif... ca pourait etre sympa... par contre e sais pas si ca marche..

Commentaire de wolfood le 25/07/2003 16:52:22

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

Commentaire de poof65 le 25/07/2003 19:23:52

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é ^^

Commentaire de afad le 27/07/2003 15:56:16

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

Commentaire de peewee le 12/10/2003 12:17:52

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

Commentaire de Horfee le 14/10/2005 09:32:49

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...

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales