Secondo progetto di Grafica Interattiva A.A. 2003-4

Grafica tridimensionale

Scopo

Realizzare un programma per la visualizzazione di funzioni bivariate.

Descrizione generale

Una funzione bivariata e' caratterizzata da un dominio rettangolare sul piano xy e da un meccanismo per attribuire ad ogni punto (x,y) appartenente a tale dominio un valore di quota z.

Consideriamo funzioni in cui la quota z e' attribuita in base a una formula matematica e funzioni in cui la quota z e' attribuita per interpolazione in base a dati di campionamento (ved. esercitazioni 5 e 6).

Il programma permette di inserire nell'ambiente di lavoro piu' funzioni, mostra i grafici delle funzioni presenti dentro al loro dominio, e permette di eseguire alcune operazioni.

La visualizzazione avviene sia in pianta che in visione prospettica, con la possibilita', nella vista prospettica, di muovere il punto di vista attorno alla scena, avvicinarsi e allontanarsi. La vista in pianta invece consente solo zoom e pan e mostra la posizione del punto di vista usato nella vista prospettica. Inoltre il programma permette di gestire l'illuminazione.

Di ogni grafico e' possibile:

L'utente decide a quale grafico applicare le operazioni selezionandolo col click del mouse oppure scegliendolo da una tabella.

Specifiche dettagliate

Organizzazione generale

Al piu' 5 funzioni possono essere presenti contemporaneamente, e possono essere memorizzate in un array (ved. suggerimenti). Il grafico di una funzione presente puo' essere anche temporaneamente nascosto (senza con questo eliminare la sua funzione).

La finestra e' divisa in quattro sotto-aree:

Area vista in pianta e area vista prospettica

Queste due aree mostrano i grafici delle funzioni correntemente presenti (tranne quelli che sono stati temporaneamente nascosti) e, se attivati, gli assi cartesiani.

In ciascuna delle due aree viene sempre mantenuta la aspect ratio della scena, quando l'utente cambia le dimensioni della finestra.

Ciascun grafico puo' essere mostrato in tre versioni: punti, linee oppure facce piene (ved. esercitazione 5). A richiesta puo' essere mostrato il pavimento di un grafico sul piano xy, disegnato a quadretti (ved. esercitazione 5 - terza tappa). Inoltre possono essere mostrati a richiesta gli assi cartesiani.

I grafici sono illuminati da due sorgenti luminose (ved. esercitazione 7 - tappa di compito):

Nella vista in pianta e' mostrata la posizione del punto di vista usato nella vista prospettica (ved. esercitazione 6 - prima tappa), ed e' mostrata la posizione della sorgente luminosa fissa rispetto alla scena (ma solo se rientra nel volume di vista).

Il colore di ciascun grafico e' definito da due materiali: uno per il "sopra" e uno per il "sotto". In versione punti e linee si usa uno solo dei due colori (scegliete voi quale), in versione facce piene si usano entrambi.

Assi e pavimenti emettono luce propria indipendentemente delle sorgenti luminose (ved. esercitazione 7 - prima tappa).

Durante l'interazione puo' essere selezionato un solo grafico. Il grafico selezionato e' evidenziato in modo opportuno.

In ogni momento la scena visualizzata nelle due viste in pianta e prospettica deve essere la stessa: stessi grafici, stesse cose mostrate, con stessi attributi, stessa illuminazione, ecc. Tra le due viste cambiano solo le trasformazioni di proiezione.

Interazione

In qualsiasi area si trovi il mouse, la pressione dei tasti "q", "Q" e del tasto ESC provoca la terminazione del programma.

In tutte e due le viste in pianta e prospettica:

Solo nella vista prospettica:

Solo nella vista in pianta:

In ogni caso (tranne quelli segnati con [*]) gli effetti dell'azione eseguita in una vista si ripercuotono anche sull'altra vista.

Area comandi

L'area comandi contiene sotto-aree che si comportano come bottoni (su di esse e' attiva una mouse callback) e sotto-aree che si comportano come menu' (su di esse e' attivo un menu' pop-up). Queste sono:

1.   Area file su cui e' attivo un menu' pop-up che permette di:

2.   Area seleziona su cui e' attivo un menu' pop-up che permette di selezionare un grafico scegliendone il numero. Si hanno al piu' 5 opzioni per gli al piu' 5 grafici presenti. I numeri corrispondenti a posti correntemente vuoti devono o non essere mostrati nel menu', o in ogni caso non produrre danno quando selezionati (provocare un messaggio d'errore in area messaggi ma non il crash del programma).
La selezione per numero (a differenza di quella per click) permette di selezionare anche grafici temporaneamente nascosti: in questo caso il grafico torna ad essere visibile non appena viene selezionato.

3.   Area attributi su cui e' attivo un menu' pop-up per gestire gli attributi del grafico correntemente selezionato (se esiste):

Per point size e line width si puo' proporre un insieme prefissato di valori oppure richiedere un valore all'utente da tastiera.
Per le proprieta' di materiale si puo' proporre un insieme prefissato di colori oppure richiedere un colore all'utente da tastiera (ved. suggerimenti).

4.   Area griglia su cui e' attivo un menu' pop-up per gestire la griglia usata per produrre il grafico correntemente selezionato (se esiste) a partire dalla sua funzione:

Per numero di righe e colonne e fattore di scala si puo' proporre un insieme di valori prefissati oppure chiedere di digitare un valore.

5.   Area assi che si comporta come un bottone e permette di mostrare o nascondere gli assi cartesiani.

6.   Area luci su cui e' attivo un menu' pop-up che permette di:

Anche qui per le proprieta' della luce si puo' far scegliere fra un insieme di colori prefissato o chiedere di digitare un colore.

Le varie sotto-aree sono decorate con icone, oltre a portare il titolo (stringa) corrispondente.

Tutti i cambiamenti vengono applicati simultaneamente ad entrambe le viste in pianta e prospettica.

Area messaggi

L'area messaggi informa sull'ultima operazione eseguita:

Inoltre fornisce "l'eco" di quanto l'utente digita da tastiera:

Vedere anche

Suggerimenti

Informazioni sulla consegna (scadenza, materiale da consegnare)