Question 1

void reshape(int w,int h) {
  glViewport(0,0,w,h);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluPerspective(10.0,(float) w/h,30.0,150.0);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  gluLookAt(0.0,25.0,40.0,10.0,10.0,10.0,1.0,1.0,0.0);
}

Question 2

a) Utilisation d'un tableau de 4x4 float.

typedef float matrice[4][4];

b) Deux matrices en entrée, une matrice en sortie. La fonction est conçue pour fonctionner même si la matrice en sortie est l'une des deux matrices en entrée (pas d'effet de bord).

void produitMatriceMatrice(matrice a,matrice b,matrice r) {
  matrice rr;
  int i,j;
  for ( i = 0 ; i < 4 ; i++ )
    for ( j = 0 ; j < 4 ; j++ ) {
      rr[i][j] = 0.0F;
      for ( int k = 0 ; k < 4 ; k++ ) {
        rr[i][j] += a[i][k]*b[k][j]; } }
  for ( i = 0 ; i < 4 ; i++ )
    for ( j = 0 ; j < 4 ; j++ )
      r[i][j] = rr[i][j];
}

Question 3

Spheres1.gif (4638 octets)  Spheres1.gif (4638 octets)

Question 4

Fichier Objets.wrl

#VRML V1.0 ascii
Separator {
  Separator {
    Material {
      diffuseColor 1 0 0
      specularColor 0 0 0
      ambientColor 0 0 0 }
    Translation {
      translation 3 0 0 }
    Cube { } }
  Separator {
    Material {
      diffuseColor 0 1 0
      specularColor 0 0 0
      ambientColor 0 0 0 }
    Sphere { } }
  Separator {
    Material {
      diffuseColor 0 0 1
      specularColor 0 0 0
      ambientColor 0 0 0 }
    Translation {
    translation -3 0 0 }
   Cylinder { } }

}

Objets.gif (6037 octets)

Fichier Lignes.wrl

#VRML V1.0 ascii
Separator {
  DEF Objets Separator {
  Translation {
    translation 0 3 0 }
  WWWInline {
    name "Objets.wrl"
    bboxSize 8 2 2 } }
  Rotation {
    rotation 0 0 1 3.14159 }
  USE Objets
}

 

Horizontale.gif (2348 octets)

Remarques, erreurs
nicolas.janey@univ-fcomte.fr