Supponiamo di voler costruire in OpenGL un prisma retto a base
esagonale con la seguente collocazione spaziale e le seguenti misure:
le due basi sono parallele e giacciono rispettivamente sui piani
z=0 e z=4.
le coordinate x-y dei sei vertici di base sono:
(0,-2) (2,-1) (2,1) (0,2) (-2,1) (-2,-1), la coordinata z
dipende ovviamente dalla base di appartenenza.
Si chiede di:
Dire quali tipi di primitive si possono usare per realizzare
il prisma (le due basi e le sei facce laterali)
Scrivere lo pseudo codice OpenGL che realizza il prisma
Se nel codice scriviamo l'istruzione glRotate(90,0,0,1)
posizionata subito prima delle istruzioni che realizzano il
prisma, quale e' l'effetto?
E se invece la scriviamo subito dopo?
Esercizio 2
Consideriamo un'interfaccia per un convertitore lira / euro
e viceversa (1 euro = 1927.36 lire).
Supponiamo che l'interfaccia sia organizzata nel seguente modo:
due campi di testo editabili campo_lire
e campo_euri per l'immissione dell'importo nelle due
valute
due bottoni bott_lire e bott_euri
per invocare la traduzione dell'importo nelle due direzioni
un'area testuale area_mess per messaggi
L'utente scrive liberamente in uno e/o nell'altro campo di input.
Alla pressione del bottone bott_lire "Converti in lire":
se il campo di testo campo_euri
e' non vuoto e contiene un valore
numerico, allora questo valore viene convertito in lire ed il risultato
viene mostrato nel campo di testo campo_lire, soprascrivendone
l'eventuale precedente contenuto;
nell'area area_mess viene mostrato un messaggio che informa
l'utente che la conversione e' avvenuta con successo.
altrimenti, in area_mess viene mostrato un messaggio di errore.
Alla pressione del bottone bott_euri
"Converti in euri" si ha un comportamento simmetrico.
Si richiede di:
Scrivere le callback (o event handler) che
gestiscono il comportamento dell'interfaccia, specificando per ciascuna
il dispositivo a cui e' associata e le istruzioni che ne costituiscono
il corpo.
Come alternativa ai messaggi di successo / errore, si puo' adottare
la convenzione di disabilitare i bottoni quando questi provocherebbero
errore. In questo caso:
in quale situazione bott_lire deve essere disabilitato?
e bott_euri?
che cosa cambia per quanto riguarda le callback (event handler)?
Supporre che il toolkit utilizzato per creare l'interfaccia ammetta
le funzioni usuali per manipolare i vari tipi di dispositivi
(es: assegnare e leggere la stringa contenuta in un campo testuale, ecc.)
e supporre di avere a disposizione funzioni per la
conversione stringa / numero e per controllare se una stringa rappresenta un
numero.
Nello pseudocodice scrivere queste funzioni
in linguaggio naturale oppure indicarle con nomi
significativi,
e indicare chiaramente i loro parametri di ingresso e uscita.