Grafica (C.d.S. LM Informatica e Ingegneria Informatica) A.A.2015/16
Frequently Asked Questions"
Su che piattaforma si devono svolgere gli esercizi?
Gli esercizi possono essere svolti in qualsiasi ambiente, Linux, Windows o Mac OS X e su
qualsiasi architettura (fisso, portatile, notebook, ecc.). Se si prevede di consegnare
i propri esercizi il docente li vuole ricevere funzionanti per ambiente Linux.
E il progetto finale?
Anche il progetto finale dovra' essere funzionante per ambiente Linux,
ma precise specifiche verranno date a tempo debito.
Come vanno consegnati gli esercizi assegnati?
Per ogni esercizio si deve consegnare un archivio .tgz (tarato e zippato)
contenente una cartella con il nome dell'esercizio a sua volta contenente
i sorgenti, il Makefile per compilare e un file README di spiega.
Affinche' il docente lo possa visionare velocemente e' necessario che sia
tutto autocontenuto.
E' prevista una deadline per la consegna degli esercizi?
Non c'e' una deadline, ma vanno consegnati di volta in volta che vengono assegnati;
questo per imparare mentre si frequenta, per chi vuole stare in pari.
Altrimenti si puo' consegnare tutto alla fine del corso o prima dell'esame.
Sto usando una macchina virtuale con Linux, ho compilato i codici messi a disposizione
correttamente, quando eseguo ottengo il messaggio:
"no video devices available"
Sulla homepage delle SDL2, nelle FAQs riguardanti Linux, spiega cosa fare in caso di errore
del tipo rilevato.
Nell'ordine: provare
DISPLAY=:0 ; export DISPLAY
se risolve puo' mettere definitivamente nel file .profile questo set della
variabile d'ambiente DISPLAY, cosi' ogni volta che parte verra' settata.
Se continua a non funzionare, provare con xhost+localhost:
(The xhost program is used to add and delete host names or user names to the list
allowed to make connections to the X server.)
recuperi l'indirizzo del suo localhost con
cat /etc/hosts
quindi
xhost seguito dall'indirizzo del localhost
Se ancora non funziona, non saprei cosa altro fare, visto che la terza cosa suggerita
nelle FAQs e cioe' di installare X development libraries perche' non installate
e' praticamente impossibile se si sono installate le SDL2 con apt, che
si porta dietro i pacchetti che servono.
La matrice A di trasformazione di vista nella slide 22 di "Trasformazioni di vista", la matrice che incorpora il view-up vector, e' corretta? Non mi torna che moltiplicandola per la matrice B della stessa slide venga l'identita'.
La matrice A e' corretta; che B*A=I deriva dal fatto che i vettori xe, ye e ze sono fra loro ortogonali per cui facendo riga per colonna, quando si moltiplicano per se stessi viene 1 (sono vettori normalizzati) e quando si moltiplica uno per un altro viene 0 (perche' ortogonali). L'ultima riga della matrice B non e' altro che -D*ze (vettore parallelo a ze, ma di segno opposto), per cui nel prodotto 4^a riga di B per colonne di A si ottiene l'ultima riga della matrice identita'.
Con riferimento al codice persp_cube_sdl.c, come e' definita inizialmente la camera?
La camera e' definita in modo automatico a partire dalla geometria in define_object in modo che sia possibile vedere tutto;
piu' precisamente nella function define_view viene determinata la piu' piccola sfera contenente la geometria (centro
[csx,csy,csz] e raggio r), quindi definendo il piano di proiezione ad una distanza di=D dalla camera (posizione camera
in coord. sferiche [D,teta,fi]), cioe' si assume che il piano di proiezione sia ortogonale alla direzione di vista e
passi per l'origine del sistema di riferimento del mondo, sempre nella define_view si calcola s, semilato della
window in modo che, come detto, attraverso quella window sia visibile tutta la geometria definita.
L'istrizione alpha=atan(S/D) permette, a ritroso, di calcolare la semiampiezza della piramide di vista compatibile
con quella window. Nel seguito del codice, agendo sui bottoni ZoomI e ZoomO si modifica l'angolo alpha e con
l'istruzione s=D*tan(alpha), alla dritta, il semilato della wiondow.