[OpenGL] rotation

F0ra
Messages postés
111
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
29 décembre 2008
- 2 août 2008 à 13:20
crazy lapinou
Messages postés
22
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
18 août 2008
- 18 août 2008 à 10:09
Bonjour,
J'ai un problème pour réaliser une rotation en OpenGL au centre du rectangle.
J'ai esayé avec glRotatef(ang,0.0,0.0,1.0);  le problème l'orignie de la rotation n'est pas au centre du rectangle.
Comment définir le centre du rectanble, ou il faut-il utiliser les cos(), sin() ; si oui comment ?
void Draw_Box(int Texture,float X0,float Y0,float X1,float Y1, int Calque, float ang)
{
glPushMatrix();

// glRotatef(ang,0.0,0.0,1.0);
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
glBindTexture(GL_TEXTURE_2D, g_Texture[Texture]);

glBegin(GL_QUADS); 
 glTexCoord2f(1.0f, 0.0f); glVertex3f(-SCREEN_X/2+X1*cos(ang),  SCREEN_Y/2-Y1*sin(ang),  -SCREEN_X+Calque);
 glTexCoord2f(1.0f, 1.0f); glVertex3f(-SCREEN_X/2+X1*cos(ang),  SCREEN_Y/2-Y0*sin(ang),  -SCREEN_X+Calque);
 glTexCoord2f(0.0f, 1.0f); glVertex3f(-SCREEN_X/2+X0*cos(ang),  SCREEN_Y/2-Y0*sin(ang),  -SCREEN_X+Calque);
 glTexCoord2f(0.0f, 0.0f); glVertex3f(-SCREEN_X/2+X0*cos(ang),  SCREEN_Y/2-Y1*sin(ang),  -SCREEN_X+Calque);
glEnd();

glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glPopMatrix();

}

Merci Beaucoup

7 réponses

cs_Adeon
Messages postés
293
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
10 avril 2015
2
3 août 2008 à 11:09
Salut ! moi pour faire une rotation d'un point (x,y) de R radian par rapport au point (a,b) :

J'exprime le point (x,y) par rapport a (a,b) en coordonnée polaire
J'ajoute R a la composante du rayon
Je me retrouve avec une nouvelle coordonnée polaire que je convertit en coordonné cartésienne pour faciliter le draw du point après.

Pour un rectangle je fais cette transformation au 4 points et j'obtiens une belle rotation !

Voila

++

______________________
Adeon, programmeur de jeux sur directX 9 (http://theolith.com) a votre service !
0
K@zuya
Messages postés
306
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
15 février 2016

3 août 2008 à 13:01
ça fait longtemps que je n'ai pas fait d'opengl mais en gros, il faut push ton objet, je mettre au centre du plan de rotation, faire la rotation, le remettre à la place ou il doit être puis le pop

K@zuya
0
F0ra
Messages postés
111
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
29 décembre 2008

3 août 2008 à 13:39
merci, je vais esayer ça
0
crazy lapinou
Messages postés
22
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
18 août 2008

17 août 2008 à 20:45
Bonjour,

Je recherche la même chose, mais je ne comprend pas vos explications...
Est-ce que il serait possible que vous me montriez un petit code ???

Merci d'avance

<hr size="2" width="100%" />Mon site: http://www.crazy-lapinou.eu
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
F0ra
Messages postés
111
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
29 décembre 2008

17 août 2008 à 21:59
0
crazy lapinou
Messages postés
22
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
18 août 2008

18 août 2008 à 09:57
Merci d'avoir répondu si vite ;)
Donc si je comprend bien, il suffit de faire une translation au millieu de l'image avant de faire une rotation ???
Je test, je verrais bien si c'est ça ;)

Merci encore

<hr size="2" width="100%" />Mon site: http://www.crazy-lapinou.eu
0
crazy lapinou
Messages postés
22
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
18 août 2008

18 août 2008 à 10:09
Je confirme, c'était tout simple finalement, pas besoin de formules spéciales
Merci encore, ça marche nickel !!!

<hr size="2" width="100%" />Mon site: http://www.crazy-lapinou.eu
0