Les rotations en OpenGL -> problème avec le type d'angle !

Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007
- - Dernière réponse : eldered
Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007
- 22 avril 2007 à 17:52
Bonjour à vous,

J'ai un petit probleme de compréhension (théorique) concernant les rotations en OpenGL.

Lors d'une rotation autour de l'axe z, voici comment est censée être modifiée la matrice identité :
Z - Axis:
|cos sin 0 0|
|-sin cos 0 0|
|0 0 1 0|
|0 0 0 1|

Je réalise une rotation d'un angle alpha, soit -0.785598. Je devrais donc obtenirr cela :
Z - Axis:
|0.707 0.707 0 0|
|-0.707 0.707 0 0|
|0 0 1 0|
|0 0 0 1|


Et j'obtiens cela :
Z - Axis:
|0.999 0.0137 0 0|
|-0.0137 0.999 0 0|
|0 0 1 0|
|0 0 0 1|


Apres une petite reflexion, j'ai remarqué que ces valeurs avaient été calculées en mode "degrés", alors que j'ai besoin du mode "radians" pour obtenir de bons résultats. OpenGL réalise donc ses opérations en mode "degrés". Comment puis-je modifier ce mode au sein d'OpenGL (y-a t il une option) ou alors puis-je mathématiquement, de part un traitement en amont, modifier mes données pour que le mode "dergrés" ne  soit plus un pboblème ?

Cordialement, Eddy.
Afficher la suite 

4 réponses

Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007
0
Merci
Bonjour à vous,

J'ai un petit probleme de compréhension (théorique) concernant les rotations en OpenGL.

Lors d'une rotation autour de l'axe z, voici comment est censée être modifiée la matrice identité :
Z - Axis:
|cos sin 0 0|
|-sin cos 0 0|
|0 0 1 0|
|0 0 0 1|


Je réalise une rotation d'un angle alpha, soit -0.785598. Je devrais donc obtenirr cela :
Z - Axis:
|0.707 0.707 0 0|
|-0.707 0.707 0 0|
|0 0 1 0|
|0 0 0 1|



Et j'obtiens cela :
Z - Axis:
|0.999 0.0137 0 0|
|-0.0137 0.999 0 0|
|0 0 1 0|
|0 0 0 1|



Apres une petite reflexion, j'ai remarqué que ces valeurs avaient été
calculées en mode "degrés", alors que j'ai besoin du mode "radians"
pour obtenir de bons résultats. OpenGL réalise donc ses opérations en
mode "degrés". Comment puis-je modifier ce mode au sein d'OpenGL (y-a t
il une option) ou alors puis-je mathématiquement, de part un traitement
en amont, modifier mes données pour que le mode "dergrés" ne  soit plus
un pboblème ?


Cordialement, Eddy.
Commenter la réponse de eldered
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
12
0
Merci
A ma connaissance, openGL n'utlisise que les degres pour faire les rotations.
Il faut que tu fasse des conversions radians vers degrés sinon.
Version degres = 180.0/pi * angle en radian
Commenter la réponse de cs_laurent1024
Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007
0
Merci
Comme a dis Laurent, OpenGL n'utilise que les dégrés. Il faut donc convertir son parametre (l'angle) en degré avant d'utiliser la fonction de rotation (sur x, y ou z).

// Radian to dregree :
angle = 360.0*(angle/2.0*3.14159265);

Voila ;)

Eddy.
Commenter la réponse de eldered
Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007
0
Merci
Oups : angle = 360.0*angle/(2.0*3.14159265);

-----------------------------
Membre de la blindprod :
http://www.blindprod.fr.st
Commenter la réponse de eldered