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

OpenGL Discussion :

probleme conversion matrice quaternion


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1
    Par défaut probleme conversion matrice quaternion
    bonjour je dois convertir des matrices en quaternion pour une interpolation lors d'une animation et de temps en temps ya des choses bizarres qui se passent....
    en effet en utilisant les memes formules usuelles de conversion matrice-quaternion et quaternion-matrice de temps en temps pour une matrice donnée lorsque je convertit une matrice en quaternion et que je reconvertit le quaternion en la matrice cela ne donne pas la meme matrice!!! jai manqué un chapitre sur les quaternions ou quoi?

    pour cette matrice par exemple : 0.89895 0.438051 0 11.5195
    0.438051 -0.89895 0 0
    0 0 -1 0
    0 0 0 1
    vous verrez faites le calcul cest incroyable!!

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    mat3 initiale:
    0.89895 0.438051 0.0  
    0.438051 -0.89895 0.0  
    0.0 0.0 -1.0  
    quaternion:
    0.9744101060255652 / 0.22477754619900725 / 0.0 / 0.0
    mat3 from quaternion:
    0.8989501094495063 0.4380510252478821 0.0
    0.4380510252478821 -0.8989501094495065 0.0
    0.0 0.0 -1.0
    Je ne vois pas l'incroyable, mais c'est bien tenté...

    Cela dit, tu ne nous a rien dit sur ce que tu faisais, donc on va dire que tes formules sont buggués. Ca sera le moins incroyable.

    Bienvenue sur le forum sinon.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut
    mais tu es un genie!!! comment tu as fait? tu utilises bien cette formule pour la conversion matrices quaternions pur une matrice m donnée :

    function(m){
    var tr = m[0] + m[5] + m[10]+1.0;
    var S,x,y,z,w;

    if (tr > 0) {
    S = 0.5/Math.sqrt(tr);
    w = 0.25 / S;
    x = (m[9] - m[6]) * S;
    y = (m[2] - m[8]) * S;
    z = (m[4] - m[1]) * S;
    } else if ((m[0] > m[5])&&(m[0] > m[10])) {
    S = Math.sqrt(1.0 + m[0] - m[5] - m[10]) * 2;
    w = (m[9] - m[6]) / S;
    x = 0.25 / S;
    y = (m[1] + m[4]) / S;
    z = (m[2] + m[8]) / S;
    } else if (m[5] > m[10]) {
    S = Math.sqrt(1.0 + m[5] - m[0] - m[10]) * 2;
    w = (m[2] - m[8]) / S;
    x = (m[1] + m[4]) / S;
    y = 0.25 / S;
    z = (m[6] + m[9]) / S;
    } else {
    S = Math.sqrt(1.0 + m[10] - m[0] - m[5]) * 2;
    w = (m[4] - m[1]) / S;
    x = (m[2] + m[8]) / S;
    y = (m[6] + m[9]) / S;
    z = 0.25 / S;
    }
    var N=Math.sqrt(x*x+y*y+z*z+w*w)

    return [x/N,y/N,z/N,w/N];
    }

    parce que si cest le cas chez moi cela donne(en arrondissant je sui fatigué) :

    quaternion : x = 0.274 y = 0.9616 z = 0 w = 0

    donnes moi ta formule sil te plait!!!!!!!!!!!!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut
    jai normalisé bien sur a la fin je prefere le signaler pour pas de confusion
    Qx = x/N = 0.274
    Qy = y/N = 0.9616
    Qz = 0
    Qw = 0

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut
    cest quand meme incroyable je refait plusieurs fois le calcul et jai toujours le meme resultat cest incomprehensible je ne sais pas quelle formule tu utilises ....

  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Déjà, pour partir sur de bonnes bases, utilise le bouton # pour insérer du code source dans tes messages, on y verra plus clair...
    Ensuite utilise le bouton éditer plutôt que multiplier les posts d'une phrase....

    Et finalement, pour les cas où la trace de la matrice est nulle, remplace tous les 0.25/S par des 0.25*S (donc pour le x=, y= et z=)

    Pour le lien, c'est celui-ci (que tu dois utiliser vu qu'il a les même notations que toi).

    J'aurais bien mis un lien vers la FAQ du site, mais les formules y sont fausses


    Donc pas de magie dans tous ça, quand tes formules ne donnent pas le résultat que tu veux, c'est qu'elles sont fausses. Et ce n'est pas en refaisant 10 fois le calcul qu'elles se corrigeront!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut
    ok merci!! mais tu avoueras que c'étais vicieux l' histoire du déterminant qui est nul il faut multiplier par et non diviser par... bref vive les quaternions!!!

  8. #8
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par flecherouge Voir le message
    mais tu avoueras que c'étais vicieux l' histoire du déterminant qui est nul il faut multiplier par et non diviser par...
    Non, je n'avouerai pas, car ça n'a rien de vicieux.

    Pour la trace positive, le terme S est calculé à partir d'une division par la racine carrée de la trace.
    Pour la trace nulle, il est calculé à partir d'une multiplication.

    Donc c'est logique.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut
    ok dis donc tu ty connais an quaternions!! pendant qu'on y est sur les 51 bones sur lesquels je travaille pour l'animation en utilisant donc la meme formule remaniée avec la trace nulle et tout ltoutim yen a encore 3 qui shiadent l'interpolation yaurait il dautre cas particulier de la formule pendant quon y est ça marrangerait!!!

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/12/2007, 17h38
  2. [Conception] Probleme conversion texte & BD
    Par Seth77 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/06/2006, 16h22
  3. Conversion matrice 4D en matrice 2D
    Par mosq_nico dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/06/2006, 19h07
  4. Réponses: 2
    Dernier message: 09/01/2006, 16h53
  5. Probleme de matrice
    Par Johngame dans le forum DirectX
    Réponses: 1
    Dernier message: 07/02/2005, 18h53

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