Laboratorio di Grafica A.A. 1997-98

Esercizio 3

L'argomento di questa esercitazione sono le varie trasformazioni geometriche in OpenGL.

Vedere anche le note che spiegano la pipeline di trasformazioni geometriche in OpenGL.

Trovate il seguente file:

I due cubi sono entrambi realizzati chiamando una display list "cubo unitario" dopo aver stabilito diverse trasformazioni di modellazione (sulla matrice MODELVIEW) (funzione drawCuboid).

I due cubi sono inoltre posizionati uno rispetto all'altro utilizzando sempre trasformazioni di modellazione (nella display callback).

Infine, nella reshape callback, vengono stabilite le trasformazioni di vista (sempre sulla matrice MODELVIEW) e di proiezione (sulla matrice PROJECTION) che agiscono su tutta la scena globalmente.

La trasformazione di vista e' assegnata dalla funzione gluLookAt(punto di vista,centro della scena,up vector). gluLookAt e' un'utility che fa "in un colpo" cio' che potrei fare a mano con traslazioni e rotazioni della scena.

La trasformazione di proiezione puo' essere ortogonale o prospettica.
La trasformazione ortogonale e' assegnata dalla funzione glOrtho(xmin,xmax,ymin,ymax,zmin,zmax) che stabilisce un volume di vista uguale a un parallelepipedo con lati paralleli agli assi delle coordinate di vista.
La trasformazione prospettica e' assegnata dalla funzione gluPerspective(angolo di apertura,aspect ratio,zmindist,zmaxdist), che stabilisce un volume di vista uguale a un tronco di piramide con basi situate a distanza zmindist e zmaxdist dal punto di vista lungo la direzione dell'asse z negativo delle coordinate di vista, con angolo di apertura ed aspect ratio di base specificati.

Provate a compilare ed eseguire. Guardare il codice e i commenti che danno piu' dettagli di quanto scritto sopra.

Provare a modificare il codice, per esempio: