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 :

Quaternion je ne comprends pas comme ça marche


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 42
    Par défaut Quaternion je ne comprends pas comme ça marche
    Bonjour,
    j'ai du mal avec les quaternions, je sais à quoi ça sert en gros on spécifie un axe, un angle et ça fait une rotation de l'angle autour de l'axe .

    J'arrive à voir avec un point à l'origine et un axe à l'origine mais par exemple comment faire pour trouver le quaternion qui ne fait pas bouger le point (0,20,0) sur une rotation de l'axe z.

    Parce que du coup l'axe z c'est 0,0,1 mais si je fais une rotation de 20° ben mon point va forcément bouger .

    J'ai essayer l'axe 0,20,1 mais ça ne marche pas non plus.

    Merci

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Bonjour,

    J'ai du mal a cerner qu'elle est ton problème.
    Si tu as un point en 0,20,0 et que tu appliques une rotation dessus, quaternion ou pas, le point va tourner autour de 0,0,0.

    Fais tu la translation avant ou après la rotation?

    Si tu fais translation puis rotation: Le point va être déplacer puis tourner autour de 0,0,0.
    Si tu fais rotation puis translation: Le point va tourner autour de 0,0,0 puis être translater. Ici , si ton point est par défaut a 0,0,0, il va tourner sur lui même et être translater.

    Mais sur un point cela n'a pas trop d’intérêt. Pense plus avec un triangle ou un cube ou une sphère.

  3. #3
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Une façon que je trouve très naturel de représenter un quaternion est de le prendre comme une camera.

    Un quaternion c'est un axe (vecteur) et un angle(scalaire).

    Imagine tout simplement ceci:

    Un axe(vecteur) -> une direction (vecteur)
    Un angle(scalaire) -> un angle(scalaire)

    Tu peux voir ce quaternion et la camera comme un seul entité. L'axe du quaternion est la direction de la camera, l'angle du quaternion est l'inclinaison de la camera autour de la direction (le roll de "Yaw Pitch Roll" ).

    Tu peux donc facilement deviner que pour placer la camera. Tu vas d'abord l'orienté avec la rotation. Puis tu vas la placer avec la translation.
    Si tu fais l'inverse, tu places ta camera, puis tu la tourne tu ne vas pas tourner autour de l'origine de la camera mais autour de l'origine du monde!

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 42
    Par défaut
    Merci mais en fait j'ai une chaine de points
    le root est le point 0 20 0 il a un fils en 0 15 0 je voudrais en fait répercuter les rotations par rapport à root, donc trouver un quaternion qui quand je fais une rotation de 20° ben mon root ne change pas de place et que le fils fasse une rotation de 20° par rapport à root.

    Je sais qu'on peut le faire différemment, mais je veux le faire avec des quaternion mais pas par rapport à 0 0 0 mais par rapport à un point ici root .


    edit du coup normalement l'axe ce serait 0 20 1 ? là le root ne bouge pas sur une rotation par rapport à z?

  5. #5
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Dans ce cas la tu fais une hiérarchie dans les transformations.

    Root -> Node0 -> Node1.

    dans l'ordre:
    1- translation root, rotation root.
    2- translation root+Node0, rotation root+Node0
    3- translation root+Node0+Node1, rotation root+Node0+Node1.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 42
    Par défaut
    nan mais ça c'est bon, le problème c'est que je n'arrive pas à trouver l'axe pour lequel la transformation n'affecte pas le noeud root mais seulement les fils.



    Parce que si mon root est en 0 20 0 et que l'axe du quaternion c'est 0 0 1 ben mon root va bouger.

    je veux trouver l'axe pour lequel il bouge pas mais seulement les autres points différents de 0 20 0

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

Discussions similaires

  1. [CS3] Insertion ne marche pas comme il faut
    Par info_sara dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 19/05/2008, 20h13
  2. ca marche ? comprends pas
    Par TSalm dans le forum C++
    Réponses: 11
    Dernier message: 31/01/2008, 09h55
  3. COM : _com_ptr_t ca marche mais je ne comprend pas pourquoi
    Par dockurt2k dans le forum Visual C++
    Réponses: 4
    Dernier message: 21/08/2006, 12h28
  4. Réponses: 2
    Dernier message: 14/01/2006, 20h29
  5. Comprends pas pourquoi ca marche pas
    Par cellimo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/11/2005, 22h10

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