Corso di
Interazione Uomo-Macchina: Interfacce Grafiche
Esercitazione di laboratorio
Modalita' di lavoro
A gruppi.
I gruppi possono non essere gli stessi delle esercitazioni guidate.
I gruppi devono essere composti preferibilmente da due, e assolutamente
da non piu' di tre persone.
I gruppi da tre persone sono tenuti a svolgere una parte in piu',
come indicato sotto.
E' possibile farla a casa, anche per conto proprio (non in gruppo),
anche in questo caso segnalatemi la cosa.
Raccomando di segnalarmi le variazioni nei gruppi.
Data di consegna
9 giugno 2000
Indice
Lavoro da svolgere
Realizzare un'interfaccia grafica per un "gioco delle costruzioni" virtuale.
Descrizione del gioco
In questo gioco l'utente ha a disposizione una serie di "formelle"
diverse che puo' collocare in uno spazio di lavoro.
Lo spazio di lavoro e' idealmente strutturato come una griglia
tridimensionale. Le maglie della griglia sono cubi con facce parallele
ai piani coordinati.
Ogni formella occupa un certo numero di cubi della griglia:
per esempio, una formella ad "L" occupa tre cubi.
Una maglia cubica della griglia puo' essere vuota, oppure essere occupata
da una sola formella.
La figura mostra una possibile configurazione dello spazio di lavoro:
La gamma delle formelle che l'utente puo' collocare e manovrare nello
spazio di lavoro e' predefinita. Si hanno i seguenti tipi di formelle:
- formella singola che occupa un cubetto
- formella doppia che occupa due cubetti affiancati
- formella a "L" che occupa tre cubetti
- formella a "T" che occupa 4 cubetti
- formella "a ponte" che occupa 5 cubetti
Le formelle sono visualizzate come oggetti solidi a facce piene,
soggette ad illuminazione e rese
in modalita' "flat shading" (tutti i vertici di una faccia hanno
la stessa normale, perpendicolare alla faccia).
Per ciascun tipo di formella l'applicazione stabilisce, fra tutti i cubi che
la costituiscono la formella, un cubo di aggancio,
che viene usato come perno per ruotare la formella (ved. dopo).
La griglia di lavoro ha dimensione NxNxN, con N > 3.
L'utente puo' collocare nello spazio di lavoro fino a K formelle
contemporaneamente, con K > 1.
Funzionalita' dell'interfaccia
L'interazione con l'utente avviene in questo modo:
-
Inizialmente lo spazio di lavoro e' vuoto (nessuna formella presente).
-
In qualsiasi momento, purche' il numero di formelle presenti non sia
gia' il massimo consentito,
l'utente puo' aggiungere una formella scelta fra quelle disponibili.
La nuova formella viene inizialmente collocata dall'applicazione in una
posizione arbitrariamente scelta, non gia' occupata da altre formelle.
La nuova formella viene visualizzata in un colore diverso da quello di
tutte le altre formelle presenti.
La nuova formella viene selezionata come la "formella corrente".
-
L'utente puo' spostare la formella corrente traslandola in una delle due
direzioni lungo gli assi coordinati.
Ad ogni spostamento, la lunghezza del vettore di traslazione e' pari ad
una maglia della griglia.
Durante i movimenti di traslazione, la formella non deve andare
ad occupare cubi della griglia gia' occupati da altre formelle.
-
L'utente puo' ruotare la formella corrente su se stessa secondo un asse di
rotazione parallelo ad uno degli assi coordinati e passante per il
baricentro del suo cubo di aggancio.
Ad ogni rotazione, l'angolo di rotazione e' pari a 90 gradi.
Durante i movimenti di rotazione, la formella non deve andare
ad occupare cubi della griglia gia' occupati da altre formelle.
-
L'utente puo' cancellare la formella corrente
eliminandola dallo spazio di lavoro.
-
In qualsiasi momento l'utente puo' selezionare una delle formelle
presenti come "formella corrente"
(per poi eseguire su di essa le operazioni di cui ai punti 3,4,5).
Inoltre l'interfaccia deve fornire all'utente funzionalita' che
facilitino l'interazione, almeno le seguenti:
-
Possibilita' di visualizzare / nascondere la griglia cubica
che struttura lo spazio di lavoro.
-
Possibilita' di guardare la scena in 3D da punti di vista diversi (es.
girare attorno alla scena).
-
Possibilita' di guardare la scena in 2D proiettata su uno dei tre piani
coordinati.
-
Qualche opportuno meccanismo visivo per informare l'utente su:
-
quale e' la formella correntemente selezionata
(es. evidenziarla con un colore piu' intenso o linee di
contorno piu' spesse, contrassegnarla con qualche elemento grafico
aggiuntivo...)
-
in quale delle 6 direzioni possibili si sta per traslare la formella
corrente (es. mostrando il vettore di traslazione, mostrando
in anteprima la formella collocata nella sua posizione di arrivo...)
-
in quale dei 6 versi possibili si sta per ruotare la formella corrente
in ogni momento (esempi analoghi a sopra)
-
Qualche opportuno meccanismo per informare l'utente non valide:
-
aggiunta di una formella quando il numero di formelle presenti e'
gia' il massimo consentito
-
traslazione o rotazione che porterebbe la formella ad
occupare cubetti gia' occupati da altre formelle
L'operazione non valida puo' essere disabilitata (l'utente non la
puo' selezionare) oppure respinta
(l'utente la puo' selezionare, ma il sistema non la esegue).
E' importante che l'utente riceva in qualche forma avviso del fatto che
un'operazione invocata e' stata rifiutata, altrimenti sembra che
il programma non funzioni.
E' utile che l'interfaccia informi l'utente del motivo per cui un'operazione
risulta disabilitata o viene rifiutata, questo aiuta l'utente
ad imparare come funziona l'applicazione.
Parametri N e K
Il numero N che definisce la dimensione della griglia di lavoro
e il numero K massimo di formelle collocabili nello spazio di
lavoro sono stabiliti dall'utente una sola volta all'inizio
della sessione di lavoro.
Per esempio, si puo' prevedere che vengano immessi da command line
oppure l'interfaccia puo' partire in una configurazione tale che
all'inizio l'unica operazione consentita e' l'immissione di questi
due parametri.
Materiale fornito e suggerimenti
Materiale fornito
Viene fornito un file che implementa le strutture dati e le funzioni
dell'applicazione relative alla gestione delle formelle e della griglia:
Nel file esempio.c trovate un "main" che mostra le
operazioni eseguite in una possibile sessione di lavoro.
Suggerimenti
Si possono recuperare varie parti di programmi gia' sviluppati nelle
esercitazioni guidate.
Per esempio:
-
Ciascuna formella e' un insieme di cubi.
Puo' essere visualizzata in OpenGL usando varie istanze della
display list "cubo" (gia' vista) posizionate opportunamente nella
griglia di lavoro.
L'elenco delle posizioni di griglia occupate da una formella si
ottiene con la funzione applicativa TrovaCubiOccupati.
-
Anche per il movimento del punto di vista attorno alla scena potete
riutilizzare parti di codice gia' visto.
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
-
L'eseguibile, i sorgenti e il makefile (se usato) o comunque istruzioni
per la compilazione.
Questi possono essere forniti su dischetto o spediti per email.
-
Solo se lo si ritiene necessario, brevissime
istruzioni per l'uso dell'interfaccia
(su carta o sul dischetto stesso in formato ASCII).
Possono essere consegnate su carta o spedite per email.
L'indirizzo di posta elettronica a cui spedire e'
magillo@disi.unige.it.
Indicare chiaramente nel messaggio il nome dei componenti del gruppo
e l'elenco dei file inviati.
Parte aggiuntiva per gruppi da tre persone
I gruppi da tre persone devono fornire anche la possibilita' per l'utente
di cambiare il colore della formella corrente selezionando le tre
componenti RGB.