Scritto di Interfacce Grafiche / Interfacce Utente - Giugno 2002
Parte pratica
Ciascun esercizio punti 8 indicativamente.
Il secondo esercizio e' diverso per il vecchio e per il nuovo
ordinamento.
Nota bene
Le risposte sono richieste in PSEUDO CODICE.
NON e' necessario usare la sintassi Java o OpenGL.
Si possono dare alle funzioni nomi di fantasia purche'
denotino chiaramente il lavoro svolto dalla funzione.
Si puo' anche scrivere in linguaggio naturale purche' preciso e chiaro.
L'importante e' che si capiscano chiaramente l'effetto che si
intende denotare con un nome di funzione (o con una frase in linguaggio
naturale), le informazioni passate come argomento e quelle
ritornate come risultato.
Esercizio 1 (uguale per vecchio e nuovo ordinamento)
Consideriamo un'interfaccia che consiste in una finestra top-level
con
- un'area di lavoro (pannello)
- tre bottoni di uguale misura allineati orizzontalmente sotto
il pannello ed etichettati Red, Green, Blue.
Si veda la figura:
+--------------------------------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+----------+----------+
| Red | Green | Blue |
+----------+----------+----------+
Domande:
-
Quale gerarchia di annidamento e quali layout
manager si possono usare per ottenere questa configurazione?
Corredare la spiegazione con un disegno.
-
Supponiamo che l'applicazione abbia nel suo stato interno un
colore corrente C appartenente all'insieme {Red, Green, Blue}.
Scrivere lo PSEUDO CODICE del corpo delle callback associate ai tre
bottoni in modo tale che:
-
ciascun bottone assegni come colore corrente quello scritto
sulla sua etichetta
-
quando il colore corrente e' C,
l'utente possa azionare solo i bottoni corrispondenti
ai due colori diversi da C, non il bottone corrispondente a C.
Esercizio 2 (per VECCHIO ordinamento)
Domande:
-
Scrivere lo PSEUDO CODICE di una funzione che disegna
in OpenGL un cubo con facce parallele ai
piani coordinati, baricentro nell'origine, lato unitario.
Il cubo deve essere completo di normali alle facce.
-
Volendo assegnare al cubo un materiale in grado di riflettere
luce diffusa con coefficienti di riflessione RGB pari a (1,1,0.5),
dove va posizionata rispetto allo pseudo codice del cubo
l'istruzione di assegnazione del materiale?
-
Se vogliamo una riflessione diffusa di una tonalita' di viola,
cioe' espressa da una terna RGB del tipo (x,0,x),
che coefficienti RGB deve avere la luce diffusa incidente
sul cubo? Motivare la risposta. Quanto vale x?
Esercizio 2 (per NUOVO ordinamento)
Consideriamo l'interfaccia dell'esercizio 1. Domande:
-
Scrivere in PSEUDO CODICE il corpo della funzione di ridisegnamento
(in Java paint o paintComponent) associata al pannello in modo tale
che
-
nel pannello appaia un quadrato centrato nel pannello,
di lato lungo L-10 pixel dove
L e' la lunghezza in pixel del lato piu' corto del pannello
-
il quadrato sia colorato con il colore corrente dell'applicazione
Cambia qualcosa nelle callback dei bottoni Red, Green, Blue
scritte per rispondere all'esercizio 1?
-
Fare in modo che
- ogni volta che il quadrato cambia colore,
la lunghezza del suo lato diminuisca di 10 pixel,
cioe' la lunghezza del lato sia L-10*(N+1) pixel dove N e' il numero di
cambi di colore avvenuti
-
il quadrato resti sempre centrato nel pannello
-
non appena la lunghezza del lato diventa minore o uguale a
zero, l'applicazione termini.