Laboratorio di Interfacce Grafiche

Esercizio 3 (OpenGL)

Punto di partenza

Partite dal programma esempio Simple3D.java che visualizza una piramide e permette all'utente di fare orbitare il punto di vista attorno alla scena in base a due angoli (latitudine, longitudine).

La scena consiste di un solo oggetto definito gia' in coordinate del mondo e centrato nell'origine. La trasformazione di vista consiste in: rotazione attorno all'asse z (di angolo longitudine), rotazione attorno all'asse x (di angolo latitudine), traslazione per portare il punto di vista ad una certa distanza dalla scena. Notare che nel codice devono essere scritte in ordine inverso.

Importante: per eseguire l'esempio occorre anche compilare BasicGL.java, in quanto Simple3D e' sottoclasse di BasicGL.

(1) Trasformazioni di proiezione

(2) Trasformazioni di modellazione

Suggerimenti

Supponiamo di costruire la scatola usando il quadrato definito da wall cosi' come e' per pavimento e collocando il coperchio sul piano z=1

Le trasformazioni a cui vanno soggette le due primitive per formare pavimento, coperchio e le 4 sponde della scatola sono:

Quello indicato dalle frecce e' l'ordine di ESECUZIONE delle trasformazioni. Ricordare che nel codice OpenGL le trasformazioni vanno scritte in ordine inverso a quello di esecuzione.

Il colore diverso dato alle 6 pareti della scatola aiuta a capire, nel caso, quali pareti non sono collocate al posto giusto.

(3) Display list

(4) Illuminazione