14
1 Interpolare cu funcţii spline Curbele pot fi reprezentate în plan prin: _________________ ________________ ecuaţii explicite: De exemplu y=(r 2 -x 2 ) şi y=-(r 2 -x 2 ) reprezintă un cerc cu centrul în origine, de rază r ecuaţii implicite: x 2 +y 2 =r 2 ecuaţii parametrice: x(t)=r cos t şi y(t)=r sin t Reprezentarea prin ecuaţii explicite, de forma y=f(x) şi nici ecuaţiile implicite nu asigură reprezentarea curbelor având mai multe valori într-un punct (nu sunt funcţii). f(p)=f(x,y)=0 nu tratează corect tangentele verticale la curbă. Formaa parametrică: este mult mai flexibilă permite reprezentarea de curbe care nu sunt funcţii (au mai multe valori într-un punct) este independentă de coordonate Specificarea unei curbe se face prin: puncte de control – mulţime de puncte care influienţează forma curbei noduri – puncte de control care se află pe curbă Un spline este o curbă parametrică definită prin puncte de control. Un spline este o funcţie S:[a, b)R, definită local pe mai multe intervale prin P i :[t i , t i+1 ) R, cu a=t 0 < t 1 <...< t k-1 =b S(t)=P 0 (t), t 0 t < t 1 S(t)=P 1 (t), t 1 t < t 2 S(t)=P k-2 (t), t k-2 t < t k-1 Funcţiile p i (t) sunt de regulă polinoame de grad 3 Nodurile t i se aleg deobicei echidistante, definind un spline uniform Dacă în vecinătatea nodurilor t i , SC ri , atunci spline-ul are netezimea C ri . (adică spline-urile P i-1 şi P i au aceleaşi derivate de ordin 0 până la r i ) Splineul de grad 0 este splineul treaptă, cel de ordin 1 este spline liniar şi coincide cu poligonul punctelor de control. Un spline utilizat – spline-ul cubic natural are gradul 3 şi continuitatea C 2 . În plus, la capete: S”(a)= S”(b) = 0. Splineurile de grad n utilizate în analiza numerică au continuitatea S(t)C n-1 [a,b] Splineurile utilizate în Adobe şi PostScript au continuitatea S(t) C 1 [a,b] Pentru asigurarea continuităţii C 2 , funcţiile spline trebuie să aibă cel puţin gradul 3 Funcţiile spline pot fi: funcţii spline de interpolare – care trec prin toate punctele de control funcţii spline de aproximare – care nu trec prin toate punctele de control () () = = = t y y t x x ) t ( p

ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

1

Interpolare cu funcţii spline

Curbele pot fi reprezentate în plan prin: _________________ ________________

• ecuaţii explicite: De exemplu y=√(r2-x2) şi y=-√(r2-x2)

reprezintă un cerc cu centrul în origine, de rază r • ecuaţii implicite: x2+y2=r2 • ecuaţii parametrice: x(t)=r cos t şi y(t)=r sin t

Reprezentarea prin ecuaţii explicite, de forma y=f(x) şi nici ecuaţiile implicite nu asigură reprezentarea curbelor având mai multe valori într-un punct (nu sunt funcţii). f(p)=f(x,y)=0 nu tratează corect tangentele verticale la curbă. Formaa parametrică:

• este mult mai flexibilă • permite reprezentarea de curbe care nu sunt funcţii (au mai multe valori într-un

punct) • este independentă de coordonate

Specificarea unei curbe se face prin: • puncte de control – mulţime de puncte care influienţează forma curbei • noduri – puncte de control care se află pe curbă

Un spline este o curbă parametrică definită prin puncte de control. • Un spline este o funcţie S:[a, b)→ R, definită local pe mai multe intervale

prin Pi:[ti, ti+1) → R, cu a=t0 < t1 <...< tk-1 =b

S(t)=P0(t), t0 ≤ t < t1 S(t)=P1(t), t1 ≤ t < t2 S(t)=Pk-2(t), tk-2 ≤ t < tk-1

• Funcţiile pi(t) sunt de regulă polinoame de grad 3 • Nodurile ti se aleg deobicei echidistante, definind un spline uniform • Dacă în vecinătatea nodurilor ti, S∈Cri, atunci spline-ul are netezimea Cri.

(adică spline-urile Pi-1 şi Pi au aceleaşi derivate de ordin 0 până la ri) • Splineul de grad 0 este splineul treaptă, cel de ordin 1 este spline liniar şi

coincide cu poligonul punctelor de control. • Un spline utilizat – spline-ul cubic natural are gradul 3 şi continuitatea C2. În

plus, la capete: S”(a)= S”(b) = 0. • Splineurile de grad n utilizate în analiza numerică au continuitatea S(t)∈Cn-1

[a,b] • Splineurile utilizate în Adobe şi PostScript au continuitatea S(t) ∈ C1[a,b] • Pentru asigurarea continuităţii C2, funcţiile spline trebuie să aibă cel puţin gradul 3 • Funcţiile spline pot fi: • funcţii spline de interpolare – care trec prin toate punctele de control • funcţii spline de aproximare – care nu trec prin toate punctele de control •

( )( )⎩

⎨⎧

==

=tyy

txx)t(p

Page 2: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

2

Funcţii spline de interpolare în clasă C1.

Vom alege polinoame de interpolare de grad mic, valabile pe subintervale x0 < x1 < … < xn f(x0),f(x1),…,f(xn)

şi vom considera funcţii de interpolare liniare, locale pe subintervalele [x0,x1],[x1,x2],…,[xn-1,xn] pi(x)=aix+bi, i=0:n-1

în care cei 2n parametri se determină din condiţiile de interpolare: pi(xi)=f(xi), i=0:n-1 pn-1(xn)=f(xn)

şi a condiţiilor de racordare (continuitate în punctele interioare): pi(xi+1)=pi+1(xi+1), i=0:n-2

Interpolarea liniară prezintă dezavantajul discontinuităţii derivatelor în punctele interioare.

Prin alegerea unor funcţii de interpolare de gradul 3 se poate realiza o interpolare Hermite, care presupune şi fixarea valorii derivatelor pe suportul interpolării: f’(x0),f’(x1),…,f’(xn)

O funcţie spline cubică se exprimă sub forma:

( ) ( )1n:0i,

xxxfxf

ai1i

i1ii −=

−−

=+

+

( ) ( )i1i

1iii1ii xx

xfxxfxb

−⋅−⋅

=+

++

Page 3: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

3

Si(x)=ai+bi(x-xi)+ci(x-xi)2+di(x-xi)3

sau parametric

Si(t)=ai+bihit+cihi2t2+dihi3t3, t∈[0,1]

în care s-a notat hi=xi+1-xi şi s-a efectuat schimbarea de variabilă: Baza Bernstein : cu t ∈[0,1] reduce volumul de calcule necesar determinării coeficienţilor.

Avem 2n+2 condiţii de interpolare de tip Hermite: si(xi)=f(xi) s’i(xi)=f’(xi), i=0:n

şi 2n-2 condiţii de racordare (continuitate şi derivabilitate în punctele interioare): si(xi+1)=si+1(xi+1) s’i(xi+1)=s’i+1(xi+1), i=0:n-2

Eroarea interpolării pentru funcţiile spline în clasă C1 este:

Funcţii spline de interpolare în clasă C2.

Considerăm numai n+1 condiţii de interpolare de tip Lagrange: si(xi)=f(xi), i=0:n-1 sn-1(xn)=f(xn)

rezultă: ai=f(xi), i=0:n-1

i

i

i1i

i

hxx

xxxx

t−

=−

−=

+

( ) ( ) ( ) 3223 t,t1t3,t1t3,t1 −−−

( ) ( ) ( ) ( ) 3i

2i

2i

3ii tdt1tc3t1tb3t1ats ′+−′+−′+−′=

( )ii xfa =′ ( ) ( )iiii xf

3h

xfb ′+=′

( )1ii xfd +=′ ( ) ( )1ii

1ii xf3h

xfc ++ ′−=′

( ) ( ) ( ) ( ) ( ) ( ) 31i

21i1i

2iii

3ii tyt1tyhy3t1tyhy3t1yts +++ +−′−+−′++−=

( ) ( ) ( )( )

( ) ( )ξf!2n2

xxxxxE 2n2

2n

20 +⋅

+−−

=K

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )24

ξfht1tξf

!4xxxx

xE4422

42

12

0 −=

−−=

( ) ( ) ( ) ( ) ( )384hM

24ξfh2/12/1

xE4

44422

=≤

( ) nn3

1n1n2

1n1n1n1n1n axfhdhchba ≡=+++ −−−−−−−

( ) n:0i,xfa ii ==

Page 4: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

4

Dispunem de mai multe grade de libertate pentru condiţiile de racordare: continuitatea valorilor şi a derivatelor de ordinul 1 şi 2 în punctele interioare pe care o prelungim cu i=0:n-1, introducând notaţia s-au obţinut astfel 4n-2 relaţii, mai putem impune 2 condiţii suplimentare care definesc funcţiile spline naturale pentru funcţii spline tensionate.

( ) ( )1i1i1ii xsxs +++ =

3ii

2iiiii1i hdhchbaa +++=+

2n:0i −=

( ) ( ) ( )2iiiiii xxd3xxc2bxs −+−+=′

( ) ( )1i1i1ii xsxs +++ ′=′ 2n:0i −=

2iiiii1i hd3hc2bb ++=+

( ) ( )iiii xxd6c2xs −+=′′

( ) ( )1i1i1ii xsxs +++ ′′=′′

iii1i hd3cc +=+

1n1n1nn hd3cc −−− +≡

( ) ( ) 0xS,0xS n1n00 =′′=′′ −

( ) ( ) ( ) ( )nn1n000 xfxS,xfxS ′=′′=′ −

( ) 1n:0i,xfa ii −==

1n:0i,h3

ccd

i

i1ii −=

−= +

1n:1i,h3

c2ch

aab 1i

i1i

1i

1iii −=

++

−= −

( ) ( ) ( )1i

1ii

i

i1i1iiii1i1i1i h

aa3h

aa3chchh2ch

−++−−−

−⋅−

−⋅=⋅+⋅+⋅+⋅

( ) ( ) 0c0xxd6c2xS 0000000 =⇒=−+=′′

( ) 0c0c2hd6c2xS nn1n1n1nn1n =⇒=≡+=′′ −−−−

( )

( )⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

+

+

−−

−−−−

n

1n

1

0

n

1n

1

0

1n

1n1n2n2n

1100

0

g

g

g

g

c

c

c

c

h00

hhh2h

0hhh2h

000h

KKOK

K

K

31n1n

21n1n1n1n1nn hdhchbaa −−−−−−− +++≡

21n1n1n1n1nn hd3hc2bb −−−−− ++≡

Page 5: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

5

Funcţii spline de aproximare Hermite Spline-ul Hermite este un spline cubic, deci dispune de 4 grade de libertate:

• p(t)= at3+bt2+ct +d • p’(t)=3at2+2bt+c

Vom impune ca restricţii valorile la capete şi valorile derivatelor la capete

( ) ( )

( ) ( )

⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢

−−

−−

=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

−−

−−

0h

aa3h

aa3

haa3

haa3

0

g

g

g

g

2n

2n1n

1n

1nn

0

01

1

12

n

1n

1

0

KK

( ) ( ) ( ) ( )002

000000000 xfbxxd3xxc2bxS ′==−+−+=′

( ) ( )0100

0

010 xfcc2

3h

haa

b ′=+−−

=

( )0

0101000 h

aaxf3chch2

−−′=+

( ) ( )nn2

1n1n1n1n1nn1n xfbhd3hc2bxS ′==++=′ −−−−−−

( ) ( )

( ) ,chchcc23

hh

aa

hcchc2bxfb

n1n1n1nn1n1n

1n

1nn

1n1nn1n1n1nnn

−−−−−

−−−−−

+++−−

=−++=′=

( ) ( )1nn1n

nn1n1n1n aah3

xf3ch2ch −−

−−− −−′=+

( )

( )⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

+

+

−−

−−

−−−−

n

1n

1

0

n

1n

1

0

1n1n

1n1n2n2n

1100

00

g

g

g

g

c

c

c

c

h2h0

hhh2h

0hhh2h

00hh2

KKOK

K

K

( ) ( )( ) ( )

( ) ( )

( ) ( )⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

−−′

−−

−−

′−−

=

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

−−

−−

1n

1nnn

2n

2n1n

1n

1nn

0

01

1

12

00

01

n

1n

1

0

haa3

xf3

haa3

haa3

haa3

haa3

xf3h

aa3

g

g

g

g

KK

Page 6: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

6

Definim vectorul de control: p(0)=d a=2p1-2p2+p1’+p2’ p(1)=a+b+c+d b=-3p1+3p2-2p1’-p2’ p’(0)=c ⇒ c=p1’ p’(1)=3a+2b d=p1 În graficul funcţiei componentele vectorului de control apar ponderate cu funcţiile de îmbinare (blending functions):

⎥⎥⎥⎥

⎢⎢⎢⎢

=

'2

'1

2

1

p

p

p

p

q

( ) [ ]⎥⎥⎥⎥

⎢⎢⎢⎢

⋅=+++=

d

c

b

a

1tttdctbtattp 2323

( ) [ ] qMt

p

p

p

p

0001

0100

1233

1122

1ttttp HT

'2

'1

2

1

23 ⋅⋅=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡−−−

⋅=

( ) [ ]⎥⎥⎥⎥

⎢⎢⎢⎢

⋅−+−+−+−=

'2

'1

2

1

23232323

p

p

p

p

tttt2tt3t21t3t2tp

Page 7: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

7

Spline cardinale. Sunt spline Hermite, care nu folosesc derivate, care sunt înlocuite prin diferenţele: Ti=a(Pi+1-Pi-1)

Spline Catmull-Rom.

Sunt spline cardinale cu a=0.5 Ti=0.5(Pi+1-Pi-1) Spline-ul Catmull-Rom are proprietăţile:

• trece prin toate punctele de control (spline de interpolare) • este C1 continuu

Spline Kochanek – Bartels Sunt spline Hermite, folosite de 3d-Studio Max cu control mai bun asupra animaţiei. Calculul tangentelor se face cu relaţiile:

( ) [ ]⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

−−−−

−⋅⋅=

4

3

2

1

32

p

p

p

p

1331

1452

0101

0020

ttt121

tq

( ) [ ]⎥⎥⎥⎥

⎢⎢⎢⎢

⋅−++−+−−+−⋅=

4

3

2

1

23232323

p

p

p

p

tttt4t32t5t3tt2t21

tq

( )( )( ) ( ) ( )( )( ) ( )i1i1iii PP2

b1c1t1PP

2b1c1t1

TS −−+−

+−+−−

= +−

( )( )( ) ( ) ( )( )( ) ( )i1i1iii PP2

b1c1t1PP

2b1c1t1

TD −−−−

+−++−

= +−

Page 8: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

8

Funcţii spline Bézier

Dându-se două puncte P0 şi P1, orice punct de pe segmentul P0P1 reprezintă o curbă Bézier liniară,definită prin:

B1(P0,P1,t)=(1-t)P0+tP1, t∈[0,1]

Curba Bézier pătratică, determinată de punctele P0şi P2 ca puncte de interpolare şi P1 ca punct de aproximare se poate calcula, pentru fiecare t prin 3 interpolări liniare: Pa=B1(P0,P1,t) Pb=B1(P1,P2,t) B2(P0,P1,P2,t)=B1(Pa,Pb,t)=B1(B1(P0,P1,t), B1(P1,P2,t),t) B2(P0,P1,P2,t)=B1[(1-t)P0+tP1, (1-t)P1+tP2] B2(P0,P1,P2,t)=(1-t)[(1-t)P0+tP1]+t[(1-t)P1+tP2] B2(P0,P1,P2,t)=(1-t)2P0+2t(1-t)P1+t2P2, t∈[0,1]

Fonturile TrueType folosesc curbe Bézier pătratice. Patru puncte în plan sau spaţiu definesc o curbă Bézier cubică. Aceasta pleacă din P0, ajunge în P3 şi nu trece prin P1 şi P2. Acestea dau informaţii numai asupra direcţiei

Curba Bézier cubică are forma parametrică:

B(t)= P0(1-t)3+3P1t(1-t)2+3P2t2(1-t)+ P3t3, t∈[0,1]

Postscript şi GIMP folosesc pentru reprezentarea literelor curbe Bézier cubice.

Polinoame Bernstein.

Sunt generate din dezvoltarea polinomului [t+(1-t)]n

Proprietăţile polinoamelor Bernstein:

• Nenegativitatea • Simetria • Maxim unic t=i/n în [0,1]

• Formula de recurenţă

( ) ( ) n:0i,t1ti

ntB inin

i =−⎟⎟⎠

⎞⎜⎜⎝

⎛= −

]1,0(t,0Bni ∈>

( ) ( )t1BtB nin

ni −= −

( ) ( ) ( ) ( ) n:0i,tBttBt1tB 1n1i

1ni

ni =⋅+⋅−= −

−−

Page 9: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

9

• Derivare

Curba Bézier de grad n este definită pentru n+1 puncte: P0, P1,...,Pn prin: se numesc polinoame Bernstein.

• Punctele Pi se numesc puncte de control ale curbei Bézier, iar poligonul P0P1...Pn se numeşte poligon Bézier. Poligonul Bézier conţine în interiorul lui curba Bézier

Proprietăţi ale curbelor Bézier: • proprietatea punctelor de capăt – curba începe în P0 şi se termină în Pn • curba Bézier este lineară numai dacă punctele de control sunt coliniare • curba Bézier este tangentă segmentelor P0P1 şi Pn-1Pn. • o curbă Bézier este conţinută complet în înfăşurătoarea convexă a punctelor de

control. • O curbă Bézier poate fi separată în alte două curbe Bézier. • Transformările afine (translaţia şi rotaţia) aplicată punctelor de control are acelaşi

efect cu aplicarea transformării afine asupra curbei

Curbele Bézier modelează curbele netede în grafica pe calculator. Cele mai folosite sunt curbele Bézier pătratice şi cubice. Acestea sunt folosite ca splineuri Bézier pentru a aproxima alte funcţii

Algoritmul De Casteljau.

Determină un punct de pe curba Bézier. Un mod direct îl constituie aplicarea relaţiei pentru t şi punctele de control date

( ) ( ) ( ) [ ]1,0t,tP...tt1P1

nt1Ptt1P

i

n)t(B n

n1n

1n

0iin

n

0ii ∈++−⎟⎟

⎞⎜⎜⎝

⎛+−=−⎟⎟

⎞⎜⎜⎝

⎛= −−

=∑

( ) ( ) [ ]1,0t,tbPtBn

0in,ii ∈= ∑

=

( ) ( ) n:0i,t1ti

ntb ini

n,i =−⎟⎟⎠

⎞⎜⎜⎝

⎛= −

( ) ( )∑=

=n

0in,ii tbβtB

( ) ( ) ( )( )( )⎪

⎪⎨

=<<−

=−=

−−

−−−

nitnB

ni0tBtBn

0inB

tBdtd

1n1n

1ni

1n1i

1ni

ni

Page 10: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

10

unde bin este baza polinoamelor Bernstein. Metoda nu este stabilă numeric, datorită erorilor în evaluarea polinoamelor Bernstein. Pentru calcul se utilizează relaţia de recurenţă cu B(t0)=β0(n) Fie P0i,i=0:n poligonul punctelor de control P0i şi P0i+1 două puncte succesive şi P1i un punct care împarte segmentul P0iP0i+1 în raportul t/(1-t): P1i=P0i+t(P0i+1-P0i)=(1-t)P0i+tP0i+1

• Se formează în acest fel poligonul P1i, i=0:n-1. • Se aplică algoritmul noului poligon acelaşi algoritm obţinându-se poligonul

P2i,i=0:n-2. Repetând procesul de n ori se obţine un singur punct Pn0. Acest punct este punctul cerut

Algoritmul De Casteljau.

Calculul poate fi exprimat recursiv prin relaţia: Pij=(1-t)Pi-1j+tPi-1j+1, i=1 : n, j=0:n-i

şi implementat ineficient prin:

( ) n:0i,ββ i0i ==( ) ( ) ( ) ( ) n:1j,jn:0i,tβt1ββ 0

1j1i0

1ji

ji =−=+−= −

+−

Page 11: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

11

function b=Castrec(P, u, i, j) if i==1 b=P(1,j); else b=(1-u)*Castrec(P,u,i-1,j)+u*Castrec(P,u,i-1,j+1);

Ineficienţa provine din apelurile recursive repetate. Acestea pot fi evitate urmărind schema de calcul pentru puncte de control succesive.

Spline-urile Bézier folosesc în locul derivatelor două puncte suplimentare de control. Punctele de control suplimentare determină derivatele, şi asigură un control mai eficient decât cel prin derivate

Derivatele la capete (în p1 şi p4)se exprimă se exprimă folosind celelalte două puncte de control prin: p1’=3(p2-p1) p4’=3(p4-p3)

Putem face trecerea între vectorii de control Hermite şi Bézier:

Page 12: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

12

321321BezierHermite G

4

3

2

1

G

2

1

2

1

p

p

p

p

3300

0033

1000

0001

p

p

p

p

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

=

⎥⎥⎥⎥

⎢⎢⎢⎢

∇∇

3214444 34444 21BezierHermite G

4

3

2

1

M

p

p

p

p

3300

0033

1000

0001

0001

0100

1233

1122

d

c

b

a

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡−−−

=

⎥⎥⎥⎥

⎢⎢⎢⎢

321444 3444 21BezierBezier G

4

3

2

1

M

p

p

p

p

0001

0033

0363

1331

d

c

b

a

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

−−

=

⎥⎥⎥⎥

⎢⎢⎢⎢

Funcţiile de îmbinare pentru spline-ul Bézier sunt polinoamele Bernstein B3i, i=0:3

( )

( )( )( )

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

−−

=

4

3

2

1T

3

2

2

3

p

p

p

p

t

t1t3

t1t3

t1

tp

Polinoamele Bernstein au proprietăţile: • sunt pozitive în [0,1] • au suma egală cu 1 • curba este o combinaţie convexă a punctelor de control

Splineurile Bezier se obţin prin joncţiunea de curbe Bezier.

Page 13: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

13

Continuitate C0: P4 = Q1 Continuitate C1 P’4 = Q’1 P4 – P3 = Q2 – Q1 Continuitate C2 P”4 = Q”1 P2-2P3+P4 = Q1-2Q2+Q3 Din cele 3 condiţii rezultă: Q1 = P4 Q2 = 2P4 – P3 Q3 = P2 – 4P3 + 4P4 Cu alte cuvinte pentru cel de-al doilea spline avem un singur grad de libertate.

Spline B Curbele Bezier nu asigură un control local efectiv, în sensul că modificarea punctelor de control afectează în mod global forma curbei Calculul curbelor Bezier este ineficient. Splineurile B asigură un control local mai bun decât splineurile Bezier. Splineurile B sunt de forma:

( ) [ ]

321444 3444 21

44 344 21

splineBsplineB G

4

3

2

1

B

T

32

p

p

p

p

0141

0303

0363

1331

61

ttt1tp

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

−−

⋅⋅=

( ) ( )[ ]⎥⎥⎥⎥

⎢⎢⎢⎢

⋅+++−+−−⋅=

4

3

2

1

33233

p

p

p

p

ttt3t33t4t631t61

tp

Proprietăţile splineurilor B:

1. control local mai bun – fiecare punct de control are efect local 2. continuitate – curba de grad n este Cn-1 continuă 3. aproximare – un spline B nu trece prin nici un punct de control 4. curba este conţinută în poligonul P1P2...Pn+1

Page 14: ă r ţ 2+y2=r2 ţ ş y(t)=r sin t ţ y=f(x) ş ă ţ ă x xt ...swarm.cs.pub.ro/~alexj/facultate/mn/Parial/c6_07.pdf · 1 Interpolare cu funcţii spline Curbele pot fi reprezentate

14

Se pot defini funcţii spline B de ordin superior: ( ) ( ) ( )tN

tttt

tNtt

tttN 1k,1i

1iki

ki1k,i

i1ki

iik −+

++

+−

−+

⋅−−

+⋅−

−=

( )⎩⎨⎧ <<

= +

contrarcazin0

ttt1tN 1ii

1i

NURBS (Spline B Raţionale NeUniforme).

Se definesc prin relaţiile:

( )( )

( )∑=

+

+= n

0j1d,jj

1d,kkk

tNw

tNwtR

În care: Nk,d – este baza funcţiilor B spline wk – sunt ponderi (Au parametric de formă) Proprietăţi:

1. interpolează la capete 2. asigură reprezentări exacte curbelor canonice (cerc, elipsă) 3. sunt invariante la proiecţia perspectivă