Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

13
Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini

Transcript of Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Page 1: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Interpolazione

Corso di Programmazione Grafica e Laboratorio

Daniele Marini

Page 2: 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

Page 3: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Interpolazione Lineare

• Definisce un percorso rettilineo tra due punti in uno spazio n-dimensionale

• Una dimensione di interpolazione

Page 4: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Interpolazione Lineare

• 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 P1

P2

t=0

t=1

P(t)

Page 5: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Interpolazione Lineare

• Nel piano, dati due punti (x1,y1) e (x2, y2) si vuole calcolare (xP, yP) conoscendo il valore di xP

x1 x2xP

y1

y2yP = ?

dy y2-y1

Page 6: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Interpolazione Lineare

1

2 1 2 1 1

1 2 1 2 1

2 1 11

2 1

valgono i rapporti:

( )( )

quindi

( )( )

P

P

P

PP

y y dy

y y y y x xdydy

x x x x x x

y y x xy y

x x

Page 7: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Interpolazione Bi-lineare

• Considero due dimensioni di interpolazione• Utilizzato per esempio all’interno di griglie

regolari (es. texture)• Peso i punti con

delle aree

P3 P4

P1 P2

P

A1

A3

A2

A4

1 1 2 2 3 3 4 4

1 2 3 4

A P A P A P A PP

A A A A

Page 8: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

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

Page 9: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

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

Page 10: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Curve parametriche

• Per risolvere il problema posso utilizzare una curva di grado stabilito che interpoli o approssimi i punti.

• La curva avrà equazione

• Esistono differenti schemi di costruzione della curva (Bezier, B-Spline, NURBS,etc)

1 2 max( ) ( , ,..., ; ) [0, ]NC t f P P P t t t

Page 11: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Richiami di cinematica

• Consideriamo un corpo puntiforme

• Velocità media: quantità vettoriale (direzione e modulo)

v=s/t

• Velocità instantanea

v=limt0(s/t)=ds/dt

Page 12: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Richiami di cinematica

• Dato il vettore velocità per un puntov(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

( ) ( )

( ) ( )

( ) ( )

t dt tx x x

t dt ty y y

t dt tz z z

s s dt v

s s dt v

s s dt v

Page 13: Interpolazione Corso di Programmazione Grafica e Laboratorio Daniele Marini.

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)]