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

DirectX Discussion :

Récupérer le vecteur de rotation


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut Récupérer le vecteur de rotation
    Bonjour à tous,

    J'ai une matrice, et j'ai besoin de récupérer le Yaw, Pitch et Roll de la rotation

    J'peux décomposer pour récupérer un quaternion mais après....

    Merci

    A bientôt

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Merci beaucoup

  4. #4
    Membre éprouvé Avatar de tmyke
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 131
    Par défaut
    Bonjours a tous. Désolé de ressortir ce post, mais en fait je suis confronté au meme problème
    que mister3957, et j'ai donc sauté sur le FAQ très bien fait

    http://jeux.developpez.com/faq/matqu...formations#Q37

    Seulement, une fois codé pour essayer, force est de constater que cela ne fonctionne pas.
    voici le petit code en cpp fait a partir du FAQ:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    const float DEGTORAD =  0.01745329251994329547f; 
    const float RADTODEG =	57.29577951308232286465f; 
    #define DEG2RAD(val)	(val*DEGTORAD)
    #define RAD2DEG(val)	(val*RADTODEG)
    #define RADIANS			3.141592653589
     
     
    float mat[16];
     
     
    void rotation_matrice(float angle_x, float angle_y, float angle_z)
    {
    	float A       = cos(angle_x);
    	float B       = sin(angle_x);
    	float C       = cos(angle_y);
    	float D       = sin(angle_y);
    	float E       = cos(angle_z);
    	float F       = sin(angle_z);
     
    	float AD      =   A * D;
    	float BD      =   B * D;
     
    	mat[0]  =   C * E;
    	mat[1]  =  -C * F;
    	mat[2]  =  -D;
    	mat[4]  = -BD * E + A * F;
    	mat[5]  =  BD * F + A * E;
    	mat[6]  =  -B * C;
    	mat[8]  =  AD * E + B * F;
    	mat[9]  = -AD * F + B * E;
    	mat[10] =   A * C;
    	mat[3]  =  mat[7] = mat[11] = mat[12] = mat[13] = mat[14] = 0;
    	mat[15] =  1;
    }
     
    void matrice_angle()
    {
    	float angle_x, angle_y, angle_z;
    	float C,D;
    	float tr_x, tr_y;
     
    	angle_y = D = -asin(mat[2]);           /* Calcul de l'Angle Y */
    	C    =  cos(angle_y);
    	angle_y    *=  (float) RADIANS;
     
    	if (fabs(C) > 0.005)                /* Gimbal lock ? */
    	{
    	    tr_x      =  mat[10] / C;           /* Non, donc calcul de l'angle X */
    	    tr_y      = -mat[6]  / C;	
    	    angle_x  = atan2(tr_y, tr_x) * (float)RADIANS;	
    	    tr_x      =  mat[0] / C;            /* Calcul de l'angle Z */
    	    tr_y      = -mat[1] / C;
     
    	 angle_z  = atan2(tr_y, tr_x) * (float)RADIANS;
    	}
    	else                                   /* Gimbal lock  */
    	{
    	    angle_x  = 0;                      /* Angle X à 0 */
    	    tr_x      = mat[5];                 /* Calcul de l'angle Z */
    	    tr_y      = mat[4];
    	    angle_z  = atan2(tr_y, tr_x) * (float)RADIANS;
    	}
    	char sortie[64];
    	sprintf(sortie, "angle_x: %f  angle_y: %f   angle_z: %f", RAD2DEG(angle_x),RAD2DEG(angle_y),RAD2DEG(angle_z));
    	MessageBox( NULL, sortie, TEXT("Import"), MB_OK|MB_ICONERROR );
    	//angle_x = clamp(angle_x, 0, 360);  
    	//angle_y = clamp(angle_y, 0, 360);
    	//angle_z = clamp(angle_z, 0, 360);
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 46
    Par défaut
    J'ai eu la même impression que toi, pareil, j'ai codé ma fonction et ça me donnait des résultats bien bizares.

    Du coup je me suis tourné vers les trackballs, ce qui donnait une autre façon de faire, mais bon, là d'autres problèmes ont surgi.

  6. #6
    Membre éprouvé Avatar de tmyke
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 131
    Par défaut
    D'autres problème, de quel genre ?

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

Discussions similaires

  1. Récupérer le sens de rotation d'une liste de vecteurs
    Par Malone dans le forum Général Java
    Réponses: 0
    Dernier message: 15/01/2011, 20h39
  2. Récupérer la matrice de rotation
    Par bonofred dans le forum OpenGL
    Réponses: 7
    Dernier message: 13/08/2008, 10h58
  3. Récupérer résultat d'une rotation
    Par Burckel dans le forum OpenGL
    Réponses: 5
    Dernier message: 14/12/2006, 17h08
  4. Réponses: 2
    Dernier message: 30/08/2006, 10h50
  5. [Struts] Récupérer un vecteur du ServletContext
    Par mariemor64 dans le forum Struts 1
    Réponses: 7
    Dernier message: 10/05/2006, 17h33

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