La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Trasformazioni in OGL Daniele Marini. 2 Trasformazioni –Le trasformazioni sono rappresentate da matrici 4x4 (coordinate omogenee) –Applicazione delle.

Presentazioni simili


Presentazione sul tema: "Trasformazioni in OGL Daniele Marini. 2 Trasformazioni –Le trasformazioni sono rappresentate da matrici 4x4 (coordinate omogenee) –Applicazione delle."— Transcript della presentazione:

1 Trasformazioni in OGL Daniele Marini

2 2 Trasformazioni –Le trasformazioni sono rappresentate da matrici 4x4 (coordinate omogenee) –Applicazione delle trasformazioni come moltiplicazione di una matrice per un vettore –Viene mantenuto uno stack delle matrici utilizzate per le trasformazioni

3 3 Trasformazioni in OGL Ci sono due matrici in OGL: –Matrice di modellazione GL_MODELVIEW –Matrice di vista GL_PROJECTION Per selezionare su quale matrice si vuole operare si chiama la funzione glMatrixMode(GL_MODELVIEW| GL_PROJECTION) La matrice di modellazione rappresenta trasformazioni affini con 12 gradi di libertà; definita in spazio omogeneo 4x4

4 4 CTM In OGL cè la nozione di current transformation matrix CTM Essa viene applicata ad ogni vertice definito successivamente alla sua istanziazione Se si cambia la CTM si cambia lo stato del sistema

5 5 CTM La CTM è inizializzata alla identità Per modificarla si può –assegnare nuovi valori ai singoli argomenti –Moltiplicarla per una nuova matrice La CTM è il prodotto della matrice di modellazione per quella di proiezione MODELVIEWPROJECTION CTM vertici

6 6 Trasformazioni –La composizione di trasformazioni equivale alla moltiplicazione delle rispettive matrici –La moltiplicazione di matrici non è commutativa. Quindi lordine con cui vengono applicate le trasformazioni è importante –Ordine corretto M=T(R(S)) corrispondente alle chiamate (post-moltiplicazione): glTranslate(dx,dy,dz); glRotate(angolo,vx,vy,vz); glScale(sx,sy,sz);

7 7 Trasformazioni void glLoadIdentity(); void glTranslate{fd} (TYPE x, TYPE y, TYPE z); void glRotate{fd} (TYPE angle, TYPE x, TYPE y, TYPE z); void glScale{fd} (TYPE x, TYPE y, TYPE z);

8 8 Gestione delle Matrici void glLoadIdentity( void ) –Imposta la matrice corrente allidentità

9 9 Gestione delle Matrici void glPushMatrix( void ) void glPopMatrix ( void ) –Gestiscono lo stack delle matrici –glPushMatrix inserisce la matrice corrente nello stack duplicandola –Lo stack delle matrici può essere utilizzato in maniera gerarchica –La funzione dello stack è di registrare lo stato del sistema per poterlo recuperare È possibile stack overflow!

10 10 Gestione delle Matrici void glLoadMatrixd(GLdouble *m) void glLoadMatrixf(GLfloat *m) Rimpiazza la matrice corrente con la matrice definita tramite larray m void glMultMatrixd(const GLdouble *m) void glMultMatrixf(const GLfloat *m) Moltiplica la matrice corrente con la matrice definita tramite larray

11 11 Gestione delle Matrici I parametri delle funzioni glLoadMatrix e glMultMatrixd sono definiti come array di 16 elementi La matrice viene definita nellarray utilizzando una notazione column-major order


Scaricare ppt "Trasformazioni in OGL Daniele Marini. 2 Trasformazioni –Le trasformazioni sono rappresentate da matrici 4x4 (coordinate omogenee) –Applicazione delle."

Presentazioni simili


Annunci Google