curs spg 2

26
SPG – Curs 2 1 SISTEME DE PRELUCRARE GRAFICĂ Conţinut curs: 1.1.5 Curbe B-spline Curbe B-spline liniare Curbe B-spline pătratice Curbe B-spline cubice uniforme Curbe B-spline cubice neuniforme 1.1.6 Extinderea controlului parametric: curbele NURBS 1.1.7 Divizarea curbelor Divizarea curbelor Bézier cubice Divizarea curbelor B-spline cubice 1.1.8 Conversia între reprezentări 1.1.5 Curbe B-spline Curbele B-spline sunt, ca şi curbele Bézier, curbe de aproximare. Spre deosebire de curbele Bézier ele sunt descrise prin funcţii polinomiale definite pe porţiuni, ceea ce le conferă proprietatea de control local. Segmentele de curbă B-spline sunt descrise în mod obişnuit prin polinoame de grad mic (2 sau 3), gradul fiind independent de numărul punctelor de control. Se folosesc de obicei curbe de gradul 3, deoarece gradul 3 al unei curbe este gradul minim care asigură puncte de inflexiune. Curbele B-spline sunt definite analitic prin ecuaţia vectorială următoare: , 0 () () n i ik i pu PB u = = , (18) unde i P , n i , 0 = sunt puncte de control, în total 1 + n puncte de control, k este ordinul curbei şi ) ( , u B k i sunt funcţii de amestec B-spline de grad 1 k şi ordin de continuitate 2 k . Funcţiile B-spline se definesc recursiv astfel: 1 ,1 1 pentru () 0 în rest i i i u u u B u + = (19) ) ( ) ( ) ( 1 1 1 1 1 u B u u u u u B u u u u u B ,k i i k i k i i,k i k i i i,k + + + + + + = . (20) Valorile i u se numesc valori nodale sau noduri (knots). Valorile nodale trebuie să formeze o secvenţă monoton crescătoare 1 + i i u u . Acestea realizează divizarea domeniului de definiţie a variabilei globale u (pentru întreaga curbă) în subintervale. Aceste valori specifică valoarea parametrului u de la care o funcţie B-spline devine inactivă şi o alta activă. Pot fi valori reale sau întregi (din domeniul de definiţie al lui u ). Dacă i u sunt egal distanţate, spunem că vectorul pe care îl formează este uniform, iar funcţiile B-spline sunt uniforme.

Upload: ana-maria

Post on 11-Aug-2015

123 views

Category:

Documents


6 download

DESCRIPTION

prelucrare grafica

TRANSCRIPT

Page 1: Curs SPG 2

SPG – Curs 2

1

SISTEME DE PRELUCRARE GRAFICĂ

Conţinut curs: 1.1.5 Curbe B-spline Curbe B-spline liniare Curbe B-spline pătratice Curbe B-spline cubice uniforme Curbe B-spline cubice neuniforme

1.1.6 Extinderea controlului parametric: curbele NURBS 1.1.7 Divizarea curbelor Divizarea curbelor Bézier cubice Divizarea curbelor B-spline cubice 1.1.8 Conversia între reprezentări

1.1.5 Curbe B-spline

Curbele B-spline sunt, ca şi curbele Bézier, curbe de aproximare. Spre deosebire de curbele Bézier ele sunt descrise prin funcţii polinomiale definite pe porţiuni, ceea ce le conferă proprietatea de control local. Segmentele de curbă B-spline sunt descrise în mod obişnuit prin polinoame de grad mic (2 sau 3), gradul fiind independent de numărul punctelor de control. Se folosesc de obicei curbe de gradul 3, deoarece gradul 3 al unei curbe este gradul minim care asigură puncte de inflexiune. Curbele B-spline sunt definite analitic prin ecuaţia vectorială următoare:

,0

( ) ( )n

i i ki

p u P B u=

=∑ , (18)

unde iP , ni ,0= sunt puncte de control, în total 1+n puncte de control, k este ordinul curbei şi )(, uB ki sunt funcţii de amestec B-spline de grad 1−k şi ordin de continuitate

2−k . Funcţiile B-spline se definesc recursiv astfel:

1,1

1 pentru( )

0 în resti i

iu u u

B u +≤ ≤=

(19)

)()()( 111

11

uBuu

uuuB

uuuu

uB ,kiiki

kii,k

iki

ii,k −+

++

+−

−+ −−

+−

−= . (20)

Valorile iu se numesc valori nodale sau noduri (knots). Valorile nodale trebuie să formeze o secvenţă monoton crescătoare 1+≤ ii uu . Acestea realizează divizarea domeniului de definiţie a variabilei globale u (pentru întreaga curbă) în subintervale. Aceste valori specifică valoarea parametrului u de la care o funcţie B-spline devine inactivă şi o alta activă. Pot fi valori reale sau întregi (din domeniul de definiţie al lui u ). Dacă iu sunt egal distanţate, spunem că vectorul pe care îl formează este uniform, iar funcţiile B-spline sunt uniforme.

Page 2: Curs SPG 2

SPG – Curs 2

2

Pentru o curbă B-spline deschisă, vectorul uniform al valorilor nodale (nodurilor) este definit astfel:

n i knu

ni k kiu k i u

i

i

i

>+−=≤≤+−=

<=

, pentru 2, pentru 1

, pentru 0 (21)

unde kni +≤≤0 . Deci, în cazul curbelor B-spline uniforme )(, uB ki , de grad 1−k , avem 1++ kn valori nodale. Din relaţiile (21) rezultă că domeniul de definiţie al variabilei parametrice (variabilă nenormată) este: 20 +−≤≤ knu . (22)

Curbe B-spline liniare În acest caz gradul curbei este 1, ordinul este 2=k şi pentru funcţiile de amestec

)(2, uBi obţinem:

)()()( 1112

21

12 uB

uuuuuB

uuuuuB ,i

ii

ii,

ii

ii, +

++

+

+ −−

+−

−= ,

adică

≤≤−−

≤≤−

=

++++

+

++

. pentru

, pentru)(

2112

2

11

2

iiii

i

iiii

i

i,uuu

uuuu

uuuuu

uu

uB (23)

Se observă că )(2, uBi este nenulă pe două intervale consecutive. Dacă rescalăm (normăm) intervalele [ ]1, +ii uu , respectiv [ ]21, ++ ii uu la intervalul [ ]1,0 , atunci funcţiile de amestec

)(2, uBi se scriu:

10 1)(

,)()(

12 ≤≤

−=

==

uuuB

uuBuB

li

li

i, (24)

Figura 7 Funcţii B-spline uniforme de gradul 1

u

liB

1liB −

1 0

1 ,2iB

u

liB

1liB −

1 0

1 ,2iB

2 1iu + iu 2iu +

Page 3: Curs SPG 2

SPG – Curs 2

3

În figura 7 prezentăm funcţiile B-spline uniforme de gradul 1 pentru variabila parametrică normată, a), şi nenormată b).

În cazul în care considerăm că intervalele [ ]1, +ii uu , respectiv [ ]21, ++ ii uu sunt rescalate la intervalul [ ]1,0 , respectiv [ ]2,1 , atunci relaţia (24) o putem scrie:

( )

21 211)(

10 ,)()(

12

≤≤−=−−=

≤≤==

− uuuuB

uuuBuB

li

li

i, (25)

Curbe B-spline pătratice În acest caz gradul curbei este 2 şi ordinul este 3=k . Din relaţiile de definiţie (19-

20) se obţine (pentru variabila parametrică normată):

( )( ) ( )

10

12112

21)(

,12221)(

,21)(

)(

222

21

2

3 ≤≤

−=+−=

++−=

=

=

− u

uuuuB

uuuB

uuB

uB

pi

pi

pi

i, (26)

Sau, în cazul variabilei u nenormate, cu intervalele [ ]1, +ii uu , [ ]21, ++ ii uu respectiv [ ]32 , ++ ii uu rescalate la intervalul [ ]1,0 , [ ]2,1 respectiv [ ]3,2 , avem :

( ) ( )[ ]( )[ ]

32 2121)(

21 ,1121221)(

10 ,21)(

)(

22

21

2

3

≤≤−−=

≤≤+−+−−=

≤≤=

=

uuuB

uuuuB

uuuB

uB

pi

pi

pi

i, (27)

Se observă că 3,iB este diferită de zero pe 3 intervale consecutive.

Page 4: Curs SPG 2

SPG – Curs 2

4

a) b) Figura 8. Funcţii B-spline uniforme de grad 2 a) normate, b) nenormate

În general, din relaţiile de definiţie (19) şi (20) rezultă că o funcţie B-spline kiB , este nenulă numai pe k intervale consecutive.

Curbe B-spline cubice uniforme În cazul curbelor B-spline cubice uniforme avem 4=k ( 31 =−k – gradul curbei)

şi ordinul de continuitate este 22 =−k . Din relaţiile de definiţie ale funcţiilor de amestec (relaţiile (19) şi (20)) rezultă că pentru 4=k obţinem 4 funcţii B-spline, care vor fi diferite de zero pe 4 intervale. Aceste funcţii vor constitui o bază cu care se construieşte fiecare segment al curbei, respectiv toată curba.

Pentru o secvenţă de puncte de control iP (patru puncte de control), ecuaţia segmentului )(upi al unei curbe B-spline este (ecuaţie vectorială):

3

3 30

( ) ( )ci i j i j

jp u P B u− + − +

== ∑ (28)

sau )()()()()( 112233 uBPuBPuBPuBPup c

iicii

cii

ciii +++= −−−−−− (29)

unde: - i reprezintă numărul segmentului de curbă, 3≥i ; - j este indexul punctului de control local, adică este indexul pentru segmentul i ; - [ ]1,0∈u în cazul segmentului dat (variabila u este normată).

Funcţiile cubice B-spline c

jiB +−3 se obţin din relaţiile (19) şi (20). Considerăm variabila u normată pe intervalul de definiţie şi atunci expresiile funcţiilor B-spline cubice sunt:

u

piB

2p

iB −

1 0

34

,3iB

12

1p

iB −

0,5 u

piB 2

piB −

2 0

34

,3iB

12

1p

iB −

1 3 3iu + 2iu + 1iu + iu

Page 5: Curs SPG 2

SPG – Curs 2

5

( )( )( )

3

3 21

,43 2

2

33

1( )61( ) 3 3 3 16( )1( ) 3 6 461( ) 16

ci

ci

ici

ci

B u u

B u u u uB u

B u u u

B u u

= = − + + +

= = − + = −

[ ]1,0∈u , (30)

Reprezentarea grafică a acestor funcţii pe intervalul [0,1] (pentru variabila u normată) este dată în figura 9.

Fig. 9 Funcţiile de amestec B-spline cubice pentru variabila u normată În continuare deducem forma geometrică a unui segment de curbă cubică B-spline. Segmentul de curbă )(upi al unei curbe B-spline poate fi scris şi sub forma matricială. Din relaţia (29) rezultă:

[ ] )(),(),(),()(1

2

3

123

⋅=−

−−−

i

i

i

i

ci

ci

ci

cii

PPPP

uBuBuBuBup (31)

Înlocuind funcţiile de bază în relaţia (31) obţinem:

[ ]

⋅+++−+=−

i

i

i

i

i

PPPP

uu-uuuu-uuu-up1

2

3

3323232 ,3331,364,33161)( ⇒

ciB 1− c

iB 2−

ciB 3− c

iB

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 u

64

61

Page 6: Curs SPG 2

SPG – Curs 2

6

[ ]

−−

−−

⋅⋅=−

i

i

i

i

i

PPPP

uuuup1

2

3

23

0141030303631331

611,,,)( (32)

Deci forma geometrică matricială este: SSi GMUup ⋅⋅=)( , (33) în care

−−

−−

⋅=

0141030303631331

61

SM (34)

este matricea de bază B-spline şi [ ]T

iiiiS PPPPG 123 −−−= (35) reprezintă vectorul (matricea) condiţiilor geometrice. O curbă B-spline cubică este compusă din 2−n segmente, notate 3p , 4p , ..., np , controlate de 1+n puncte de control 0P , 1P , ..., nP ( 3≥n ). Fiecare segment al curbei este definit de 4 puncte de control, iar fiecare punct de control influenţează numai 4 segmente de curbă. Aceasta este proprietatea de control local al curbelor B-spline.

Un segment de curbă B-spline prezintă continuitate de ordin 0, 1 şi 2. Curba totală, care este compusă din cele 2−n segmente, are ecuaţia (vezi relaţia (18)):

∑=

=n

ii,i uBPup

04 )()( . (36)

În relaţia anterioară i este numărul unui punct de control, deci ni ,0= .

Funcţia B-spline )(4, uBi este diferită de zero pe 4 subintervale şi are expresia:

( ) ( ) ( )[ ]( ) ( )[ ]( )[ ]

≤≤−−=

≤≤+−−−=

≤≤+−+−+−−=

≤≤=

=

u uuB

u uuuB

u uuuuB

uuuB

uB

ci

ci

ci

ci

i,

43 .3161)(

32 ,4262361)(

21 ,113131361)(

10 ,61)(

)(

33

232

231

3

4 (37)

Page 7: Curs SPG 2

SPG – Curs 2

7

În această relaţie s-a considerat cazul funcţiilor B-spline uniforme şi s-au rescalat cele patru intervale 1+≤≤ ii uuu , 21 ++ ≤≤ ii uuu , 32 ++ ≤≤ ii uuu , 43 ++ ≤≤ ii uuu la

10 ≤≤ u , 21 ≤≤ u , 32 ≤≤ u , 43 ≤≤ u . Graficul pentru funcţia 4,iB este reprezentat în fig. 10.

Fig. 10 Funcţia B-spline )(4, uBi pentru variabila parametrică nenormată

În figura 11 este reprezentat un singur segment de curbă B-spline, uniformă, definit de 4 puncte de control şi de 4 funcţii de bază )(4,0 uB , )(4,1 uB , )(4,2 uB , )(4,3 uB .

Fig. 11 Segment de curbă B-spline În figura 12 este reprezentată o curbă B-spline uniformă, compusă din trei

segmente.

iu

ciB 3−

ciB 6

1

u

ciB 1− c

iB 2−

31

21

32

0 1+iu 2+iu 3+iu 4+iu

0 1 2 3 4

4,iB

Page 8: Curs SPG 2

SPG – Curs 2

8

Fig. 12 Curbă B-spline uniformă compusă din 3 segmente Se observă că, spre deosebire de curbele Bezier, curbele B-spline uniforme nu interpolează punctele de control de la capete.

Din relaţiile de definiţie (19), (20) şi din relaţiile (37) se observă că, în cazul unor funcţii B-spline uniforme, fiecare funcţie este o copie translată a unei funcţii de bază. De exemplu:

)1()( 4,4,1 −=+ uBuB ii ,

)2()( 4,4,2 −=+ uBuB ii ,

)3()( 4,4,3 −=+ uBuB ii , etc. În cazul unui segment, avem numai 4 puncte de control 0P , 1P , 2P şi 3P . Numărul de noduri (valori nodale) este 851 =+=++ nkn . Reprezentăm aceste 8 noduri şi analizăm intervalele pe care sunt active funcţiile de bază 4,0B , 4,1B , 4,2B , 4,3B (fig. 13).

Fig. 13 Funcţiile de bază B-spline uniforme pentru un segment În intervalul de definiţie [ ]1, +ii uu (intervalul corespunzător lui [ ]4,3 din fig. 13) al unui segment de curbă sunt active patru funcţii de bază iar suma lor este egală cu 1, celelalte funcţii nu mai contribuie la obţinerea segmentului respectiv (fig. 13).

Curba B-spline din figura 11 (compusa dintr-un singur segment 3p ) are expresia: )()()()()( 433422411400 uBPuBPuBPuBPup ,,,, +++= . (38)

u

)(4,0 uB

0 1 2 3 4 5 6 7

)(4,1 uB )(4,2 uB )(4,3 uB

cB0 cB3

cB1

cB2

Page 9: Curs SPG 2

SPG – Curs 2

9

De asemenea, putem scrie:

)()()( 33221100

3

03 upBPBPBPBPuBPup cccc

j

cjj =+++== ∑

=

Curba din figura 12, dată prin 6 puncte de control ( 5=n ), este compusă din 3 segmente şi are ecuaţia:

∑=

=5

04 )()(

ii,i uBPup . (39)

Dacă scriem curba exprimând separat cele trei segmente rezultă:

3p este determinat de punctele 3210 ,,, PPPP şi funcţiile cccc BBBB 3210 ,,, ;

4p este determinat de punctele 4321 ,,, PPPP şi funcţiile cccc BBBB 4321 ,,, ;

5p este determinat de punctele 5432 ,,, PPPP şi funcţiile cccc BBBB 5432 ,,, . Faptul că segmentele de curbă adiacente au trei puncte de control comune asigură continuitatea de ordin 0, 1 şi 2. Funcţiile de amestec B-spline sunt diferite de zero pe 4 intervale succesive iu , 1+iu , 2+iu , 3+iu .

Deoarece 5=n , numărul valorilor nodale este 1051 =+=++ nkn . Funcţiile de bază B-spline uniforme pentru o curbă compusă din trei segmente ( 3p , 4p , 5p ) sunt reprezentate în figura 14.

Fig. 14 Funcţiile de bază B-spline uniforme pentru o curbă formată din 3 segmente Din cele prezentate anterior deducem că punctele nodale iu sunt puncte de adiacenţă între funcţiile de bază 4,iB . Ele specifică valoarea parametrului u de la care o funcţie devine inactivă şi alta activă. Pentru un segment se folosesc 4 funcţii de bază, fiecare funcţie fiind activă pe 4 intervale ale parametrului u . Un segment este definit peste 8 noduri. Pentru o curbă ce conţine 2−n segmente, avem 5+n noduri ( 1n k+ + , dar

4)k = . Principalul dezavantaj al curbelor B-spline uniforme este că nu interpolează punctele de control de la capete.

u

)(4,0 uB

0 1 2 3 4 5 6 7

)(4,1 uB )(4,2 uB )(4,3 uB )(4,4 uB )(4,5 uB

8 9

3p 4p 5p

Page 10: Curs SPG 2

SPG – Curs 2

10

Curbe B-spline cubice neuniforme Din definiţie rezultă că forma funcţiilor de bază kiB , este determinată numai de spaţiul relativ între noduri ( )knuuu +,,, 10 . Scalarea sau translaţia vectorului nodurilor nu are efect asupra formei funcţiilor de bază. În general, vectorul valorilor nodale poate fi: uniform, uniform deschis sau neuniform. Vectorul uniform este vectorul pentru care

constuu ii =−+1 , de exemplu {0, 1, 2, 3, 4, 5, 6, 7} ( 4, 3)k n= = . Vectorul uniform deschis este vectorul uniform care are k valori egale la început şi la sfârşit, de exemplu {0, 0, 0, 0, 1, 2, 3, 3, 3, 3} ( 4, 5)k n= = . Vectorul neuniform este vectorul pentru care se impune numai cerinţa 1+≤ ii uu .

O curbă B-spline neuniformă este o curbă în care intervalele parametrice (ale lui u ) între două noduri succesive nu sunt neapărat egale. Acest lucru înseamnă că funcţiile de amestec nu mai sunt translate una faţă de cealaltă, ci variază de la un interval la altul. Forma obişnuită a curbelor B-spline neuniforme este aceea în care unele intervale între noduri sunt nule, adică nodurile sunt multiple. Faptul acesta permite interpolarea tuturor punctelor de control (capete sau intermediare). Curbele din figurile 11 şi 12 sunt curbe B-spline uniforme, deoarece nodurile sunt dispuse uniform pe axa parametrului u , valorile lor fiind: {0, 1, 2, 3, 4, 5, 6, 7} pentru un segment şi {0, 1, 2, 3, 4, 5, 6,7, 8, 9} pentru o curbă formată din trei segmente. Putem modifica poziţia nodurilor pe axa lui u , astfel încât să interpolăm, de exemplu, punctele de control de la capete. Interpolarea este asigurată prin multiplicitatea nodurilor. Pentru curba din figura 15a valorile nodale sunt {0, 0, 0, 0, 1, 1, 1, 1}, iar pentru cea din figura 15b valorile nodale sunt {0, 0, 0, 0, 1, 2, 3, 3, 3, 3}.

a) b)

Fig. 15 Curbe B-spline neuniforme: a) cu 4 puncte de control; b) cu 6 puncte de control Curba din fig. 15a este de fapt o curbă Bézier. În cazul curbei din figura 15a, în care avem 4 puncte de control, reprezentarea funcţiilor de bază pentru acest segment este dată în figura 16. Deci curbele Bézier sunt cazuri particulare ale curbelor B-spline.

0P

1P

3P

2P

0P

1P 2P

3P

5P

4P

Page 11: Curs SPG 2

SPG – Curs 2

11

Figura 16. În cazul curbei din figura 15b, în care avem 6 puncte de control, funcţiile de bază sunt date în figura 17.

Figura 17 Observaţie. Dacă valorile nodale iu , 1+iu , 2+iu , 3+iu sunt identice curba trece prin punctul i (pentru curbe de grad 3). În general, pentru o curbă de grad m , dacă valorile nodale iu , 1+iu , 2+iu , ..., miu + sunt identice, curba trece prin punctul i . Observaţie. În exemplele de mai sus s-au considerat cazuri în care unele intervale sunt nule iar celelalte sunt egale. În figura 18 se consideră curba dată de cele 6 puncte de control din figura 15b, dar intervalele diferite de zero nu le mai luăm egale. Se observă că forma curbei se modifică şi de asemenea şi forma funcţiilor de bază (fig. 19).

0,4B

1,4B 2,4B

3,4B

3 4 u

6 u 5 4 3

0,4B 5,4B

1,4B 2,4B 3,4B 4,4B

Page 12: Curs SPG 2

SPG – Curs 2

12

Fig. 18

Fig. 19 Proprietăţi ale curbelor B-spline 1. Puncte de control multiple. O curbă B-spline de grad m trece întotdeauna printr-un punct de control de multiplicitate m . Deci se poate forţa trecerea unei curbe B-spline printr-un punct de control introducând punctul respectiv în vectorul punctelor de control pe mai multe poziţii succesive. 2. Puncte de control coliniare. Dacă 1+m puncte de control succesive sunt situate pe o dreaptă, atunci curba B-spline de grad m va fi situată parţial pe dreapta respectivă. 3. Curbe închise. Pentru a obţine o curbă B-spline de grad m închisă este suficient ca primele m puncte de control să fie identice cu ultimele m . 4. Proprietatea de închidere convexă (convex hull). Orice curbă B-spline este complet inclusă în poligonul convex format prin unirea punctelor de control. 5. Invarianţa afină. Pentru a transforma o curbă B-spline este suficient să se aplice transformarea (afină) punctelor de control şi apoi să se regenereze curba. Această proprietate o au şi curbele Bézier.

1P

0P

2P

3P

4P

5P

0,4B 5,4B

1,4B 2,4B 3,4B

4,4B

6 u 5 4 3

Page 13: Curs SPG 2

SPG – Curs 2

13

Exemple de curbe B-spline:

Cubic B-spline (n=5, k=4)

Page 14: Curs SPG 2

SPG – Curs 2

14

1.1.6 Extinderea controlului parametric: curbele NURBS Unele extinderi importante ale curbelor B-spline permit controlul formei atât prin poziţia punctelor de control cât şi prin alţi parametri. Curbele B-spline neuniforme raţionale (NURBS - Non Uniform Rational B-Spline) extind curbele B-spline neuniforme prin adăugarea unui parametru suplimentar fiecărui punct de control. Fiecare punct de control se reprezintă într-un sistem cu 4 coordonate, coordonata suplimentară w fiind un parametru care ponderează efectul fiecărui punct de control: ( )iiiiiiii w,zw,ywxwP ,= (40) O curbă B-spline raţională este definită prin ecuaţia vectorială:

0

0

0

( )( ) ( )

( )

n

i i i,k ni

i i,kni

i i,ki

P w B up u P R u

w B u

=

=

=

= =∑

∑∑

, (41)

unde

∑=

= n

ii,ki

i,kii,k

uBw

uBwR

0)(

)(. (42)

Se observă că pentru 1=iw , deoarece ∑=

=n

ii,k uB

01)( , se obţine o curbă B-spline

neraţională.

1.1.7 Divizarea curbelor

Metodele de vizualizare a curbelor parametrice prezentate în paragrafele anterioare presupun calculul unei succesiuni de puncte de pe curba de vizualizat, prin eşantionarea intervalului ]1,0[ cu un pas constant. O altă metodă de a obţine punctele prin care poate fi

Page 15: Curs SPG 2

SPG – Curs 2

15

aproximată o curbă parametrică constă în divizarea recursivă a curbei. Metoda se aplică şi pentru determinarea intersecţiei unei curbe parametrice cu un alt obiect (dreaptă, curbă, suprafaţă, etc.). Se începe cu calculul punctului de pe curbă corespunzător valorii 0.5 a variabilei parametrice; rezultă două segmente de curbă. În continuare se calculează punctul de mijloc pentru fiecare dintre cele două jumătăţi, şi aşa mai departe. Calculul continuă până când segmentele de curbă la care s-a ajuns satisfac un anumit criteriu (de exemplu, pot fi aproximate prin segmente de dreaptă, fiecare se reprezintă printr-un singur pixel, etc.). Considerăm o curbă parametrică cubică (oricare din cele discutate anterior) descrisă prin ecuaţia: [ ] GMuuuuC ⋅⋅= 1)( 23 10 ≤≤ u (43) Divizăm curba în două părţi: una corespunzătoare lui 5.00 ≤≤ u şi una corespunzătoare lui 15.0 ≤≤ u (figura 20).

Figura 20 Pentru prima jumătate introducem variabila parametrică 1u , care va lua valori de la 0 la 1. Ecuaţia curbei devine:

[ ] =⋅⋅

⋅=

= GMuuuuCuC

8000040000200001

181

2)( 1

21

31

111

[ ] GMSUGMSuuu ⋅⋅⋅=⋅⋅⋅= 111

21

31 1 110 ≤≤ u . (44)

cu

⋅=

8000040000200001

81

1S .

Dar ecuaţia curbei poate fi scrisă şi în forma:

u

0u =

1u = 0,5u =

1u

2u

Page 16: Curs SPG 2

SPG – Curs 2

16

[ ] 111

21

3111 1)( GMUGMuuuuC ⋅⋅=⋅⋅= (45)

unde 1G este matricea coeficienţilor geometrici pentru prima jumătate a curbei. Identificând cele două expresii ale curbei 1C rezultă:

GMSGM ⋅⋅=⋅ 11 ⇒ GMSMG ⋅⋅⋅= −1

11

Notăm: MSMH ⋅⋅= −

11

1 (46) matricea de divizare pentru prima jumătate a curbei. Ea permite calculul matricei coeficienţilor geometrici ai primei jumătăţi de curbă plecând de la matricea coeficienţilor geometrici ai curbei originale, deci: GHG ⋅= 11 (47) Matricea 2H , pentru a doua jumătate a curbei, se obţine înlocuind în ecuaţia curbei originale pe u cu ( ) 212 +u :

[ ] 2222

23

22

22 12

1)( GMUGMSuuuuCuC ⋅⋅≡⋅⋅⋅=

+

= (48)

unde

=

8421044300230001

81

2S

Matrice de divizare pentru a doua jumătate a curbei este: MSMH ⋅⋅= −

21

2 (49) deci GHG ⋅= 22 (50) Obs. Matricele de divizare sunt constante pentru o anumită curbă.

Subdivizarea se aplică recursiv, continuându-se cu cele două jumătăţi de curbă obţinute în prima etapă, apoi cu jumătăţile obţinute în a doua etapă, ş.a.m.d., până la satisfacerea criteriului impus. În continuare vom aplica metoda pentru curbe Bézier şi B-spline de grad 3.

Page 17: Curs SPG 2

SPG – Curs 2

17

a) Divizarea curbelor Bézier cubice

Pentru curbele Bézier matricea M este:

1 3 3 13 6 3 03 3 0 0

1 0 0 0

BM

− − − = −

Rezultă:

=

8183838104142410021210001

1H

=

100002100414241081838381

2H (51)

Considerăm curba Bézier determinată de condiţiile geometrice: [ ]TPPPPG 3210= . Folosind matricea de divizare 1H obţinem, pentru prima jumătate a curbei,

[ ]TSSSSG 32101 = , următoarele puncte de control:

0 0

1 0 1

2 0 1 2

3 0 1 2 3

1 12 21 1 14 2 41 3 3 18 8 8 8

S P

S P P

S P P P

S P P P P

=

= +

= + +

= + + +

(52)

ş.a.m.d. Se poate constata simplitatea şi eficienţa metodei de calcul a punctelor de control

care determină cele două jumătăţi obţinute prin divizare, prin faptul că singurele operaţii care intervin în aceste calcule sunt adunări şi împărţiri cu numere care sunt puteri ale lui 2 ( )814183 += . La acelaşi rezultat se ajunge urmând procedura redată în figura 21.

Figura 21 Divizarea curbelor Bézier cubice

0P 3P

1P 2P

A

B

C D E F

Page 18: Curs SPG 2

SPG – Curs 2

18

Punctele FEDCBA ,,,,, se calculează astfel:

( )1021 PPA += ( )212

1 PPB += ( )3221 PPC +=

( )BAD +=21 ( )CBE +=

21 ( )EDF +=

21

Se observă că: 00 PS = , AS =1 , DS =2 , FS =3 . Deci condiţiile geometrice pentru primele două jumătăţi sunt (vezi (52)): [ ]TFDAPC 01 = , [ ]TPCEFC 31 = . Se vede că numai prin 6 adunări (de vectori 2D sau 3D) şi 6 împărţiri prin 2 se obţin toate punctele de control rezultate la o divizare a curbei.

Obs. Punctul F este punct de pe curbă deoarece curba Bezier interpolează primul şi ultimul punct de control. Continuând divizarea, până când se obţine satisfacerea criteriului impus, se obţin punctele dorite de pe curba Bezier.

b) Divizarea curbelor B-spline cubice Considerăm o curbă B-spline determinată de punctele de control nPPP ,,, 10 .

Segmentul )(upi ( ni ,,3= ) este determinat de punctele de control iiii PPPP ,,, 123 −−− (figura 22).

Figura 22 Deci, pentru segmentul considerat, condiţiile geometrice sunt:

[ ]3 2 1T

i i i iG P P P P− − −= . Matricea M este matricea de bază B-spline:

3iP−

2iP− 1iP−

iP

( )ip u

Page 19: Curs SPG 2

SPG – Curs 2

19

1 3 3 13 6 3 01

6 3 0 3 01 4 1 0

SM

− − − = ⋅ −

Pentru matricele de divizare se obţine:

=

1610044001610044

81

1H ,

=

4400161004400161

81

2H (53)

Pentru punctele de control ale primei jumătăţi [ ]Tiiii SSSSG 1231 −−−= se obţine:

GHG ⋅= 11 ⇒

[ ] [ ]TiiiiT

iiii PPPPHSSSS 1231123 −−−−−− ⋅= iar pentru ale celei de-a doua jumătăţi [ ]Tiiii QQQQG 1232 −−−= avem: GHG ⋅= 22 ⇒

[ ] [ ]TiiiiT

iiii PPPPHQQQQ 1232123 −−−−−− ⋅= Efectuând calculele din relaţiile anterioare rezultă: 23 −− = ii SQ , 12 −− = ii SQ , ii SQ =−1 . De exemplu, pentru o curbă dată prin 6 puncte de control, punctele determinate pentru prima jumătate a curbei sunt: 0S , 1S , 2S , 3S , 4S , 5S , iar pentru cea de-a doua jumătate

0Q , 1Q , 2Q , 3Q , 4Q , 5Q , unde 30 SQ = , 41 SQ = , 52 SQ =

Rezultatul obţinut prin calcul matricial se poate obţine şi prin procedura redată în figura 23.

Page 20: Curs SPG 2

SPG – Curs 2

20

0P

1P

2P

3P

4P

5P 0E

1E

2E 3E

4E

5E

6E 7E

8E

0F 1F

2F

3F

Figura 23

( )100 21 PPE += , ( )212 2

1 PPE += , ( )324 21 PPE += , ( )436 2

1 PPE += , ( )548 21 PPE += ;

( )200 21 EEF += , ( )421 2

1 EEF += , ( )642 21 EEF += , ( )863 2

1 EEF += ;

( )011 21 FPE += , ( )123 2

1 FPE += , ( )235 21 FPE += , ( )347 2

1 FPE +=

Rezultă:

00 ES = , 11 ES = , 22 ES = , 33 ES = , 44 ES = , 55 ES = ;

30 EQ = , 41 EQ = , 52 EQ = , 63 EQ = , 74 EQ = , 85 EQ = . Se observă că toate punctele de control ale celor două jumătăţi se obţin prin 13 adunări (de vectori 2D sau 3D) şi 13 împărţiri la 2.

1.1.8 Conversia între reprezentări Considerăm un segment de curbă cubică )(uC dat prin forma geometrică:

GMUuC ⋅⋅=)( . Reprezentarea echivalentă a sa (utilizând alt tip de curbă cubică) este: GMUuC ′⋅′⋅=′ )( Rezultă că setul de puncte care determină curba în noua reprezentare este: ( ) GMMG ⋅⋅′=′ −1 (54)

Page 21: Curs SPG 2

SPG – Curs 2

21

De exemplu, dacă M este matricea de bază B-spline, SM , iar M ′ este matricea de bază Bézier, BM , atunci trecerea de la condiţiile geometrice G , care determină o curbă B-spline, la cele care determină o curbă Bézier este dată de relaţia:

GG ⋅

=′

1410042002400141

61 (55)

1.1.9 Algoritmul Casteljau

Este unul dintre cei mai importanţi algoritmi din CAGD (Computer Aided Geometric Design). Este un algoritm recursiv care determină punctul )(up de pe o curbă Bezier. În cazul unei curbe Bézier de grad 3 se procedează astfel:

Date iniţiale: punctele 0 1 2 3, , ,P P P P , adică condiţiile geometrice

[ ]0 1 2 3, , , TG P P P P= .

Figura 24 Algoritmul Casteljau Pasul 1: ( )1

0 0 11P u P uP= − +

( )11 1 21P u P uP= − +

( )12 2 31P u P uP= − +

1P 1

1P

10P

20P

12P

21P

30P

0P 3P

2P

Page 22: Curs SPG 2

SPG – Curs 2

22

Pasul 2: ( )2 1 1

0 0 11P u P uP= − +

( )2 1 11 1 21P u P uP= − +

Pasul 3: ( )3 2 2

0 0 11 ( )P u P uP p u= − + ≡ Demonstraţie: Calculăm ( )3

0P u în funcţie de datele iniţiale 1:

( ) ( ) ( )( ) ( ) ( )

22 20 0 1 1 2

22 21 1 2 2 3

1 1 1

1 1 1

P u P u uP u uP u P

P u P u uP u uP u P

= − + − + − + = − + − + − +

( ) ( )22 20 0 1 21 2 1P u P u uP u P= − + − +

( ) ( )22 21 1 2 31 2 1P u P u uP u P= − + − +

În locuind în relaţia din pasul 3 rezultă:

( ) ( ) ( ) ( ) ( )3 2 23 2 2 30 0 1 2 1 2 31 2 1 1 1 2 1P u P u uP u u P u uP u u P u P= − + − + − + − + − + ⇒

( ) ( ) ( )3 23 2 30 0 1 2 31 3 1 3 1 ( )P u P u uP u u P u P p u= − + − + − + ≡ q.e.d.

Observaţii:

1) În cazul prezentat la divizare avem 12

u = .

2) În cazul unei curbe de grad n avem n paşi, fiecare pas constând dintr-o interpolare liniară.

Page 23: Curs SPG 2

SPG – Curs 2

23

1.2 Suprafeţe O suprafaţă poate fi definită matematic în trei moduri: 1. printr-o ecuaţie implicită: ( ), , 0f x y z = ; 2. printr-o ecuaţie explicită, care exprimă variaţia uneia din cele trei variabile în funcţie

de celelalte două:

( , )xx f y z= , ( , )yy f x z= sau ( , )zz f x y= ; 3. printr-o ecuaţie parametrică:

( , )( , )

( , )

x

y

x

x f u vy f u v

x f u v

=

= =

min max

min max

u u uv v v

≤ ≤

≤ ≤ (1)

În modelarea suprafeţelor se folosesc ecuaţiile parametrice din cauza următoarelor avantaje:

- reprezentarea este independentă de orice sistem de coordonate; - transformările 3D exprimate în coordonate omogene pot fi aplicate direct asupra

ecuaţiilor parametrice; - ecuaţiile parametrice oferă mai multe grade de libertate pentru controlul formei

unei suprafeţe.

1.2.1 Suprafeţe de formă liberă Suprafeţele de formă liberă pot fi de două feluri: de interpolare şi de aproximare.

Modelarea acestor suprafeţe se bazează pe noţiunea de „petic” (patch). Un petic este o colecţie de puncte mărginită de patru curbe:

( , )( , )( , )

x x u vy y u vx z u v

= = =

min max

min max

u u uv v v

≤ ≤

≤ ≤

În general, un petic de aproximare/interpolare descris parametric prin curbe de grad 3 (petic bicubic). Gradul 3 este gradul minim care poate asigura respectarea unor condiţii de continuitate pentru obţinerea de suprafeţe modelate prin reţele de petice. Un petic bicubic se reprezintă printr-o ecuaţie (vectorială) parametrică de forma:

3 3

0 0( , ) i j

iji j

p u v a u v= =

=∑∑ 0 1u≤ ≤ , 0 1v≤ ≤ (2)

Această reprezentare este numită forma algebrică a suprafeţei, iar cei 16 vectori

Page 24: Curs SPG 2

SPG – Curs 2

24

ijx

ij ijy

ijz

a

a a

a

=

- sunt coeficienţii algebrici ai suprafeţei.

În notaţia matricială rezultă Tp U AV= , (3) unde 3 2 1U u u u = ,

3 2 1V v v v = ,

33 32 31 30

23 22 21 20

13 12 11 10

03 02 01 00

a a a aa a a a

Aa a a aa a a a

=

.

Curbele care mărginesc un petic bicubic sunt cubice (figura 1).

Figura 1 De exemplu, ecuaţia curbei 0up este: 3 2

0 30 20 10 00( ,0)up p u a u a u a u a= = + + +

0

1

v

u 00P

01P

11P

10P

0 (0, )vp p v=

1 ( ,1)up p u=

1 (1, )vp p v= 0 ( ,0)up p u=

1

Page 25: Curs SPG 2

SPG – Curs 2

25

1.2.2 Suprafeţe Bézier Sunt suprafeţe de aproximare. O suprafaţă Bézier este definită printr-un poliedru caracteristic. Vârfurile poliedrului determină două familii de curbe Bézier. Ecuaţia parametrică a suprafeţei Bézier este:

, ,0 0

( , ) ( ) ( )m n

ij i m j ni j

p u v P B u B v= =

=∑∑ 0 , 1u v≤ ≤ (4)

ijP - vârfurile poliedrului caracteristic,

,i mB , ,j nB - polinoame Bernstein de grad m , respectiv n . Ecuaţia parametrică a unei curbe cubice Bézier este:

( ) ( ) ( ) [ ]3 2 2 30 1 2 3( ) 1 3 1 3 1 Tp u u u u u u u P P P P = − − −

.

Extindem acest rezultat la o bicubică Bézier:

( ) ( ) ( )

( )( )( )

3

23 2 2 3

2

3

1

3 1( , ) 1 3 1 3 1

3 1SB

v

v vp u v u u u u u u Gv v

v

− − = − − − −

(5)

unde SBG este matricea punctelor de control pentru peticul de suprafaţă Bézier:

00 01 02 03

10 11 12 13

20 21 22 23

30 31 32 33

SB

P P P PP P P P

GP P P PP P P P

=

.

Observaţie: Numai punctele 00P , 03P , 30P şi 33P aparţin suprafeţei, restul controlează forma curbelor care aproximează suprafaţa. 1.2.2 Suprafeţe Bézier Se extinde reprezentarea parametrică a curbelor Bézier la reprezentarea peticelor de suprafeţe parametrice. De exemplu, considerând curbe Bézier cubice, un petic de suprafaţă bicubică Bézier este definit prin ecuaţiile:

Page 26: Curs SPG 2

SPG – Curs 2

26

∑∑= =

=3

0

3

0)()(),(

i jjiij vBuBPvuQ , (10.33)

unde ijP sunt puncte de control şi )(uBi , respectiv )(uB j , sunt funcţii de bază. Un petic Bézier este definit prin 16 puncte de control, care formează o suprafaţă de control numită poliedru caracteristic. Proprietăţile curbelor Bézier se extind la suprafeţele Bézier. Suprafeţe B-spline Un petic bicubic B-spline are ecuaţia:

∑∑= =

=n

i

n

jijij u,vBPu,vQ

0 0)()( , (10.34)

în care )(xBij este o funcţie de bază de două variabile u şi v , care poate fi: )()()( 44 vBuBu,vB j,i,ij = . (10.35) Suprafeţe complexe se obţin din mai multe segmente de petice alăturate, prin extinderea poliedrului caracteristic şi a tabloului nodurilor.

0

1

v

u 00P

01P

11P

10P

0 (0, )vp p v=

1 ( ,1)up p u=

1 (1, )vp p v= 0 ( ,0)up p u=

1