Corso di

Interazione Uomo-Macchina: Interfacce Grafiche



Esercitazione di laboratorio

Data di consegna: 31 maggio 1999

Lavoro da svolgere

Realizzare un'interfaccia grafica per un'applicazione che visualizza un oggetto solido con "lente magica": la parte di solido che cade dentro la lente e' visualizzata ad alta risoluzione, la parte rimanente a bassa risoluzione. La lente di ingrandimento puo' avere due forme diverse: cubica e sferica, e puo' essere spostata nello spazio traslandola nelle tre direzioni degli assi coordinati, ingrandita o rimpicciolita dall'utente. L'oggetto da visualizzare e' realizzato tramite un insieme di triangoli.

L'applicazione e' data sotto forma di libreria che il programma interfaccia dovra' utilizzare. La libreria dell'applicazione contiene le seguenti funzioni:

Associato all'interfaccia e' inoltre previsto un file di configurazione contenente: La sintassi di questo file e' lasciata libera.

L'applicazione permette di:

Operazioni sulla configurazione corrente: Note:

Puo' essere opportuno prevedere una configurazione di default da adottare all'apertura del programma in assenza dell'indicazione da parte dell'utente di un file di configurazione particolare

Ad ogni cambiamento operato sulla geometria della lente (tipo, posizione, dimensioni), l'interfaccia dovra' richiedere all'applicazione una nuova rappresentazione del solido invocando la funzione getTriangles. Nel caso di cambiamento dei parametri di visualizzazione (colori, modalita', punto di vista), questo non e' necessario

Per le operazioni relative al movimento della lente, e' importante che l'utente abbia un feedback che gli mostri che cosa sta per fare (es: in che direzione sta per muoverla...)

La scena deve essere inizialmente visualizzata in 3D con trasformazioni di vista e proiezione tali che la scena sia completamente visibile e non troppo "lontana" rispetto all'osservatore.

Poiche' e' prevista la possibilita' di visualizzare l'oggetto in modalita' solid, dovranno anche usate una o piu' luci per l'illuminazione.



Materiale fornito

Vengono forniti:
  1. la libreria che implementa l'applicazione
  2. alcuni file di input contenenti oggetti che possono essere caricati dall'applicazione
  3. uno "scheletro" di programma, che implementa gia' le parti relative a:
I file per 1 e 2, essendo piuttosto voluminosi, sono localizzati in una directory di accesso comune, si raccomanda di non copiarli nella propria home. Per comodita', si puo' creare nella propria home un link simbolico a tali file mediante il comando:
ln -s NOME_FILE_ESISTENTE NOME_FILE_LINK

Il sorgente per 3 e' ig99.c, con il suo makefile makeig99.
Trovate qui spiegazioni su come e' organizzato il codice, come compilare, come eseguire, e sui file di input.



Raccomandazioni

Questo e' un progetto di interfacce grafiche. Pertanto, sara' tenuto conto non solo del fatto che tutte le funzioni richieste siano presenti nell'interfaccia sviluppata, ma anche e di quanto facile e gradevole risulta l'uso dell'interfaccia stessa per l'utente.

Materiale da consegnare