IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

matrice et rotation


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti Avatar de charly
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 329
    Points : 358
    Points
    358
    Par défaut matrice et rotation
    bonjur tous le monde , je commence enfin a me depatouiller avec la 3D , mais je bloque sur les rotation ,
    j ai une matrice (4*4) de rotation:
    je mutliplis un point 3D :

    (x (1 0 0 0
    y * 0 cos(a) -sin(a) 0
    z 0 sin(a) cos(a) 0
    t) 0 0 0 1)

    je dois transcrir sa en pascal
    j ai cree un type identitter et t3Dmatrice
    rotation := identite3D;
    rotation[2,2]:=cos(a);
    rotation[3,2]:=sin(a);
    rotation[2,3]:=sin(a);
    rotation[3,2]:=cos(a);

    et sa me donne des resultats legerement delirant , quelqu un peux t il m expliquer ou je me suis tromper ?
    merci beaucoup
    @+ charly
    6*8 =42

  2. #2
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 44
    Points : 49
    Points
    49
    Par défaut
    il faudrait préciser tes notations : rotation par rapport à quoi et selon quel axe.

    Et sinon rotation[2,2] ça veut dire quoi ?

    Merci.

  3. #3
    Membre averti Avatar de charly
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 329
    Points : 358
    Points
    358
    Par défaut
    excuser moi :
    rotation est une matrice , un tableau de reel , en pascal on note sa
    matrice : array[0..4,0..4];
    pour donner une egaliter ( pour l affecter un nombre a une partie du tableau ) , on peux faire directemment en dessinant le tableau ce qui me donenrais logiquemment :

    const ((1,0,0,0),
    (0,cos(a),-sin(a),0),
    (0,sin(a),cos(a),0),
    (0,0,0,1));

    mais turbo pascal n accepte pas cette forme la ( a cause du cos et sin ) du coup on est obliger d affecter directemment la variable a une partie du tableau
    rotation[2,2]:=cos(a); signifie que cos(a) est affecter a la 2 eme colone 2eme ligne ( ou l inverse ) !

    normalement sa me fais une rotation autour des x(axe des absisse) , mais je ne comprends pas pkoi , sa me donne des resultat extravagant !!!
    @+charly
    6*8 =42

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 97
    Points : 69
    Points
    69
    Par défaut
    Euh, je vais petetre paraitre pour un lourd mais as-tu penser à vérifier si les angles sont en radians ou en degrés ( on les oublis vite ceux là )

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 97
    Points : 69
    Points
    69
    Par défaut
    ton code en exemple ( pas celui en pascal ) fait un peu brouillon. ( désolé de dire cela ).

    Bon en tout cas voici une rotation d'un objet sur une surface plane ( sufit de mettre une 3 eme dimension pour la 3D )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    P = (x,y);
     
    A = ( cos(a), -sin(a)
             sin(a), cos(a) )
    et tu fais A.P = P' en sachant que a est l'angle de rotation, P est une matrice colonne d'ordre 2 et A une matrice carré d'ordre 2.


    cela donnerait comme résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x' =  x * cos(a) + x * -sin(a)
    y' =  y * sin(a) + y * cos(a)
    Ceci donne une rotation par rapport à l'origine. Bon si tu veux autour d'un axe en 3D, ca revient au meme ( sauf si le plan de rotation n'est pas perpendiculaire par rapport à l'axe de rotation, mais là un calcul en plus et c'est fini. )

Discussions similaires

  1. Decomposition matrice de rotation
    Par harsh dans le forum Mathématiques
    Réponses: 5
    Dernier message: 24/09/2010, 15h16
  2. Réponses: 4
    Dernier message: 08/08/2006, 13h10
  3. matrices de rotation
    Par vincent0 dans le forum OpenGL
    Réponses: 10
    Dernier message: 09/07/2006, 09h19
  4. angle d'euler et matrice de rotation
    Par mat_monroe dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 02/05/2005, 11h06
  5. [Débutant]maths et matrices de rotation ...
    Par ptidrone dans le forum DirectX
    Réponses: 7
    Dernier message: 21/07/2004, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo