 
  
     
  
Fichier source : ParametrageCameraB.cpp
static double px = 0.0;
    static double py = 0.0;
    static double pz = 10.0;
    
    /* Fonction executee lors d'un rafraichissement */
    /* de la fenetre de dessin                      */
    
    static void display(void) {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      const GLfloat light0_position[] = { 0.0,0.0,10.0,1.0 };
      glPolygonMode(GL_FRONT_AND_BACK,(affichage) ? GL_FILL : GL_LINE);
      glPushMatrix();
      switch (version) {
        case 0 : 
          glLightfv(GL_LIGHT0,GL_POSITION,light0_position);
          gluLookAt(px,py,pz,0.0,0.0,0.0,0.0,1.0,0.0);
          break;
        case 1 : 
          gluLookAt(px,py,pz,0.0,0.0,0.0,0.0,1.0,0.0);
          glLightfv(GL_LIGHT0,GL_POSITION,light0_position);
          break; }
      scene();
      glPopMatrix();
      glFlush();
      glutSwapBuffers();
      int error = glGetError();
      if ( error != GL_NO_ERROR )
        printf("Erreur OpenGL: %d\n",error);
    }
    
    /* Fonction executee lors d'un changement       */
    /* de la taille de la fenetre OpenGL            */
    /* -> Ajustement de la camera de visualisation  */
    
    static void reshape(int tx,int ty) {
      glViewport(0,0,tx,ty); 
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      double ratio =(double) tx/ty;
      if ( ratio >= 1.0 )
        gluPerspective(80.0,ratio,1.0,20.0);
        else
        gluPerspective(80.0/ratio,ratio,1.0,20.0);
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
    }
    
    /* Fonction executee lors de la frappe          */
    /* d'une touche speciale du clavier             */
    
    static void special(int key,int x,int y) {
      switch ( key ) {
        case GLUT_KEY_UP :
          py += 0.1;
          glutPostRedisplay(); 
          break;
        case GLUT_KEY_DOWN :
          py -= 0.1;
          glutPostRedisplay(); 
          break;
        case GLUT_KEY_LEFT :
          px -= 0.1;
          glutPostRedisplay(); 
          break;
        case GLUT_KEY_RIGHT :
          px += 0.1;
          glutPostRedisplay(); 
          break;
        case GLUT_KEY_PAGE_UP :
          pz -= 0.1;
          glutPostRedisplay(); 
          break;
        case GLUT_KEY_PAGE_DOWN :
          pz += 0.1;
          glutPostRedisplay(); 
          break;
        case GLUT_KEY_F1 :
          px = 0.0;
          py = 0.0;
          pz = 10.0;
          glutPostRedisplay(); 
          break; }
    }