Bonjour,
cela fait un bout de temps que je travail sur un projet de réalisation de spirales de spirales.
Malheureusement après avoir réussit à tout générer je n'arrive vraiment pas à comprendre l'impossibilité que j'ai à générer le déplacement de la caméra

Pourriez-vous regarder ces différents éléments et me donner votre avis

fonction init
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 sub init       #fonction "init"
{
  glClearColor(1.0, 1.0, 1.0, 1.0);    #reglage de la couleur du fond d'ecran  
  glShadeModel(GL_SMOOTH);   
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_LIGHTING);
  glEnable(GL_LIGHT0);  
}
fonction display
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
sub display       #fonction "display"
{
  glLoadIdentity();        #initialisation des parametres precedents
  gluLookAt(-150.0, 0.0, $distance, -150.0, 0.0, 0.0, 0.0, 1.0, 0.0);  #positionnement de la camera
  glEnable(GL_DEPTH_TEST);
  glPushMatrix();           #on sauvegarde les parametres de la camera
  glBegin(GL_LINES);
    ..............................
   glEnd();
 
 
  glPushMatrix();
  glPopMatrix();            #?????
  glutSwapBuffers();
La fonction permettant la gestion de la souris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
sub souris {
  my ($bouton_souris, $etat_souris, $x_souris, $y_souris)=@_;
  if ($x_souris<=300)
  {
    print "\n deplacement a gauche";
    $distance=$distance-20;
    print "\, distance = $distance";
  }  
  print "\n souris : $x_souris $y_souris ( $bouton_souris >> $etat_souris )";
 
}
Et pour finir la fin du programme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); #speficités de la fenetre
glutInitWindowPosition (0, 0);     #reglage de la position initiale de la fenetre
glutInitWindowSize(1024, 800);      #reglage de la taille de la fenetre
glutCreateWindow ("Arianne");       #nomination et creation de la fentre
init ();                           #initialisation
glutDisplayFunc(\&display);        #fonction à apelé lorsqu'il faut "redessiner" la fenetre
glutReshapeFunc(\&reshape);        #fonction à apeler lorsqu'il faut redimensionner ou bouger la fenetre
glutMouseFunc(\&souris);
glutIdleFunc(\&spinDisplay);
glutMainLoop();