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

Développement 2D, 3D et Jeux Discussion :

Rotation en 3D


Sujet :

Développement 2D, 3D et Jeux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Par défaut Rotation en 3D
    Bonjour,

    La tâche est la suivante: determiner les coordonnées (x'; y'; z') d'un vecteur P' qui est l'image du vecteur P(0; 0; 5), obtenu par 2 rotations consequitives de ce dernier autour des axes X et Y.
    Angles de rotation sont identiques = 30 degrées.

    En utilisant les matrices de rotation Rx et Ry, j'obtiens 2 resultats differents - en fonction de l'ordre de multiplication: Rx*Ry ou Ry*Rx. De plus ces 2 resultats ne correspondent pas à la réalité - si 2 angles de rotation sont egaux, la projection du vecteur P' sur le plan XOY doit coincider avec la bissectrice de l'angle XOY, ce qui n'est pas le cas.

    En effectuant des recherches sur le net, j'ai appris que le problème est bien connu. Dans les documents, que j'ai trouvés, les auteurs parlent souvent de Quaternions, comme moyen à resoudre le problème, mais nul document ne propose une approche claire.

    Merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 618
    Par défaut
    Salut,

    Que tu obtienne 2 résultats différent est tout à fait normal, les rotations ne sont pas commutatives dans l'espace.
    Ensuite, je pense que ton histoire de bissectrice est fausse. Si, partant de Z je tourne de 90° suivant X et de 90° suivant Y, je reste sur Y. Donc la projection de P n'est pas sur la bissectrice de XoY. Ou alors je n'ai pas compris ce que tu voulais dire

    Au final, je pense que ton calcul est bon (P' = Ry*Rx*P si on effectue la rotation autour de X en premier) mais que ce n'est juste pas le résultat auquel tu t'attendais

    Tes matrices ont bien cette forme ?

    Rx = 1  0           0
         0  cos(30) -sin(30)
         0  sin(30)   cos(30)
    
    Ry = cos(30) 0 sin(30)
         0       1      0
         -sin(30) 0 cos(30)
    
    Si tu ne connait pas, jette un oeil sur les coordonnées homogènes, ainsi qu'ici, cela pourrait t'être utile.

    Pour ce qui est des quaternions, je te conseille de rester en matrices. Elles sont plus puissantes, plus simple (en tout cas je trouve, mais chacun ses gouts), et souvient toi de ceci:
    Tout ce qui peut être fait avec des quaternions peut être fait en matrice !!!. Si tu as un problème avec des matrices et qu'on te répond que ce n'est pas possible et qu'il faut utiliser les quaternions, c'est que la personne qui te répond ne connait pas les matrices.

  3. #3
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    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 817
    Par défaut
    Citation Envoyé par pyros Voir le message
    Si tu as un problème avec des matrices et qu'on te répond que ce n'est pas possible et qu'il faut utiliser les quaternions, c'est que la personne qui te répond ne connait pas les matrices.
    Alors là ce n'est pas vrai... par contre:

    Citation Envoyé par moi
    Si tu as un problème avec une matrice et qu'on te répond que ce n'est pas possible et qu'il faut utiliser un quaternion, c'est que la personne qui te répond ne connait pas les matrices.
    là, ok.

    Oui, c'est subtil, mais il y a des problèmes liés aux accumulations de matrices et aux diverses opérations pour obtenir le résultat qui peuvent être réglés avec un (et un seul) quaternion (genre les problèmes de gimbal lock dû à une mauvaise gestion de trois matrices foireuses, qui peuvent être réglés avec un quaternion... mais également avec une bonne gestion de matrice pas foireuse!)

    Par contre je trouve les quaternions plus simples à appréhender et à gérer (sorti des conversions matrice>quat et inversement), mais comme tu dis, chacun ses gôuts)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  4. #4
    Membre expérimenté Avatar de _MAID
    Homme Profil pro
    Game developer
    Inscrit en
    Novembre 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Game developer

    Informations forums :
    Inscription : Novembre 2010
    Messages : 216
    Par défaut
    si dans l'absolu effectivement on peut arriver aux même résultats quelque soit la technique (quaternion ou matrices), dans la
    pratique l'emploi des quaternions diminue souvent de beaucoup le nombre de calcul à effectuer... pour le appli 3D en temps réel, c'est prépondérant

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Par défaut
    Merci pour toutes les réponses.

    Ma tâche finale est de développer un algorithme qui détermine les angles de rotation d'un plan. Pour valider cet algorithme il me faudra reconstituer la situation réelle.
    Voici le setup réel:
    1. il y a un plan P, dont l'orientation est définie par la normale OV
    2. il y a un device qui calcule en permanence les rotations du plan autour des axes OX et OY

    Pour valider l'algorithme du device j'ai besoin de comparer les angles qu'il calcule avec ceux des rotations "réelles". Emulation de rotations du plan P j'effectue par rotations de la normale OV en utilisant la formule OV' = Rx*Ry*OV.
    Mais le problème qui surgit avec cette approche c'est que le résultat dépend de la façon dont on fait des calculs (ordre de multiplications). Cet aspect est en contradiction avec la réalité – l'orientation d'un plan est unique dans un système de coordonnés.
    Quels formules/algorithmes faudra-t-il utiliser pour que le résultat soit unique. Par exemple si on sait d'avance que le plan est incliné à des angles identiques par rapport aux axes OX et OY (p.e. 30 deg), quelles valeurs d'angles faudra-il mettre dans la formule OV' = Rx*Ry*OV (ou OV' = Ry*Rx*OV).

    Merci

    P.S. L'histoire de bissectrice n'est pas fausse - les resultats de calculs en MatLab (ou Geogebra) le demontrent.
    Tes matrices ont bien cette forme ?
    Oui

  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    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 817
    Par défaut
    Citation Envoyé par Pavel_47 Voir le message
    Mais le problème qui surgit avec cette approche c'est que le résultat dépend de la façon dont on fait des calculs (ordre de multiplications). Cet aspect est en contradiction avec la réalité – l'orientation d'un plan est unique dans un système de coordonnés.
    Je ne vois pas la contradiciton. L'ordre des rotations influe sur le résultat final. Si tu as un résultat unique, il faut donc privilégier un ordre de multiplication et écarter l'autre.

    Citation Envoyé par Pavel_47 Voir le message
    Quels formules/algorithmes faudra-t-il utiliser pour que le résultat soit unique. Par exemple si on sait d'avance que le plan est incliné à des angles identiques par rapport aux axes OX et OY (p.e. 30 deg), quelles valeurs d'angles faudra-il mettre dans la formule OV' = Rx*Ry*OV (ou OV' = Ry*Rx*OV).
    Pose les équation. Tu prends tes deux matrices de rotation, tu cherches l'image de ton vecteur P, et tu résouds le système. Où est la difficulté?


    Citation Envoyé par Pavel_47 Voir le message
    P.S. L'histoire de bissectrice n'est pas fausse - les resultats de calculs en MatLab (ou Geogebra) le demontrent.
    Tu prends ton vecteur (0,0,5).
    Sauf erreur (désolé, il se fait tard...):
    Rotation de 30° autour de X => (0,-2.5,4.33) avec V=racine
    Rotation de 30° autour de Y => (2.16,-2.5,3.75)

    Au vu des coordonnées, on n'est pas sur la bissectrice xOy... donc je veux bien que l'histoire ne soit pas fausse, mais elle est loin d'être vraie.

    [Edit] Au lieu de faire deux rotations, une suivant X, l'autre suivant Y, ça ne serait pas plutôt une rotation suivant X, et l'autre suivant le transformé de Y par la rotation suivant X? (ou inversement...)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

Discussions similaires

  1. Problème de rotation
    Par Francky033 dans le forum DirectX
    Réponses: 1
    Dernier message: 17/07/2003, 16h38
  2. Rotation de Bitmap -> ScanLine
    Par jujuesteban dans le forum Langage
    Réponses: 7
    Dernier message: 03/07/2003, 15h11
  3. Rotation d'un bouton ?
    Par ken_survivant dans le forum Composants
    Réponses: 3
    Dernier message: 01/04/2003, 18h16
  4. matrice et rotation
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/12/2002, 17h59
  5. algo : rotation d'objet 3d
    Par numeror dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 19/08/2002, 22h58

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