Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini Interpolazione • Essenziale nei problemi di animazione: – date due posizioni “chiave” relative al fotogramma al tempo t0 e al tempo t1 determinare le posizioni intermedie relative a ogni singolo fotogramma – Occorre garantire regolarità nel movimento – Le posizioni possono riguardare oggetti, fotocamera o altro Interpolazione Lineare • Definisce un percorso rettilineo tra due punti in uno spazio n-dimensionale • Una dimensione di interpolazione Interpolazione Lineare t=1 • Data due punti P1 e P2 definisco una funzione nel parametro t[0,1] P(t) = P1 + t (P2 – P1) = (1-t)P1 + t P2 P2 P(t) t=0 P1 Interpolazione Lineare • Nel piano, dati due punti (x1,y1) e (x2, y2) si vuole calcolare (xP, yP) conoscendo il valore di xP y1 x1 y2 yP = ? dy xP y2-y1 x2 Interpolazione Lineare yP y1 dy valgono i rapporti: y2 y1 ( y2 y1 )( xP x1 ) dy dy xP x1 x2 x1 x2 x1 quindi ( y2 y1 )( xP x1 ) yP y1 x2 x1 Interpolazione Bi-lineare • Considero due dimensioni di interpolazione • Utilizzato per esempio all’interno di griglie regolari (es. texture) • Peso i punti con P delle aree 1 A4 P2 A3 P A1 P1 A2 P2 A3 P3 A4 P4 P A1 A2 A3 A4 A2 P3 A1 P4 Interpolazione quadratica e cubica • L’interpolazione lineare calcola i valori intermedi utilizzando l’equazione della retta (grado 1) passante per i due punti • Possiamo considerare anche equazioni di grado più alto (secondo o terzo) per ottenere interpolazioni più precise, ma abbiamo bisogno di più punti Curve parametriche • Quando interpolo tra due punti l’interpolazione lineare è sufficiente • Quando ho più punti posso usare interpolazione lineare tra ogni coppia di punti successivi ma ottengo un percorso che presenta discontinuità di curvatura nei punti Curve parametriche • Per risolvere il problema posso utilizzare una curva di grado stabilito che interpoli o approssimi i punti. • La curva avrà equazione C (t ) f ( P1 , P2 ,..., PN ; t ) t [0, tmax ] • Esistono differenti schemi di costruzione della curva (Bezier, B-Spline, NURBS,etc) Richiami di cinematica • Consideriamo un corpo puntiforme • Velocità media: quantità vettoriale (direzione e modulo) v=Ds/Dt • Velocità instantanea v=limDt0(Ds/Dt)=ds/dt Richiami di cinematica • Dato il vettore velocità per un punto v(x,y,z) e definito l’intervallo di tempo dt • Calcoliamo la nuova posizione s(x,y,z) del punto dovuta allo spostamento nel tempo dt sx sx dt vx (t dt ) (t ) s y dt v y sy (t dt ) (t ) sz dt vz sz ( t dt ) (t ) Animazione su un percorso • Consideriamo un punto P che si muove su di un percorso definito tramite la curva parametrica C(t) • Consideriamo t come parametro temporale per il moto • Il tipo di parametrizzazione della curva influenza il tipo di moto • Per ottenere un moto uniforme dobbiamo considerare una parametrizzazione sulla lunghezza della curva: t [0,len(curva)]