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

Mathématiques Discussion :

Matrice de rotation


Sujet :

Mathématiques

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 22
    Points : 21
    Points
    21
    Par défaut Matrice de rotation
    Bonjour,

    Voilà ma matrice de rotation : (90° autour de l'axe X et sens antihoraire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                            1, 0, 0,
                            0, 0, 1,
                            0, -1, 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            for (int i = 0; i < points.length; i++) {
                Point3D p = points[i];
                p.x = (int) (((float) p.x * m.getM00()) + ((float) p.y * m.getM01()) + ((float) p.z * m.getM02()) + m.getM03());
                p.y = (int) (((float) p.x * m.getM10()) + ((float) p.y * m.getM11()) + ((float) p.z * m.getM12()) + m.getM13());
                p.z = (int) (((float) p.x * m.getM20()) + ((float) p.y * m.getM21()) + ((float) p.z * m.getM22()) + m.getM23());
            }
    Comme vous l'auriez deviner,j'ai un probléme.
    Car quand je l'applique celà ne donne pas du tout une rotation...

    Merci d'avance si vous apercevez un probléme

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 309
    Points : 52 901
    Points
    52 901
    Par défaut
    Pour une rotation autour de l'axe x, il suffit de faire la multiplication matricielle suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
             | x1 x2 x3 x4 ... xn
             | y1 y2 y3 y4 ... yn
             | z1 z2 z3 z4 ... zn
             |  1  1  1  1 ...  1
    ------------------------------
    1 0  0 0 | X1 X2 X3 X4 ... Xn
    0 c -s 0 | Y1 Y2 Y3 Y4 ... Yn
    0 s  c 0 | Z1 Z2 Z3 Z4 ... Zn
    0 0  0 1 |  1  1  1  1 ...  1
    Où (x,y,z) sont les couples de coordonnées initiales, (X,Y,Z) les coordonnées finales, c et s respectivement le cosinus et le sinus de l'angle de rotation (donné en radian)

    => : http://jeux.developpez.com/faq/matqu...ransformations

    Les 4èmes ligne et colonne de la matrice de transformation et les lignes de 1 servent pour des transformation plus générale. Elles ne servent à rien dans cet exemple précis.

    Citation Envoyé par buenol Voir le message
    sens antihoraire
    Sens trigonométrique, quoi !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    Le problème,et bien que j'avais suivi l'explication de wikipedia sur les matrices,c'est dans le code.

    Parce que je fait bien ce que tu dit:Je multiplie les 2 matrices (voir 1er post) mais j'ai peur de l'avoir mal fait.
    Parce que visiblement j'ai la bonne matrice de rotation.

    Mais pour mieux illustrer le code:

    La figure de gauche est la rotation par la matrice donnée de la figure de droite =).
    http://img408.imageshack.us/img408/4785/capturewd.png
    Donc,je suis tenté de penser que le probléme vient de mon implementation de la multiplication

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Citation Envoyé par buenol Voir le message
    Le probléme,et bien que j'avait suivit l'explication de wikipedia sur les matrices,c'est dans le code.

    Parceque je fait bien ce que tu dit:Je multplie les 2 matrices (voir 1er post) mais j'ai peur de l'avoir mal fait.
    Parceque visiblement j'ai la bonne matrice de rotation.

    Mais pour mieux illustrer le code:

    La figure de gauche est la rotation par la matrice donnée de la figure de droite =).
    http://img408.imageshack.us/img408/4785/capturewd.png
    Donc,je suis tenté de penser que le probléme vient de mon implementation de la multiplication
    vous utilisez les valeurs modifiées dans le calcul…
    vous devez utilisez un Point3D temporaire pour stocker le résultat intermédiaire…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Point3D p1 ;
    p1.x = …
    p1.y = …
    p1.z = …

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Decomposition matrice de rotation
    Par harsh dans le forum Mathématiques
    Réponses: 5
    Dernier message: 24/09/2010, 15h16
  2. matrices de rotation
    Par vincent0 dans le forum OpenGL
    Réponses: 10
    Dernier message: 09/07/2006, 09h19
  3. 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
  4. [Débutant]maths et matrices de rotation ...
    Par ptidrone dans le forum DirectX
    Réponses: 7
    Dernier message: 21/07/2004, 17h00
  5. matrice et rotation
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/12/2002, 17h59

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