[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
Rejoignez-nous