Le trasformazioni Daniele Marini Corso Di Programmazione Grafica aa 2005/2006.

Slides:



Advertisements
Presentazioni simili
Calcolo vettoriale E.F. Orsega – Università Ca’ Foscari di Venezia
Advertisements

Sistema di riferimento sulla retta
Capitolo 4 Trasformazioni Geometriche
Capitolo 8 Sistemi lineari.
Geometria analitica dello spazio
COORDINATE POLARI Sia P ha coordinate cartesiane
LE MATRICI.
Cinematica diretta Un manipolatore è costituito da un insieme di corpi rigidi (bracci) connessi in cascata tramite coppie cinematiche (giunti). Si assume.
Cinematica del braccio di un robot
Scalari e vettori In fisica si lavora con due tipi di grandezze: le grandezze scalari e le grandezze vettoriali. Le grandezze scalari sono quelle grandezze.
Definizione e caratteristiche
a’ = f(a) Definizione e proprietà
ELETTROMAGNETISMO APPLICATO ALL'INGEGNERIA ELETTRICA ED ENERGETICA
Un manipolatore è costituito da un insieme di corpi rigidi (bracci) connessi in cascata tramite coppie cinematiche (giunti) a formare una catena cinematica.
Costruzione di Interfacce Lezione 4 Sistemi di riferimento e trasformazioni
Costruzione di Interfacce Lezione 4 Nozioni di geometria per la grafica
Costruzione di Interfacce Lezione 4 Geometria per la grafica
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Condizionamento dei segnali di misura
Sistema di riferimento su una retta
Moti del corpo rigido 2) Rotazione 3) Rototraslazione 1) Traslazione
Prof. Giovanni Raho A.A Usabilità Informatica Applicata CDL Scienze della Comunicazione scritta ed ipertestuale.
Trasformazioni 2D e 3D Daniele Marini.
Vettori Con che verso a Verso
Lavorare con le matrici in OGL
Spazi vettoriali astratti Somma e prodotto di n-ple Struttura di R n.
Definizione di determinante
Il Piano Cartesiano .
Precorso di Fisica 2011/2012 Facoltà di Agraria
Le proiezioni e la prospettiva
Vettori Finche’ il moto si svolge in una sola dimensione – moto unidimensionale, moto rettilineo – non abbiamo bisogno di vettori La posizione e’ individuata.
Le trasformazioni Daniele Marini.
Le proiezioni e la prospettiva
Le proiezioni e la prospettiva
il moto rotatorio di un corpo rigido
Controllare le proiezioni
Corso Di Programmazione Grafica aa 2007/2008
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Modelli di Illuminazione Modelli locali Daniele Marini Corso Di Programmazione Grafica aa2005/2006.
Quaternioni (continua)
Trasformazioni Daniele Marini.
Trasformazioni in OGL Daniele Marini Davide Gadia Marco Ronchetti Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Corso Di Programmazione Grafica
Rotazioni e quaternioni
Corso Di Programmazione Grafica aa2006/2007
Controllare la prospettiva
Controllare la prospettiva
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-M ö ller Corso di Programmazione Grafica aa2005/2006.
Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.
Shading e smoothing Daniele Marini Corso Di Programmazione Grafica aa2005/2006.
Controllare le proiezioni Daniele Marini Corso Di Programmazione Grafica aa 2007/2008.
Controllare le proiezioni
Vettori dello spazio bidimensionale (R 2)
Sottospazi vettoriali
La retta Equazione (rette parallele agli assi, passanti per l’origine e generiche) Forma esplicita e implicita Condizione di parallelismo e perpendicolarità.
L’equazione della retta
Vettori A B VETTORE è un segmento orientato caratterizzato da: C D
Daniele Marini Con contributi di Maurizio Rossi
MATEMATICA PER L’ECONOMIA e METODI QUANTITATIVI PER LA FINANZA a. a
Prof. Giovanni Ianne I vettori.
1 Lezione XI Avviare la presentazione col tasto “Invio”
A.s Lezioni a cura del Prof.Giovanni Calò Le trasformazioni geometriche Un trasformazione geometrica t è una corrispondenza biunivoca che fa.
a’ = f(a) Definizione e proprietà
angoli orientati negativamente se la rotazione avviene in verso orario
Prof. Cerulli – Dott. Carrabs
Transcript della presentazione:

Le trasformazioni Daniele Marini Corso Di Programmazione Grafica aa 2005/2006

Programmazione Grafica aa2005/20062 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna

Programmazione Grafica aa2005/20063 Richiami di geometria affine Spazio vettoriale lineare: operazioni di somma tra vettori Campo scalare e operazioni prodotto vettore per scalare Spazio affine, due nuove operazioni: –addizione vettore - punto; –sottrazione punto-punto

Programmazione Grafica aa2005/20064 Richiami di geometria affine

Programmazione Grafica aa2005/20065 Richiami di geometria affine

Programmazione Grafica aa2005/20066 Trasformazioni affini Rappresentate tramite matrici Più trasformazioni possono essere combinate moltiplicando le rispettive matrici tra loro, creando una sola trasformazione Una trasformazione si ottiene in generale combinando trasformazioni lineari (rotazioni, scala e shear) seguite da una traslazione

Programmazione Grafica aa2005/20067 Trasformazioni affini La trasformazione affine conserva le rette, sia A un generico operatore, scriviamo in funzione del parametro t un segmento tra i punti p 0, p 1 Possiamo descrivere un poliedro con i suoi vertici, facce e spigoli, questa proprietà ci garantisce che possiamo trasformare soltanto i vertici

Programmazione Grafica aa2005/20068 Definizione degli oggetti Gli oggetti possono essere definiti in un proprio sistema di riferimento locale: i vertici dell’oggetto sono definiti rispetto a un orientamento proprio e naturale un oggetto complesso può essere decomposto in elementi più semplici col proprio riferimento locale e in seguito assemblato aggregando oggetti elementari un oggetto può essere istanziato più volte Per assemblare e istanziare un oggetto si applicano le trasformazioni affini, che cambiano il riferimento locale

Programmazione Grafica aa2005/20069 Tipi di oggetti base Punti –E’ definita l’operazioni di differenza tra punti: produce un vettore Vettori, corispondono all’entità linea –Sono definite le operazioni sopra ricordate Sono definite le operazioni tra punti e vettori sopra ricordate

Programmazione Grafica aa2005/ Tipi di oggetti base - 2 Piani: estensione della rappresentazione parametrica della retta, t,w sono parametri, P, Q ed R sono tre punti, identificano un piano; la retta tra P,Q è: S(t)=tP+(1-t)Q la retta tra S e R è: V(w)=wV+(1-w)S Combinando le due equazioni: V(t,w)=w(tP+(1-t)Q)+(1-w)S

Programmazione Grafica aa2005/ Tipi di oggetti base - 3 Si può riscrivere l’equazione del piano: V(t,w)=P+w(1-t)(Q-P)+(1-w)(R-P) Q-P ed R-P sono due vettori u v, da cui V(t,w)=P+t u +w v Il piano può quindi essere definito da un punto e due vettori non paralleli. Se 0≤t≤1 e 0≤w≤1 tutti i punti di V(t,w) sono interni al triangolo PQR Il vettore ortogonale a u e v è n = u x v quindi l’equazione del piano può essere scritta come: n.(P-Q)=0

Programmazione Grafica aa2005/ Sistemi di coordinate e sistemi di riferimento (frame) Quanto detto fin’ora è indipendente da uno specifico sistema di coordinate La definizione di una base di vettori linearmente indipendenti e unitari permette di identificare un sistema di coordinate Se definiamo i tre versori con una medesima origine identifichiamo un sistema di riferimento (frame)

Programmazione Grafica aa2005/ Un frame standard Lo spazio può essere orientato in due modi: –mano sinistra: avvolgete la mano all’asse x e puntate il pollice verso x a sinistra, z (medio) viene verso di voi e y (indice) va verso l’alto –mano destra: avvolgete la mano all’asse x e puntate il pollice verso x a destra, z (medio) viene verso di voi e y (indice) va verso l’alto In OGL sono definiti molti frames: –Object o model frame –World frame –Eye (camera) frame –Clip coordinates –Normalized device coordinates –Window (screen) coordinates Il passaggio da un frame all’altro avviene tramite trasformazioni

Programmazione Grafica aa2005/ Cambiamento di riferimento Un cambiamento del sistema di riferimento consiste nel cambiare la base di vettori ortonormali con cui un oggetto è definito La nuova base può essere espressa come combinazione lineare della vecchia base: –Vecchia base: v 1 v 2 v 3 –Nuova base: u 1 u 2 u 3 u 1 =a 11 v 1 +a 12 v 2 +a 13 v 3 u 2 =a 21 v 1 +a 22 v 2 +a 23 v 3 u 3 =a 31 v 1 +a 32 v 2 +a 33 v 3 a ij sono i coefficienti delle combinazioni lineari per esprimere la nuova base in funzione della vecchia Le equazioni non sono altro che il risultato del prodotto della matrice dei coefficienti per la vecchia base

Programmazione Grafica aa2005/ Cambiamenti di riferimento Questi cambiamenti di riferimento lasciano invariata l’origine: se vogliamo traslare l’origine, non possiamo rappresentare il cambiamento con una matrice 3x3 elementi. I cambiamenti di base possibili in questo modo sono quindi solo: rotazioni o scala!

Programmazione Grafica aa2005/ Trasformare gli oggetti Le trasformazioni agiscono sui vertici dell’oggetto o come cambiamento di sistema di riferimento Denotiamo i vertici (punti) come vettori colonna v R, T e S rappresentano gli operatori di rotazione, traslazione e scala Il punto trasformato è quindi: v’ = v + T traslazione v’ = S v scala v’ = R v rotazione

Programmazione Grafica aa2005/ Coordinate omogenee Spazio delle classi di equivalenza: ogni punto in coordinate cartesiane 3D corrisponde a infiniti punti nello spazio omogeneo 4D che differiscono solo per un fattore moltiplicativo w: Il passaggio dallo spazio omogeneo allo spazio 3D: solitamente si sceglie w=1

Programmazione Grafica aa2005/ Coordinate omogenee In alto: il generico punto (x,y,z) in coordinate omogenee corrisponde a un unico punto sul piano z=1 In basso: l’operazione di somma in coordinate omogenee dei vettori u,v genera il vettore con estremo in R, che corrisponde anche alla somma in coordinate omogenee dei punto P, Q.

Programmazione Grafica aa2005/ Coordinate omogenee Utilizzando le coordinate omogenee le trasformazioni necessarie alla modellazione possono essere espresse come matrici 4x4 In particolare la traslazione viene espressa come

Programmazione Grafica aa2005/ Traslazione

Programmazione Grafica aa2005/ Rotazione

Programmazione Grafica aa2005/ Rotazione rotazione attorno all’origine rotazione attorno al centro dell’oggetto: prima traslare poi ruotare poi contro-traslare

Programmazione Grafica aa2005/ Scala

Programmazione Grafica aa2005/ Trasformazioni inverse Denotiamo le inverse come: T -1, S -1, R -1 La traslazione inversa si ottiene negando i coefficienti di traslazione La scala inversa si ottiene prendendo il reciproco dei coefficienti La rotazione inversa si ottiene negando l’angolo di rotazione. Nota se M è una matrice ortogonale M -1 = M T

Programmazione Grafica aa2005/ Trasformazione generica del corpo rigido (niente scala!) Per i corpi rigidi la matrice di trasformazione generica può essere espressa come la concatenazione di una traslazione e una rotazione

Programmazione Grafica aa2005/ Trasformazione delle normali La matrice M associata ad un oggetto può essere utilizzata per trasformare punti, linee e poligoni così come vettori direzione Per la trasformazione delle normali invece deve essere utilizzata la matrice N =( M -1 ) T Se la matrice M è ortogonale N =( M T ) T = M Se M è composta da rotazioni, traslazioni e scale uniformi non ho problemi con le normali

Programmazione Grafica aa2005/ Composizione di trasformazioni Si possono applicare trasformazioni in successione, moltiplicando in ordine opportuno le matrici (associatività) v”=M 2 M 1 v = M 2 (M 1 v) =M 2 v’ –la trasf. M 1 viene applicata per prima! ricordiamo che il prodotto di rotazioni non è commutativo: R 2 R 1 ≠ R 1 R 2

Programmazione Grafica aa2005/ Composizione di trasformazioni Possiamo applicare a ogni punto separatamente le matrici: (se ho 1000 punti devo applicare le matrici singolarmente per ognuno) Oppure calcolare prima la matrice M: ABC pq M qp C(B(A))

Programmazione Grafica aa2005/ Le trasformazioni per modellare Da oggetti prototipo a loro “istanze” Tre trasformazioni nell’ordine: –Scala –Rotazione –Traslazione M inst =T(R(S))

Programmazione Grafica aa2005/ Rotazioni: Metodo di Eulero -z y x head pitch roll

Programmazione Grafica aa2005/ Metodo di Eulero Il metodo di Eulero costruisce le trasformazioni come moltiplicazione di matrici di rotazione intorno ai tre assi L’inversa della trasformazione può essere calcolata come Purtoppo la rotazione non è sempre commutativa: R 1 R 2 ≠ R 2 R 1

Programmazione Grafica aa2005/ Gimbal Lock (blocco del giroscopio) Gimbal lock avviene quando le rotazioni sono concatenate in modo tale che un grado di libertà viene perso, ad es quando due assi di rotazione del giroscopi vengono a coincidere. Esempio: –rotazione di 90° intorno all’asse x –volendo ruotare ora intorno a z, a causa della rotazione precedente, otterremo una rotazione intorno a y

Programmazione Grafica aa2005/ Rotazione di Eulero Sviluppiamo la concatenazione delle tre trasformazioni (scriviamo le matrici 3x3 per semplicità)

Programmazione Grafica aa2005/ Gimbal Lock Se eseguiamo una rotazione di 90° attorno a y otteniamo: Abbiamo perso un grado di libertà!

Programmazione Grafica aa2005/ Rotazione attorno a un punto e parallela a un asse Traslare l’oggetto nell’origine, i coefficienti della traslazione T sono riferiti al punto p Ruotare attorno all’origine di un angolo  Traslare inversamente nel punto p M=T -1 RT

Programmazione Grafica aa2005/ Rotazione intorno ad un asse generico Un altro modo per risolvere il problema è di considerare la rototraslazione nell’origine come un cambiamento di sistema di riferimento, cioè di base ortonormale, eseguendo quindi la rotazione attrono al nuovo asse, ad esempio x. x z y r t s x z y r t s x z y r t s

Programmazione Grafica aa2005/ Cambiamento di base Sia r l’asse di rotazione desiderato, troviamo due nuovi versori ortogonali ad r che definiscono un nuovo riferimento. Per trovare il primo vettore ortogonale a r moltiplico r per uno dei versori del frame originale e x|y|z : ci sono due casi possibili: il nuovo vettore è parallelo a r oppure è ortogonale sia ad r sia ad e x|y|z ad es: r x e x = r x (1,0,0) T =(0,r z,-r y )= v

Programmazione Grafica aa2005/ Cambiamento di riferimento Moltiplicando scalarmente il nuovo vettore trovato v.v, se è nullo r e e x sono paralleli, si cerca un altro vettore ortogonale a r e y|z Il vettore trovato sia s Il terzo vettore ortogonale a r ed s si determina con il prodotto vettore tra i due

Programmazione Grafica aa2005/ Rotazione intorno ad un asse generico Il test per valutare il parallelismo tra r ed e x|y|z può essere semplificato come qui indicato Si noti che essendo M ortogonale, la sua inversa è M T