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 3D: transformation hiérachique


Sujet :

Mathématiques

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Matrice 3D: transformation hiérachique
    Bien le bonjour,

    j'aimerais connaitre un moyen de pouvoir calculer la matrice d'un objet après une rotation/translation de son parent.

    Je dispose de deux objets :
    la table (objet parent)
    le verre (posé sur la table : objet enfant)
    et de leur matrice respective dans les coordonnées monde.

    Le but est de tourner la table de X° (sur l'axe qui ne fera pas tomber le verre) et de donner la nouvelle matrice du verre dans les coordonnées monde.
    Comment faut-il que je m'y prenne ?

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    calculer la matrice d'un objet
    Je connais la matrice d'un système, la matrice d'une application linéaire, etc..
    mais la matrice d'un objet ????
    s une rotation/translation de son parent
    Un déplacement de l'espace est une transformation géométrique (qui a donc une matrice) et qui n'a rien à voir avec un quelconque objet. Donc en particulier rien à voir avec la table ou le verre.
    Les points d'un objet quelconque (points de l'espace) voient leur coordonnées se transformer au moyen de la matrice du déplacement.
    Si au départ le verre est sur la table, en appliquant la transfo à la table et au verre, il reste (sur) la table, ou plutôt il occupe la même position relative.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci de ta réponse Zanoven,

    je me suis peut-être trompé de forum, mes matrices 3D proviennent d'un soft 3D (Blender en l'occurence). Ce n'est peut-être pas un problème de mathématiques mais plutôt de géométrie 3D ?

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par 66-Machin-99 Voir le message
    Le but est de tourner la table de X° (sur l'axe qui ne fera pas tomber le verre) et de donner la nouvelle matrice du verre dans les coordonnées monde.
    Comment faut-il que je m'y prenne ?
    Multiplier les matrices de tes objets par la matrice de rotation d'axe ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    en post-multipliant le verre par la matrice de rotation ça ne fonctionne pas.
    Voici les valeurs des différentes matrices :

    Matrice de la table :
    [1.000000, 0.000000, 0.000000, 0.000000](matrix [row 0])
    [0.000000, 1.000000, 0.000000, 0.000000](matrix [row 1])
    [0.000000, 0.000000, 1.000000, 0.000000](matrix [row 2])
    [-3.205392, 2.216813, 0.000000, 1.000000](matrix [row 3])

    Matrice du verre :
    [1.000000, 0.000000, 0.000000, 0.000000](matrix [row 0])
    [0.000000, 1.000000, 0.000000, 0.000000](matrix [row 1])
    [0.000000, 0.000000, 1.000000, 0.000000](matrix [row 2])
    [-4.122184, 2.848371, 0.000000, 1.000000](matrix [row 3])

    Matrice de transformation (rotation de 37,5 degrés sur l'axe Z) :
    [0.793353, -0.608761, 0.000000](matrix [row 0])
    [0.608761, 0.793353, 0.000000](matrix [row 1])
    [0.000000, 0.000000, 1.000000](matrix [row 2])

    et le résultat souhaité serait :
    [0.793353, -0.608761, 0.000000, 0.000000](matrix [row 0])
    [0.608761, 0.793353, 0.000000, 0.000000](matrix [row 1])
    [0.000000, 0.000000, 1.000000, 0.000000](matrix [row 2])
    [-3.548264, 3.275969, 0.000000, 1.000000](matrix [row 3])


    alors qu'en multipliant le verre par la rotation, j'obtiens :
    [0.793353, -0.608761, 0.000000, 0.000000](matrix [row 0])
    [0.608761, 0.793353, 0.000000, 0.000000](matrix [row 1])
    [0.000000, 0.000000, 1.000000, 0.000000](matrix [row 2])
    [-1.536370, 4.769188, 0.000000, 1.000000](matrix [row 3])

    Je joins un fichier .blend au cas où :
    [ame="http://www.megaupload.com/?d=GGLB6XPN"]MEGAUPLOAD - The leading online storage and file delivery service@@AMEPARAM@@Filename:</font> <font style="font-family:arial; color:#FF6700; font-size:22px; font-weight:bold;">TableVerre.blend@@AMEPARAM@@TableVerre.blend[/ame]

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Tu es sûr que la matrice du verre est dans le repère du monde, et pas dans le repère de la table ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    J'en suis certain.



    Les objets aux bords rouges sont les objets à leur position initiale.
    Et en bleu leur position souhaitée (après rotation de 37,5 degrés).

    La cible bleue "Result matrix" est la position du verre si je multiplie directement sa matrice par celle de rotation.

    J'ai essayé de changer de repère pour le verre en lui donnant comme nouveau repère celui de la table, puis j'ai multiplié cette nouvelle matrice par celle de rotation, et il y a du mieux. Sauf qu'il y a un décalage au niveau de la translation.

Discussions similaires

  1. [Java2D] Matrice de transformation
    Par Talstus dans le forum 2D
    Réponses: 13
    Dernier message: 13/04/2007, 00h30
  2. Réponses: 4
    Dernier message: 08/03/2007, 10h32
  3. Ajouter une matrice de transformation
    Par Ekinoks dans le forum OpenGL
    Réponses: 9
    Dernier message: 20/11/2006, 19h32
  4. Envoyer la matrice de transformation
    Par Ekinoks dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/11/2006, 10h10
  5. Moteur 2D: Pb de calcul de Matrice de transformation
    Par themadmax dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 29/06/2006, 11h22

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