Laboratorio di Grafica Interattiva A.A. 2002-3

Esercizio 1

Argomento

Primitive grafiche e attrituti pittorici in OpenGL, meccanismi per gestire l'interazione con l'utente in Glut.

Files

Il makefile che sara' usato anche per gli esercizi successivi. Per compilare un programma chiamato xxx.c digitare make PROG=xxx.

Il programma primitiv.c apre una finestra grafica e vi disegna una scena bidimensionale costituita da un insieme di punti.
Non e' prevista interazione con l'utente.
Per terminare, distruggere la finestra usando il pulsante di controllo nell'angolo in alto a sinistra.

Esercitazione guidata

Prima tappa

Provate a compilare ed eseguire. Guardate il codice. Il programma ha due funzioni:

Guardare i commenti presenti nel codice che spiegano le varie fasi eseguite sia dalla display che dal main.

Seconda tappa

Quando l'utente cambia dimensioni alla finestra, la scena viene comunque tracciata usando come viewport l'intera finestra. Di le proporzioni del disegno vengono alterate se la finestra non e' piu' quadrata.

Inserite una reshape callback che preservi le proporzioni (apect ratio) del disegno:

+-----------------------------------------------+
|                 +----------+                  |finestra
|                 |          |viewport          |rettangolare
|                 |          |quadrata          |
|                 |          |                  |
|                 |          |                  |
|                 +----------+                  |
+-----------------------------------------------+

Terza tappa

Provate a fare semplici modifiche al codice, per esempio:

Per alcuni tipi di primitive la configurazione di vertici data non e' adatta. Quali? Trovate una configurazione di vertici adatta per questi casi.

Provate anche ad assegnare valori di colore diversi ai vertici della primitiva e a vedere come il colore viene interpolato (da sperimentare con tutti e tre i tipi di polygon mode).

Disegnate anche gli assi cartesiani sovrapposti alla scena (basta disegnarli per ultimi).

Quarta tappa

Aggiungete una rudimentale interazione con l'utente:

Il programma deve scegliere automaticamente una configurazione di vertici adatta al tipo di primitiva impostato dall'utente.

Quinta tappa

Sostituite alla precedente una gestione piu' raffinata dell'interazione con l'utente.
Organizzate tutte le opzioni in unico menu' a cascata azionabile con il tasto destro del mouse:

Fate in modo che l'utente possa terminare il programma premendo il tasto "q", "Q' oppure ESC (tasto speciale).

Compito

Estetica degli assi cartesiani

Disegnate gli assi cartesiani tratteggiati e con due freccine che indicano il verso positivo degli assi. Occorre abilitare il polygon stipple.

Stili di linea e trame di riempimento

Inserite la possibilita' di scegliere diversi stili di linea e diverse trame di riempimento. Il menu' a cascata viene cosi' riorganizzato: