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

Signaler
Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007
-
Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007
-
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

Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007

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.
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
16
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
Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007

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.
Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007

Oups : angle = 360.0*angle/(2.0*3.14159265);

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