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

eldered Messages postés 232 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 mai 2022 - 10 avril 2007 à 14:49
eldered Messages postés 232 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 mai 2022 - 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.

4 réponses

eldered Messages postés 232 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 mai 2022
10 avril 2007 à 14:49
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.
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
10 avril 2007 à 16:25
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
0
eldered Messages postés 232 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 mai 2022
22 avril 2007 à 17:43
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.
0
eldered Messages postés 232 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 mai 2022
22 avril 2007 à 17:52
Oups : angle = 360.0*angle/(2.0*3.14159265);

-----------------------------
Membre de la blindprod :
http://www.blindprod.fr.st
0
Rejoignez-nous