[OpenGL] Diriger mon cube a gauche et a droite et sans rotation (pour l'instant)

Signaler
Messages postés
3
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
23 janvier 2009
-
Messages postés
14982
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
2 mars 2021
-


Bonjour a tous. J'ai réussi a faire un cube en 3D et j'arrive à faire avancer et reculer mon cube mais se que je n'arrive pas à faire, c'est que l'on puisse faire aller mon cube à gauche et à droite, sans rotaion (peut-être plus tard ).PS: vous remarquerez que mon code est un peu un foutoir mais je mis retrouve mais la prochaine fois je ferai de l'ordre Merci de vos réponses et a+Voila mon code source:#include #include "Gl\glut.h"doubleAnimCubeAngle=0.0;doubleAnimCouleur=0.0;doubleAnimTransFace=0.0;voidFuncAffichage();voidFuncRedim(intx,inty);voidCubeClavierSpecial(intkey,intx,inty);voidCubeClavierSpecial(intkey,intx,inty){switch(key){caseGLUT_KEY_DOWN:{if(AnimTransFace-100.0)AnimTransFace-=0.1;break;}caseGLUT_KEY_LEFT:{if(AnimTransFace+100.0)AnimTransFace+=0-1;//Et ici ?//break;}}}voidFuncOisivete(){AnimCouleur-=0.01;if(AnimCouleur360.0)AnimCubeAngle=0.0;glutPostRedisplay();}voidmain(void){glutInitWindowPosition(0,0);glutInitWindowSize(1265,720);glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_DOUBLE);glutCreateWindow("Vive l'OpenGL !(Antenen Quentin)");glEnable(GL_DEPTH_TEST);glutDisplayFunc(FuncAffichage);glutReshapeFunc(FuncRedim);glutIdleFunc(FuncOisivete);glutSpecialFunc(CubeClavierSpecial);glutMainLoop();}voidFuncAffichage(){glClearColor(1.0f,1.5f,1.0f,1.0f);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(8.0,4.0,3.0,0.0,1.0,0.0,0.0,1.0,0.0);glTranslated(AnimTransFace,0.0,0.0);glBegin(GL_QUADS);glColor3d(AnimCouleur,0.0,0.0);glVertex3d(1.0,1.0,-1.0);glVertex3d(-1.0,1.0,-1.0);glVertex3d(-1.0,1.0,1.0);glVertex3d(1.0,1.0,1.0);glColor3d(0.0,1.0,1.0);glVertex3d(1.0,-1.0,1.0);glVertex3d(-1.0,-1.0,1.0);glVertex3d(-1.0,-1.0,-1.0);glVertex3d(1.0,-1.0,-1.0);glColor3d(0.0,0.0,1.0);glVertex3d(1.0,1.0,1.0);glVertex3d(-1.0,1.0,1.0);glVertex3d(-1.0,-1.0,1.0);glVertex3d(1.0,-1.0,1.0);glColor3d(1.0,1.0,0.0);glVertex3d(1.0,-1.0,-1.0);glVertex3d(-1.0,-1.0,-1.0);glVertex3d(-1.0,1.0,-1.0);glVertex3d(1.0,1.0,-1.0);glColor3d(1.0,0.0,1.0);glVertex3d(-1.0,1.0,1.0);glVertex3d(-1.0,1.0,-1.0);glVertex3d(-1.0,-1.0,-1.0);glVertex3d(-1.0,-1.0,1.0);glColor3d(0.0,1.0,0.0);glVertex3d(1.0,1.0,-1.0);glVertex3d(1.0,1.0,1.0);glVertex3d(1.0,-1.0,1.0);glVertex3d(1.0,-1.0,-1.0);glEnd();glPopMatrix();glutSwapBuffers();}voidFuncRedim(intx,inty){glViewport(0,0,x,y);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(50.0,(double)x/y,0.1,100.0);}

6 réponses

Messages postés
14982
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
2 mars 2021
94
Salut,
Il te faut une autre variable, genre AnimTransCote, qui va te servir à gérer la translation de gauche à droite, comme tu l'as fait pour avant/arrièr.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
3
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
23 janvier 2009

J'ai fait ce que  j'ai pu, et sa ne marche pas pourrais tu mettre le code ben dans mon code ? MERCI
Messages postés
14982
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
2 mars 2021
94
Evidemment, il faut également changer l'appel à la fonction glTranslated(..)
Dis-moi s'il y a quelque-chose que tu ne comprends pas.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
3
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
23 janvier 2009

Alors en faite j'ai essayé de tout faire pour faire tourner mon cube a gauche et a droite mais je n'y arrive pas pourrais tu me le mettre dans le code ? Merci d'avance
Messages postés
14982
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
2 mars 2021
94
Tu peux ptet me dire ce que tu as essayer de faire?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
14982
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
2 mars 2021
94
Aller, je te montre. Mais je pense que ça ne va pas t'aider à comprendre par toi-même...

Dans la fonction clavier:
  case GLUT_KEY_LEFT:
   {
    if(AnimTransCote<100.0)
     AnimTransCote+=0.1;
    break;
   }
  case GLUT_KEY_RIGHT:
   {
    if(AnimTransCote>-100.0)
     AnimTransCote-=0.1;
    break;
   }

Et dans la fonction d'affichage:
 glTranslated(AnimTransFace,0.0,AnimTransCote);

Par contre, il faut revoir la façon de coder un peu plus "proprement"

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...