curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/agi/bezier_ro.pdfs¸i ˆın...

70
Curbe s ¸i suprafet ¸e ˆ ın grafic˘ a s ¸i designul geometric Note de curs Paul A. Blaga

Upload: others

Post on 29-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

Curbe si suprafete ın graficasi designul geometric

Note de curs

Paul A. Blaga

Page 2: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

2

Page 3: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

Cuprins

1 Transformari geometrice ın plan 51.1 Generalitati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Reprezentarea geometriei bidimensionale. Coordonate omogene ın plan . . . . . . . . . 51.3 Translatii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.4 Scalarea ın raport cu originea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.5 Reflexiile ın raport cu axele de coordonate . . . . . . . . . . . . . . . . . . . . . . . . . 101.6 Rotatia ın jurul originii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.7 Forfecarea fata de origine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.8 Scalarea fata de un punct oarecare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.9 Rotatia fata un punct oarecare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.10 Reflexia fata de o dreapta oarecare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.11 Forfecarea relativ la un punct oarecare . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.12 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 Transformari geometrice ın spatiu 192.1 Conventii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2 Scalarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3 Translatia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.4 Reflexiile fata de planele de coordonate . . . . . . . . . . . . . . . . . . . . . . . . . . 202.5 Rotatiile fata de axele de coordonate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.6 Rotatii fata de axe oarecare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.7 Scalarea fata de un punct oarecare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.8 Reflexia fata de un plan oarecare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.9 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3 Curbe Bezier si B-spline 313.1 Curbe polinomiale ın forma lui Bezier . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2 Algoritmul lui de Casteljau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3

Page 4: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

4 Cuprins

3.3 Calculul derivatelor unei curbe Bezier . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.4 Precizia liniara si ridicarea gradului . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.5 Subdivizarea si micsorarea variatiei . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.6 Forma polara a functiilor polinomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.7 Curbe B-spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4 Suprafete Bezier si B-spline 574.1 Suprafete produs tensorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.1.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.1.2 Suprefete Bezier produs tensorial . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.2 Derivarea suprafetelor Bezier produs tensorial . . . . . . . . . . . . . . . . . . . . . . . 594.3 Suprafete B-spline produs tensorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.3.1 Derivarea unei suprafete B-spline produs tensorial . . . . . . . . . . . . . . . . 614.4 Suprefete Bezier triunghiulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5 Curbe si suprafete rationale 655.1 Geometrie proiectiva. Coordonate omogene . . . . . . . . . . . . . . . . . . . . . . . . 655.2 Curbe Bezier si B-spline rationale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.3 Suprafete Bezier si B-spline produs tensorial rationale . . . . . . . . . . . . . . . . . . 69

Page 5: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

CAPITOLUL 1

Transformari geometrice ın plan

1.1 Generalitati

In multe dintre cartile de grafica pe calculator, transformarile geometrice ın plan se studiaza ımpreunacu cele ın spatiu sau chiar sunt tratate ca un caz particular al celor tridimensionale. Exista, dupa parereaautorului, motive suficiente ca acestor transformari sa li se atribuie un spatiu corespunzator. In primulrand, pentru studentii cu putine cunostinte de geometrie, este mult mai usor de ınteles si de vizualizat,ıntr-o prima etapa, modul ın care actioneaza transformarile ın plan, urmand ca apoi sa se abordeze trans-formarile spatiale. Pe de alta parte, chiar ın grafica tridimensionala transformarile plane joaca un rolimportant, ıntrucat instrumentele pe care se vizualizeaza grafica sunt, ın esenta, bidimensionale.

1.2 Reprezentarea geometriei bidimensionale. Coordonate omogene ınplan

Dupa cum am vazut mai devreme, ın acest curs, forma si dimensiunile obiectelor plane sunt caracteri-zate prin descrieri numerice bidimensionale, legate de un sistem de coordonate, de obicei sistemul decoordonate carteziene xOy. Elementul de baza al oricarui model bidimensional este punctul. Dupa ceo figura geometrica este reprezentata prin intermediul punctelor sale, putem aplica acestora un set detransformari geometrice care, ca efect, vor modifica pozitia si forma figurii. In figura ??, de exemplu,este reprezentat un triunghi ABC prin intermediul coordonatelor varfurilor sale. Conventia pe care ovom adopta, de acum ıncolo, ın toate aplicatiile pe care le vom face, este ca fiecare punct este reprezentatca vectorul coloana al coordonatelor sale. Daca avem un poligon cu n varfuri, acesta va fi reprezentat cao matrice cu n coloane si doua linii. Astfel, un triunghi va fi reprezentate printr-o matrice

[P ]Triunghi =

(x1 x2 x3

y1 y2 y3

).

5

Page 6: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

6 Capitolul 1. Transformari geometrice ın plan

1

2

3

4

5y

1 2 3 4x

O

A(1, 1)

B(1.5, 4)

C(4, 3)

Notatia matriciala este foarte utila pentru definirea si manipularea geometriei ın grafica pe calculator.Ar fi foarte util, din acest motiv, ca toate transformarile geometrice sa poata fi reprezentate sub aceastaforma, cu alte cuvinte, aplicarea unei transformari geometrice asupra unei figuri sa se reduca la ınmultireamatricei asociate transformarii cu matrica asociata figurii. Din pacate, acest lucru nu este posibil, atatavreme cat punctele sunt descrise prin intermediul coordonatelo lor obisnuite, adica cele carteziene. Moti-vul este ca, desi majoritatea transformarilor geometrice elementare sunt descrise prin ınmultiri de matrici,translatia, de exemplu, este descrisa prin adunarea vectoriala. Din fericire, aceasta problema poate fi re-zolvata relativ usor, pretul platit fiind utilizarea unui alt sistem de coordonate, care utilizeaza asa-numitelecoordonate omogene.

Reprezentarea punctelor ın coordonate omogene furnizeaza o abordare unitara a transformarilor ge-ometrice. Pentru a ıntelege coordonatele omogene, sa ne ınchpuim un punct P1(x1, y1), unde x1 si y1

sunt coordonatele carteziene bidimensionale ale punctului. Punctul P1 poate fi privit ca fiind un punctdin R3, din planul z = 1, cu alte cuvinte, avem P1 = P1(x1, y1, 1). Punctele de pe dreapta care unesteP1 cu originea sistemului de coordonate, pot fi descrise prin intermediul unui parametru real h, astfelıncat:

P (x, y, z) = P (hx1, hy1, h).

Orice punct din plan poate fi reprezentat prin unul dintre punctele de-a lungul acestei drepte din spatiultridimensional, cu exceptia originii, care corespunde lui h = 0. Coordonatele ordinare corespund punc-tului unde dreapta intersecteaza planul z = 1. Diferite puncte din plan sunt reprezentate prin drepte prinorigine diferite.

In coordonate omogene, prin urmare, un punct este reprezentat sub forma P (hx, hy, h). Sa consi-deram, de exemplu, punctul P (2, 4), ın coordonate carteziene bidimensionale obisnuite. Urmatoarelereprezentari omogene identifica, toate, acelasi punct: P (4, 8, 2), P (6, 12, 3), P (2, 4, 1). Date fiind coor-donatele omogene ale unui punct, P (m,n, h), coordonatele carteziene obisnuite pot fi determinate din

Page 7: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

1.3. Translatii 7

reprezentarea omogena P (m/h, n/h, 1). Se obtine

x =m

h,

y =n

h.

Atunci cnd se utilizeaza coordonate omogene, punctele din spatiul bidimensional sunt reprezentate prinmatrici de tip [3× n], unde n este numarul de puncte care definesc figura geometrica ın cauza. In cazulunui triunghi, se obtine:

[P ]Triunghi =

x1 x2 x3

y1 y2 y3

1 1 1

.

1.3 Translatii

1

2

3

4y

1 2 3 4x

O

Figura 1.1: Un patrulater si translatatul sau de vector v(1, 1), variatia vectorilor de pozitie

Se numeste translatie de vector v(h, k) o aplicatie care asociaza unui punctA(x, y) un punctA′(x′, y′)astfel ıncat:

rA′ = rA + v (1.3.1)

sau, pe componentex′ = x+ h, y′ = y + k. (1.3.2)

Prin conventie, relatia (1.3.1) se va scrie, de acum ıncolo, sub forma:

A′ = A+ v. (1.3.3)

O translatie de vector v(h, k) se noteaza cu T (h, k) si e considerata ca fiind o aplicatie T (h, k) : R2 →R2, data prin

T (h, k)(x, y) = (x+ h, y + k). (1.3.4)

Page 8: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

8 Capitolul 1. Transformari geometrice ın plan

In limbajul matricial, translatia de vector v(h, k) asociaza unui punct A(x, y) un punct A′(x′, y′) astfelıncat (

x′

y′

)=

(xy

)+

(hk

)(1.3.5)

Daca utilizam coordonate omogene, atunci translatia se poate reprezenta sub forma matriciala:x′y′1

=

1 0 h0 1 k0 0 1

xy1

, (1.3.6)

dupa cum se poate verifica usor, efectuand ınmultirile matriciale. Icele ce urmeaza, vom utiliza pentrumatricea omogena asociata unei translatii aceeasi nitatie ca si pentru translatia ınsasi, adica vom pune:

T (h, k) =

1 0 h0 1 k0 0 1

. (1.3.7)

In figura 1.3 se poate observa cum actioneaza translatia de vector v(1, 1) asupra unui patrulater devarfuri A(.5, 3), B(1, 1), C(2, .5), D(3, 2.5). Am indicat, de asemenea, pe figura, modul cum se trans-forma vectorii de pozitie ai varfurilor patrulaterului. Imaginile varfurilor sunt puncteleA′(1.5, 4), B′(2, 2)C ′(3, 1.5), D′(4, 3.5).

Se pot demonstra cu usurinta urmatoarele proprietati ale translatiei:

(i) Orice translatie T (h, k) este o bijectie, iar inversa ei este o translatie, T (−h,−k).

(ii) Multimea tuturor translatiilor din plan formeaza un grup ın raport cu compunerea aplicatiilor, ele-mentul neutru fiind aplicatia identica, egala, de fapt, cu T(0, 0).

(iii) Translatiile sunt izometrii (pastreaza distantele dintre puncte).

(iv) Grupul translatiilor este comutativ (adica daca aplicam unui punct doua translatii succesive, nuconteaza ordinea ın care le aplicam)1.

1.4 Scalarea ın raport cu originea

Scalarea ın raport cu originea este, ca si translatia, o transformare foarte simpla. Ea se defineste ca fiindo aplicatie S(sx, sy) : R2 → R2, astfel ıncat pentru orice (x, y) ∈ R2, sa avem

S(sx, sy)(x, y) = (sx · x, sy · y). (1.4.1)

Aici sx, sy sunt numere reale nenule care se numesc factori de scara. Daca un factor de scara s esteastfel ıncat |s| > 1, atunci s se numeste marire, ın timp ca daca |s| < 1, s se numeste micsorare. Dacasx = sy, vom spune ca scalarea este uniforma. O scalare uniforma de factor de scala pozitiv se mainumeste, uneori, magnificare.

1Atentie! Aceasta remarca nu este specifica tuturor transformarilor geometrice. In general, daca aplicam unui punct osecventa de transformari geometrice, ordinea ın care le aplicam este, de regula, esentiala.

Page 9: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

1.4. Scalarea ın raport cu originea 9

Si ın cazul scalarii, aplicatia se poate reprezenta matricial. De aceasta data, avem de-a face cu oaplicatie liniara, careia ıi putem asocia o matrice, pe care o vom nota cu acelasi simbol ca si aplicatia,anume S(sx, sy). Coloanele matricii aplicatiei vor fi imaginile vectorilor bazei lui R2, adica ale vectorilor(1, 0), (0, 1). Prin urmare, vom avea

S(sx, sy) =

(sx 00 sy

).

Aceasta ınseamna ca imaginea prin scalare a unui punct A(x, y) va fi un punct A′(x′, y′) astfel ıncat saavem (

x′

y′

)= S(sx, sy) ·

(xy

)≡(sx 00 sy

)·(xy

)(1.4.2)

Si aici, ca si ın cazul translatiei, vom prefera sa utilizam coordonate omogene, ceea ce ınseamna camatricea scalarii se va scrie (utilizam aceeasi notatie!):

S(sx, sy) =

sx 0 00 sy 00 0 1

. (1.4.3)

Exemplul 1.1. Pentru exemplificare, vom considera, din nou, patrulaterul studiat ın cazul translatiei,ABCD, cu A(0.5, 3), B(1, 1), C(2, 0.5), D(3, 2.5) si ıi vom aplica, de data aceasta, o scalare de factorisx = 2, sy = 1.5. Conform relatiei (1.4.2), imaginile varfurilor patrulaterului vor fi date de

(A′ B′ C ′ D′

)=

2 0 00 1.5 00 0 1

0.5 1 2 33 1 0.5 2.51 1 1 1

=

1 2 4 64.5 1.5 0.75 3.751 1 1 1

.

Figura originala si rezultatul scalarii, ımpreuna cu modul ın care scalarea actioneaza asupra vectorilor depozitie, poti fi vazute ın figura 1.1.

1

2

3

4

5y

1 2 3 4 5x

O

Figura 1.2: O scalare de factori (2, 1.5)

Page 10: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

10 Capitolul 1. Transformari geometrice ın plan

Observatie. Urmatoarele observatii sunt foarte usor de demonstrat si sunt lasate ın grija cititorului:

(i) Orice scalare S(sx, sy) este inversabila, iar inversa ei este S(1/sx, 1/sy) (prin urmare este tot oscalare).

(ii) Multimea tuturor scalarilor formeaza, ın raport cu compunerea aplicatiilor, un grup (comutativ), ıncare elementul neutru este aplicatia identica (adica S(1, 1)).

(iii) Scalarea nu este, de obicei, o izometrie (distanta dintre puncte se modifica) ceea ce are ca efect, ınparticular, modificarea formei si a dimensiunilor unei figuri geometrice prin aplicarea unei scalari.

1.5 Reflexiile ın raport cu axele de coordonate

Reflexiile fata de axele de coordonate sunt doua aplicatii, Rx,Ry : R2 → R2, care asociaza, fiecare dintreele, unui punct A(x, y), simetricul punctului fata de axa de coordonate corespunzatoare.

Sa ıncepem cu Rx. Aceasta aplicatie asociaza, dupa cum spuneam, fiecarui punct A(x, y) simetriculsau relativ la axa Ox. Este usor de vazut ca simetricul lui A va fi punctul A′(x,−y), asadar Rx(x, y) =(x,−y). Rezulta, de asemenea, imediat, ca Ry(x, y) = (x,−y). Ca si ın cazul scalarii, este usor de

1

2

3

4y

−3 −2 −1 1 2 3x

O

Figura 1.3: Un patrulater ABCD si reflexia sa fata de axa Oy, A′B′C ′D′

constatat ca Rx si Ry sunt aplicatii liniare. Matricile lor fata de baza canonica a lui R2 sunt foarte usorde determinat. Avem

Rx(1, 0) = (1, 0), Rx(0, 1) = (0,−1),

prin urmare, matricea lui Rx (notata cu acelasi simbol), va fi

Rx =

(1 00 −1

)(1.5.1)

Page 11: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

1.6. Rotatia ın jurul originii 11

sau, ın coordonate omogene:

Rx =

1 0 00 −1 00 0 1

, (1.5.2)

ceea ce ınseamna ca forma matriceala a lui Rx se va scrie:(x′

y′

)=

(1 00 −1

)(xy

)(1.5.3)

sau, ın coordonate omogene, x′y′1

=

1 0 00 −1 00 0 1

xy1

. (1.5.4)

Exact la fel, matricea lui Ry va fi

Ry =

(−1 00 1

), (1.5.5)

sau, ın coordonate omogene:

Ry =

−1 0 00 1 00 0 1

, (1.5.6)

iar forma matriceala a acestei transformari se va scrie:(x′

y′

)=

(−1 00 1

)(xy

)(1.5.7)

sau, ın coordonate omogene, x′y′1

=

−1 0 00 1 00 0 1

xy1

. (1.5.8)

In figura 1.5 se observa cum actioneaza reflexia Ry asupra unui patrulater. Este clar, din figura, caactiunea este, de fapt, asupra vectorilor de pozitie ale punctelor patrulaterului.

1.6 Rotatia ın jurul originii

Rotatia ın plan ın jurul originii, cu un unghi θ, este o transformare geometrica Rotθ : R2 → R2 careasociaza unui punct P din plan un punct P ′ astfel ıncat unghiul POP ′ sa fie egal cu |θ|. Daca unghiul θeste pozitiv, rotatia se face ın sens trigonometric (ın sens opus mersului acelor de ceasornic), ın timp cedaca θ este negativ, rotatia se face ın sensul mersului acelor de ceasornic.

Problema pe care ne-o punem acum este ca, daca se da punctul P , prin coordonatele sale carteziene(x, y), sa determinam coordonatele carteziene (x′, y′) ale imaginii sale prin rotatie, punctul P ′.

Page 12: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

12 Capitolul 1. Transformari geometrice ın plan

1

2

3

4y

−2 −1 1 2 3x

O

Figura 1.4: Rotatia unui patrulater cu 60◦ ın jurul originii

Sa presupunem ca unghiul pe care ıl formeaza vectorul−−→OP cu directia pozitiva a axei Ox este egal

cu α. Fie r =√x2 + y2 – lungimea acestui vector. Este clar ca unghiul dintre

−−→OP ′ si directia pozitiva

a axei Ox este egal cu α+ θ. Cum este clar ca ‖−−→OP ′‖ = ‖−−→OP‖ = r, avem

x′ = r cos(α+ θ) = r(cosα cos θ − sinα sin θ)

y′ = r sin(α+ θ) = r(sinα cos θ + cosα sin θ)

sau, ınca,

x′ = (r cosα)︸ ︷︷ ︸=x

cos θ − (r sinα)︸ ︷︷ ︸=y

sin θ

y′ = (r cosα)︸ ︷︷ ︸=x

sin θ + (r sinα)︸ ︷︷ ︸=y

cos θ

adica, ın cele din urma, {x′ = x cos θ − y sin θ

y′ = x sin θ + y cos θ. (1.6.1)

In format matricial, transformarea de mai sus se poate scrie sub forma(x′

y′

)=

(cos θ − sin θsin θ cos θ

)(xy

)(1.6.2)

Daca notam matricea transformarii Rot(θ) cu acelasi simbol, adica

Rot(θ) =

(cos θ − sin θsin θ cos θ

), (1.6.3)

Page 13: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

1.7. Forfecarea fata de origine 13

atunci rotatia ın plan de unghi θ ın jurul originii se poate scrie sub forma(x′

y′

)= Rot(θ) ·

(xy

)(1.6.4)

Matricea omogena a rotatie se obtine usor, prin bordare, si rezulta (folosim aceeasi notatie)

Rot(θ) =

cos θ − sin θ 0sin θ cos θ 0

0 0 1

, (1.6.5)

1.7 Forfecarea fata de origine

Consideram o directie ın plan, data de un versor v(vx, vy). Consideram, de asemenea, pentru fiecare dnumar real pozitiv, dreptele `d, de vector director v, situate la distanta d fata de origine (daca d nu estezero, sunt doua astfel de drepte). O forfecare relativ la origine, de factor r ın directia v este transformareacare asociaza unui punct P de pe `d punctul din plan de vector de pozitie rP ′ = rP + r · d · v.

Fie P (x0, y0) un punct din plan. Dreapta care trece prin P si are directia data de v are ecuatia

(`d) : vyx− vxy + vxy0 − vyx0 = 0.

Distanta d de la dreapta la origine este egala cu modulul termenului liber, pentru ca vectorul director aldreptei are lungimea 1, prin urmare, transformarea se va scrie

rP ′ = rP + rdv = (x0 ± r(vxy0 − vyx0), x0 ± r(vxy0 − vyx0)) (1.7.1)

sau, matricial, (x′

y′

)=

(1∓ r · vxvy ±r · v2

x

∓r · v2y 1± r · vxvy

)·(xy

)(1.7.2)

In ecuatia (1.7.1) se alege semnul ın functie de dreapta `d pe care se afla punctul (am vazut mai sus casunt, ın general, doua astfel de drepte, de o parte si de alta a drepte `0). Daca trecem de la o dreapta laalta, sensul miscarii de-a lungul dreptei se inverseaza. Pentru fixarea ideilor, alegem semnul +. Atuncimatricea (carteziana) a transformarii se va scrie

Sh(v, r) =

(1− r · vxvy r · v2

x

−r · v2y 1 + r · vxvy

)(1.7.3)

sau, ın coordonate omogene,

Sh(v, r) =

1− r · vxvy r · v2x 0

−r · v2y 1 + r · vxvy 0

0 0 1

(1.7.4)

Page 14: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

14 Capitolul 1. Transformari geometrice ın plan

1.8 Scalarea fata de un punct oarecare

Fie P (x0, y0) un punct oarecare din plan. Pentru a efectua o scalare fata de P , mutam punctul P ınorigine, facem scalarea, apoi ıl mutam ınapoi. Prin urmare, matricea omogena a scalarii se va scrie:

SP (sx, sy) = T (x0, y0) · S(sx, sy) · T (−x0,−y0) =

=

1 0 x0

0 1 y0

0 0 1

·sx 0 0

0 sy 00 0 1

·1 0 −x0

0 1 −y0

0 0 1

=

=

sx 0 (1− sx)x0

0 sy (1− sy)y0

0 0 1

.

1

2

3

4y

−2 −1 1 2 3 4x

O

Figura 1.5: Scalarea unui patrulater, de factori de scala (2, 1.5), relativ la punctul M(2, 2)

1.9 Rotatia fata un punct oarecare

Fie P (x0, y0) un punct oarecare din plan. Pentru a efectua o rotatie ın jurul lui P , mutam punctul P ınorigine, facem rotatia, apoi ıl mutam ınapoi. Prin urmare, matricea omogena a rotatiei se va scrie:

RotP (θ) = T (x0, y0) · Rot(θ) · T (−x0,−y0) =

=

1 0 x0

0 1 y0

0 0 1

·cos θ − sin θ 0

sin θ cos θ 00 0 1

·1 0 −x0

0 1 −y0

0 0 1

=

=

cos θ − sin θ x0(1− cos θ) + y0 sin θsin θ cos θ −x0 sin θ + y0(1− cos θ)

0 0 1

.

Page 15: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

1.10. Reflexia fata de o dreapta oarecare 15

1

2

3

4y

1 2 3 4x

O

Figura 1.6: Rotatia unui patrulater, de unghi 60◦, relativ la punctul M(2, 2)

1.10 Reflexia fata de o dreapta oarecare

Ideea, de data aceasta, este transformam dreapta de reflexie ıntr-una dintre axele de coordonate, sa facemreflexia fata de axa pe care am ales-o, apoi sa aducem ınapoi dreapta ın pozitia initiala. Fie, prin urmare,o dreapta ∆, data prin ecuatia generala,

(∆) : ax+ by + c = 0.

Daca axa de reflexie este verticala (adica b = 0), atunci facem o translatie de vector (c/a, 0), urmata dereflexia fata de Oy si de translatia inversa, adica avem:

R∆ = T (−c/a, 0) ·Ry · T (c/a, 0) =

=

1 0 −c/a0 1 00 0 1

·−1 0 0

0 1 00 0 1

·1 0 c/a

0 1 00 0 1

=

−1 0 −2c/a0 1 00 0 1

.

Presupunem, acum, ca b 6= 0. Executam urmatoarele operatii:

1) Facem o translatie de vector (0, c/b), care transform! axa de reflexie ıntr-o dreapta ∆′, paralela cu ea,care trece prin origine.

2) Panta dreptei ∆ (deci si a lui ∆′) estetg θ = −a

b.

Facem, prin urmare, o rotatie de unghi−θ ın jurul originii, rotatie dupa care dreapta ∆′ se transformaın axa Ox.

Page 16: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

16 Capitolul 1. Transformari geometrice ın plan

1

2

3

4

5y

−1 1 2 3x

O

Figura 1.7: Reflexia unui patrulater fata de dreapta y = x+ 1

3) Aplicam reflexia relativ la axa Ox.

4) Aplicam rotatia de unghi θ.

5) Aplicam translatia de vector (0,−c/b).

Inainte de a scrie matricea, remarcam ca, din moment ce tg θ = −a/b, se obtine imediat ca

sin θ =a√

a2 + b2, cos θ = − b√

a2 + b2.

Page 17: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

1.11. Forfecarea relativ la un punct oarecare 17

Prin urmare, transformarea cautata este

R∆ = T(

0,−cb

)· Rot(θ) ·Rx · Rot(−θ) · T (0,−c

b) =

=

1 0 00 1 − c

b0 0 1

·cos θ − sin θ 0

sin θ cos θ 00 0 1

·1 0 0

0 −1 00 0 1

··

cos θ sin θ 0− sin θ cos θ 0

0 0 1

·1 0 0

0 1 cb

0 0 1

=

=

cos2 θ − sin2 θ 2 sin θ cos θ 2 cb sin θ cos θ2 sin θ cos θ sin2 θ − cos2 θ c

b(sin2 θ − cos2 θ − 1)

0 0 1

=

=

b2−a2a2+b2

− 2aba2+b2

− 2aca2+b2

− 2aba2+b2

− b2−a2a2+b2

− 2bca2+b2

0 0 1

1.11 Forfecarea relativ la un punct oarecare

Ca ın cazul tuturor transformarilor plane relativ la un punct, si aici transformarea se obtine cu ajutorulunor translatii.

Fie P (x0, y0) un punct oarecare din plan. Forfecarea rela tiv la P se obtine ın trei pasi: se aduce Pın origine, se face transformarea relativ la origine si se aduce P ınapoi. Prin urmare, vom avea:

ShP (v, r) = T (x0, y0) · Sh(v, r) · T (−x0,−y0) =

=

1 0 x0

0 1 y0

0 0 1

·1− rvxvy rv2

y 0

−rv2x 1 + rvxvy 0

0 0 1

·1 0 −x0

0 1 −y0

0 0 1

=

=

1− rvxvy rv2y rvx(vy · x− vx · y)

−rv2x 1 + rvxvy rvyx(vy · x− vx · y)

0 0 1

.

1.12 Probleme

In lista de probleme de mai jos, triunghiul ABC are varfurile A(1, 1), B(4, 1), C(2, 3). Reprezentati, defiecare data, pe aceeasi figura, triunghiul initial si imaginea sa.

Problema 1.1. Determinati imaginea triunghiului ABC printr-o rotatie de unghi 30◦ ın jurul punctuluiQ(2, 2), urmata de o translatie de vector (1, 2). Aplicati apoi transformarile ın ordine inversa.

Problema 1.2. Determinati imaginea triunghiului ABC printr-o scalare uniforma de factor de scala 2relativ la punctul Q(2, 2).

Page 18: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

18 Capitolul 1. Transformari geometrice ın plan

Problema 1.3. Determinati imaginea triunghiului ABC printr-o scalare neuniforma, de factori de scala(2, 1), relativ la punctul Q(2, 2).

Problema 1.4. Determinati imaginea triunghiului ABC printr-o forfecare de factor1, relativ la punctulQ(2, 2), ın directia vectorului v(2, 1).

Problema 1.5. Determinati imaginea triunghiului ABC prin reflexia relativ la dreapta 2x+ 3y− 5 = 0.

Problema 1.6. Determinati imaginea triunghiului ABC prin reflexia relativ la dreapta AB.

Problema 1.7. Determinati imaginea triunghiului ABC prin reflexia relativ la dreapta BC, urmata de oforfecare, factor

√3/3, relativ la punctul A, ın directia vectorului v(1, 1).

Problema 1.8. Determinati imaginea triunghiului ABC prin rotatia cu 90◦ ın jurul punctului C, urmatade reflexia relativ la dreapta AB.

Problema 1.9. Determinati imaginea triunghiuluiABC prin scalarea neuniforma de factori (1, 2) relativla punctul B, urmata de o rotatie de 30◦ ın jurul punctului Q(1, 1).

Page 19: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

CAPITOLUL 2

Transformari geometrice ın spatiu

2.1 Conventii

In cele ce urmeaza, punctele si vectorii, reprezentate prin coordonatele (respectiv componentele) lorrelativ la un sistem de coordonate vor fi considerati matrici 1-dimensionale, ale caror elementele suntcoordonatele (componentele) punctelor, respectiv vectorilor. Transformarile vor fi reprezentate, de labun ınceput, ın coordonate omogene.

2.2 Scalarea

Transformarea prin scalare se obtine, analog cu ceea ce se ıntampla ın plan, plasand factorii de scalarepe diagonala principala a matricii de transformare. Astfel, transformarea se va scrie:

x′

y′

z′

1

=

sx 0 0 00 sy 0 00 0 sz 00 0 0 1

·xyz1

sau, daca utilizam coordonate omogene oarecare pentru puncte,

X ′

Y ′

Z ′

W ′

=

Sx 0 0 00 Sy 0 00 0 Sz 00 0 0 SW

·XYZW

.

Toate numerele sx, sy, sz (si variantele lor omogene) trebuie sa fie strict pozitive.

19

Page 20: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

20 Capitolul 2. Transformari geometrice ın spatiu

2.3 Translatia

Analog cu cazul plan, ın spatiu translatia de vector (h, k, l) asociaza unui punct de coordonate (x, y, z)punctul de coordonate

(x′, y′, z′) = (x, y, z) + (h, k, l).

In coordonate omogene, aceasta transformare se poate scrie matricial cax′

y′

z′

1

=

1 0 0 h0 1 0 k0 0 1 l0 0 0 1

·xyz1

sau, ın coordonate omogene oarecare,

X ′

Y ′

Z ′

W ′

=

1 0 0 H0 1 0 K0 0 1 L0 0 0 M

·XYZW

,

cu M 6= 0.

2.4 Reflexiile fata de planele de coordonate

Reflexiile fata de planele de coordonate, ın spatiu, sunt analoage cu reflexiile fata de axele de coordonateın plan.

Este usor de constatat ca o simetrie fata de planul xOy, aplicata unui punct de coordonate (x, y, z),are ca efect schimbarea semnului celei de-a treia coordonate:

x′ = x,

y′ = y,

z′ = −z

sau, matricial, ın coordonate omogene canonice,x′

y′

z′

1

=

1 0 0 00 1 0 00 0 −1 00 0 0 1

·xyz1

.

Matricea

Rxy =

1 0 0 00 1 0 00 0 −1 00 0 0 1

Page 21: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

2.5. Rotatiile fata de axele de coordonate 21

este matricea reflexiei fata de planul xOy. In mod analog, pentru reflexiile fata de celelalte doua planede coordonate sunt:

Ryz =

−1 0 0 00 1 0 00 0 1 00 0 0 1

,

pentru reflexia fata de planul yOz, respectiv

Rxz =

1 0 0 00 −1 0 00 0 1 00 0 0 1

,

pentru reflexia fata de planul xOz.

2.5 Rotatiile fata de axele de coordonate

In spatiu, rotatiile se produc ın jurul unor axe, asa cum rotatiile plane se produc ın jurul unor puncte. Sepoate demonstra ca o rotatie ın jurul unei axe oarecare care trece prin origine se poate scrie ca un produsde rotatii ın jurul axelor de coordonate, de aceea ne ocupam, mai ıntai de aceste rotatii particulare.

Este usor de constatat ca daca facem o rotatie de unghi θx ın jurul axeiOx, atunci efectul asupra unuipunct de coordonate (x, y, z) este ca coordonata x nu se modifica, ın timp ce celelalte doua coordonatese modifica asa cum s-ar ıntampla daca am roti punctul (y, z) cu unghiul θx, ın planul yOz, ın juruloriginii. Prin urmare, formulele de transformare sunt

x′ = x,

y′ = y cos θx − z sin θx,

z′ = y sin θx + z cos θx.

In coordonate omogene, matricial, transformarea se va scrie, atunci,x′

y′

z′

1

=

1 0 0 00 cos θx − sin θx 00 sin θx cos θx 00 0 0 1

·xyz1

.

Deci matricea unei rotatii de unghi θx ın jurul axei Ox este

Rotx(θx) =

1 0 0 00 cos θx − sin θx 00 sin θx cos θx 00 0 0 1

.

Rotatia cu un unghi θy relativ la axa Oy este putin diferita fata de rotatia ın jurul axei Ox. Motivuleste lesne de ınteles. Judecand ca si ın cazul rotatiei ın jurul axei Ox, este clar ca y ramane constant, ın

Page 22: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

22 Capitolul 2. Transformari geometrice ın spatiu

timp ce x si z se transforma ca si cum punctului (z, x) din planul zOx i s-ar aplica o rotatie de unghi θyın jurul originii ın planul zOy. Prin urmare, vom avea (ordinea coordonatelor este, ın mod intentionat,schimbata):

y′ = y,

z′ = z cos θy − x sin θy,

x′ = z sin θy + x cos θy.

Daca “restauram” ordinea coordonatelor, vom obtine:x′ = x cos θy + z sin θy,

y′ = y,

z′ = −x sin θy + z cos θy.

In fine, daca transcriem relatile de mai sus ın forma matriciala, ın coordonate omogene, se obtine:x′

y′

z′

1

=

cos θy 0 sin θy 0

0 1 0 0− sin θy 0 cos θy 0

0 0 0 1

·xyz1

.

Asadar, matricea unei rotatii de unghi θy ın jurul axei Oy este data de

Roty(θy) =

cos θy 0 sin θy 0

0 1 0 0− sin θy 0 cos θy 0

0 0 0 1

.

In fine, daca aplicam o rotatie de unghi θz ın jurul axei Oz unui punct de coordonate (x, y, z), atunci

a) coordonata z ramane neschimbata;

b) coordonatele x si y se schimba ca si cum punctul de coordonate (x, y) ar face o rotatie de unghi θz ınjurul originii planului xOy, ın acest plan,

adica x′ = x cos θz − y sin θz,

y′ = x sin θz + y cos θz,

z′ = z.

Matricial, ın coordonate omogene, avem legea de transformarex′

y′

z′

1

=

cos θz − sin θz 0 0sin θz cos θz 0 0

0 0 1 00 0 0 1

·xyz1

.

Prin urmare, matricea unei rotatii fata de axa Oz, de unghi θz este

Rotz(θz) =

cos θz − sin θz 0 0sin θz cos θz 0 0

0 0 1 00 0 0 1

.

Page 23: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

2.6. Rotatii fata de axe oarecare 23

2.6 Rotatii fata de axe oarecare

Atunci cand trebuie sa facem o rotatie de unghi θ fata de o dreapta oarecare, ceea ce avem de facut este satransformam dreapta astfel ıncat ea sa ajunga sa coincida cu una dintre axele de coordonate, sa efectuamrotatia ceruta ın jurul acelei axe, apoi sa aducem ınapoi dreapta ın pozitia sa initiala.

Sa presupunem, prin urmare, ca axa de rotatie este data de un punct P (x0, y0, z0) si un versor directorw(wx, wy, wz).

Atunci rotatia se produce ın modul urmator.

1) Facem, mai ıntai o translatie T (−x0,−y0,−z0). Aceasta translatie duce dreapta A1A2 ıntr-o dreaptaparalela cu ea si care trece prin origine. Daca, cumva, versorul w este paralel cu axa Ox (adicawy = wz = 0), atunci matricea de rotatie este, pur si simplu,

T (x0, y0, z0) Rotx(θ)T (−x0,−y0,−z06).

Analog stau lucrurile daca w este paralel cu una dintre celelalte doua axe de coordonate.

2) Presupunem acum ca wy si wz nu se anuleaza simultan. Aplicam o rotatie de unghi θx ın jurul axeiOx astfel ıncat, dupa efectuarea rotatiei, axa de rotatie sa ajunga ın planul xOz. Proiectam, mai ıntai,versorul w pe planul yOz. Vectorul obtinut va fi w1(0, wy, wz). Unghiul pe care ıl face w cu planulxOz este unghiul pe care ıl face w1 cu axa Oz. Avem, prin urmare,

sin θx =wy√

w2y + w2

z

, cos θx =wz√

w2y + w2

z

.

3) Fie w2 imaginea vectorului w prin rotatia de la punctul precedent. Atunci

w2 = w2

(wx, 0,

√w2y + w2

z

),

prin urmare, daca notam cu θy unghiul format de w2 cu axaOz, functiile trigonometrice ale unghiuluiθy sunt

cos θy =√w2y + w2

y, sin θy = wx.

Trebuie precizat ca, pentru a suprapune w2 peste k trebuie sa rotim acest vector ın jurul axei Oy cu−θy, nu cu θy (pentru ca reperul xOz este stang).

4) Efectuam rotatia de unghi θ, ın jurul axei Oz,

5) Rotim cu θy ın jurul axei Oy.

6) Rotim cu −θx ın jurul axei Ox.

7) Aplicam translatia T (x0, y0, z0).

Prin urmare, transformarea va fi

Rot∆(θ) = T (x0, y0, z0) ·Rotx(−θx) ·Roty(θy) ·Rotz(θ) ·Roty(−θy) ·Rotx(θx) ·T (−x0,−y0,−z0)

Page 24: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

24 Capitolul 2. Transformari geometrice ın spatiu

sau

Rot∆(θ) =

1 0 0 x0

0 1 0 y0

0 0 0 z0

0 0 0 1

·

1 0 0 0

0wz√

w2y + w2

z

wy√w2y + w2

z

0

0 − wy√w2y + w2

z

wz√w2y + w2

z

0

0 0 0 1

·

·

√w2y + w2

z 0 wx 0

0 1 0 0

−wx 0√w2y + w2

z 0

0 0 0 1

·

cos θ − sin θ 0 0sin θ cos θ 0 0

0 0 1 00 0 0 1

·

·

√w2y + w2

z 0 −wx 0

0 1 0 0

wx 0√w2y + w2

z 0

0 0 0 1

·

1 0 0 0

0wz√

w2y + w2

z

− wy√w2y + w2

z

0

0wy√

w2y + w2

z

wz√w2y + w2

z

0

0 0 0 1

·

·

1 0 0 −x0

0 1 0 −y0

0 0 0 −z0

0 0 0 1

.

Ca un exemplu, sa determinam matricea unei rotatii de 30◦ ın jurul dreptei x = y = z. In acest caz,versorul director al axei de rotatie este

w =

(√3

3,

√3

3,

√3

3

).

Axa de rotatie trece prin origine, astfel ca nu avem nevoie de cele doua translatii. Functiile trigonometriceale unghiurilor θx, θy, θ sunt, ın acest caz,

cos θx =

√2

2, sin θx =

√2

2,

cos θy =

√6

3, sin θy =

√3

3,

cos θ =

√3

2, sin θ =

1

2.

Page 25: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

2.7. Scalarea fata de un punct oarecare 25

Prin urmare, descompunerea matricei de rotatie va fi

Rot∆(θ) =

1 0 0 0

0

√2

2

√2

20

0 −√

2

2

√2

20

0 0 0 1

·

√6

30

√3

30

0 1 0 0

−√

3

30

√6

30

0 0 0 1

·

√3

2−1

20 0

1

2

√3

20 0

0 0 1 0

0 0 0 1

·

·

√6

30 −

√3

30

0 1 0 0√

3

30

√6

30

0 0 0 1

·

1 0 0 0

0

√2

2−√

2

20

0

√2

2

√2

20

0 0 0 1

2.7 Scalarea fata de un punct oarecare

Fie sx, sy, sz trei numere reale nenule si P (x0, yo, z0) un punct fixat. Pentru a face o scalare de factoride scala (sx, sy, sz) relativ la punctul P , aplicam o translatie care aduce punctul P ın origine, facemscalarea de factorii indicati relativ la origine, apoi aplicam translatia care aduce ınapoi punctul P ınpozitia initiala. Avem, cu alte cuvinte,

SP (sx, sy, sz) = T (x0, y0, z0) · S(sx, sy, sz) · T (−x0,−y0,−z0) =

=

1 0 0 x0

0 1 0 y0

0 0 1 z0

0 0 0 1

·sx 0 0 00 sy 0 00 0 sz 00 0 0 1

·

1 0 0 −x0

0 1 0 −y0

0 0 1 −z0

0 0 0 1

=

=

sx 0 0 (1− sx)x0

0 sy 0 (1− sy)y0

0 0 sz (1− sz)z0

0 0 0 1

2.8 Reflexia fata de un plan oarecare

Ideea, ın cazul reflexiei relativ la un plan oarecare, este foarte asemanatoare cu cea din cazul rotatieiın jurul unei axe oarecare. Intr-adevar, sa presupunem ca planul nostru este dat prin versorul normaln = (nx.ny, nz) si printr-un punct al sau, fie el P (x0, y0, z0). Noi stim sa facem reflexiile fata deplanele de coordonate, prin urmare intentia este sa transformam planul de rotatie ıntr-unul dintre acesteplane. In acest scop, trebuie sa ındeplinim doua conditii:

Page 26: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

26 Capitolul 2. Transformari geometrice ın spatiu

• planul de reflexie trebuie transformat ıntr-un plan care trece prin origine;

• versorul normal trebuie transformat ıntr-un versor de coordonate.

Daca cumva planul de reflexie este deja paralel cu unul dintre planele de coordonate (sa zicem xOy),atunci n este, deja, egal cu k, prin urmare reflexia fata de planul Π are o forma foarte simpla:

RΠ = T (x0, y0, z0) ·Rxy · T (−x0,−y0,−z0) =

=

1 0 0 x0

0 1 0 y0

0 0 1 z0

0 0 0 1

·

1 0 0 00 1 0 00 0 −1 00 0 0 1

·

1 0 0 −x0

0 1 0 −y0

0 0 1 −z0

0 0 0 1

=

1 0 0 00 1 0 00 0 −1 2z0

0 0 0 1

Daca Π nu este paralel cu nici unul dintre planele de coordonate, atunci:

1) facem ıntai translatia T (−x0,−y0,−z0) astfel ıncat planul sa treaca prin origine;

2) facem o rotatie de unghi θx ın jurul axei Ox, astfel ıncat planul Π sa treaca prin axa Oy (sau, ceea ceeste acelasi lucru, astfel ıncat, astfel ıncat versorul normal sa ajunga ın planul xOz);

3) facem o rotatie de unghi −θy ın jurul axei Oy astfel ıncıt planul de reflexie sa se suprapuna oesteplanul xOy (adica n sa ajunga sa coincida cu k);

4) facem reflexia fata de planul xOy;

5) aplicam inversele transformarilor 1)–3), luate ın ordine inversa.

Unghiurile θx si θy sunt aceleasi cu care rotim versorul director al axei ın cazul rotatiei ın jurul unei axearbitrare, adica avem:

sin θx =ny√n2y + n2

z

, cos θx =nz√n2y + n2

z

,

respectiv

cos θy =√n2y + n2

y, sin θy = nx.

Asadar, matricea reflexiei fata de planul Π este

RΠ = T (x0, y0, z0) · Rotx(−θx) · Roty(θy) ·Rxy · Roty(−θy) · Rotx(θx) · T (−x0,−y0,−z0)

Page 27: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

2.8. Reflexia fata de un plan oarecare 27

sau

RΠ =

1 0 0 x0

0 1 0 y0

0 0 0 z0

0 0 0 1

·

1 0 0 0

0nz√n2y + n2

z

ny√n2y + n2

z

0

0 − ny√n2y + n2

z

nz√n2y + n2

z

0

0 0 0 1

·

·

√n2y + n2

z 0 nx 0

0 1 0 0

−nx 0√n2y + n2

z 0

0 0 0 1

·

1 0 0 00 1 0 00 0 −1 00 0 0 1

·

·

√n2y + n2

z 0 −nx 0

0 1 0 0

nx 0√n2y + n2

z 0

0 0 0 1

·

1 0 0 0

0nz√n2y + n2

z

− ny√n2y + n2

z

0

0ny√n2y + n2

z

nz√n2y + n2

z

0

0 0 0 1

·

·

1 0 0 −x0

0 1 0 −y0

0 0 0 −z0

0 0 0 1

.

Exemple. a) Sa determinam matricea reflexiei fata de planul

Π : x+ 2y − 3z + 1 = 0.

Determinam, mai ıntai, un punct din plan. Daca punem y = z = 0, obtinem, imediat, x = −1, prinurmare am obtinut punctul P (x0, y0, z0) ≡ P (0, 0,−1). Mai departe, determinam un vector normalla plan. Fie el N(1, 2,−3). Atunci versorul normal la plan corespunzator va fi

n = n

(1√14,

2√14,− 3√

14

).

Calculam acum functiile trigonometrice ale unghiurilor θx si θy. Dupa cum am vazut mai sus, avem

sin θx =ny√n2y + n2

z

=

2√14√

414 + 9

14

=2√13,

cos θx =nz√n2y + n2

z

=− 3√

14√414 + 9

14

= − 3√13,

Page 28: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

28 Capitolul 2. Transformari geometrice ın spatiu

sin θy = nx =1√14, cos θy =

√n2y + n2

z =

√13√14.

Prin urmare, utilizand formula de mai sus, matricea transformarii va fi

RΠ =

1 0 0 −10 1 0 00 0 0 00 0 0 1

·

1 0 0 0

0 − 3√13

2√13

0

0 − 2√13

− 3√13

0

0 0 0 1

·

·

√13√14

01√14

0

0 1 0 0

− 1√14

0

√13√14

0

0 0 0 1

·

1 0 0 00 1 0 00 0 −1 00 0 0 1

·

·

√13√14

0 − 1√14

0

0 1 0 0

1√14

0

√13√14

0

0 0 0 1

·

1 0 0 0

0 − 3√13

− 2√13

0

02√13

− 3√13

0

0 0 0 1

·

·

1 0 0 10 1 0 00 0 0 00 0 0 1

.

b) Vom determina acum matricea reflexiei fata de planul

Π : x− y + 1 = 0.

Remarcam, imediat, ca acest plan este paralel cu axa Oz. Constatam cu usurinta ca, de exemplu,punctul P (0, 1, 0) apartine planului, iar ın calitate de versor al normalei planului putem lua vectorul

n = n

(1√2,− 1√

2, 0

).

Functiile trigonometrice ale unghiurilor θx si θy sunt

sin θx =ny√n2y + n2

z

= 1,

Page 29: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

2.9. Probleme 29

cos θx =nz√n2y + n2

z

= 0

sin θy = nx =1√2, cos θy =

√n2y + n2

z =1√2,

prin urmare primul unghi este de 90◦, iar al doilea este de 45◦. Procedand ca la exemplul precedent,obtinem

RΠ =

1 0 0 00 1 0 10 0 0 00 0 0 1

·

1 0 0 00 0 1 00 −1 0 00 0 0 1

·

·

1√2

01√2

0

0 1 0 0

− 1√2

01√2

0

0 0 0 1

·

1 0 0 00 1 0 00 0 −1 00 0 0 1

·

·

1√2

0 − 1√2

0

0 1 0 0

1√2

01√2

0

0 0 0 1

·

1 0 0 00 0 −1 00 1 0 00 0 0 1

·

·

1 0 0 00 1 0 −10 0 0 00 0 0 1

.

2.9 Probleme

In aceasta sectiune, ABC este triunghiul de varfuri A(1, 2, 2), B(2, 4, 3), C(4, 3, 2).

Problema 2.1. Determinati imaginea triunghiului ABC printr-o rotatie de 45◦ ın jurul dreptei care treceprin punctele P (2, 2, 1) si Q(1, 1, 1).

Problema 2.2. Determinati imaginea triunghiului ABC printr-o rotatie de 30◦ ın jurul dreptei

(∆) :x− 1

2=y − 3

0=z − 2

2.

Page 30: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

30 Capitolul 2. Transformari geometrice ın spatiu

Problema 2.3. Determinati imaginea triunghiului ABC printr-o rotatie de 60◦ ın jurul dreptei

(∆) :

{x− y + z − 1 = 0,

2x+ y = 0.

Problema 2.4. Determinati imaginea triunghiului ABC printr-o scalare simpla neuniforma, relativ lapunctul Q(2, 5, 3), de factori de scala (2, 1, 3).

Problema 2.5. Determinati imaginea triunghiului ABC prin reflexia fata de planul x− y+ 2z− 1 = 0.

Problema 2.6. Determinati imaginea triunghiului ABC prin reflexia fata de planul care trece prin punc-tele O(0, 0, 0), P (1, 1, 1), Q(1, 3, 2).

Page 31: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

CAPITOLUL 3

Curbe Bezier si B-spline

3.1 Curbe polinomiale ın forma lui Bezier

In mod clar, cele mai simple curbe la caree ne putem gandi sunt dreptele. Dupa cum stim din geometriaanalitica, ele au au descriere foarte simpla prin intermediul unor functii de gradul ıntai. Astfel, unsegment de dreapta ın plan poate fi descris prin ecuatiile{

x = x0 + a · t,y = y0 + b · t

, t ∈ [0, 1], (3.1.1)

unde x0, y0, a si b sunt constante, sau, ın forma vectoriala:

r(t) = (x0 + a · t, y0 + b · t), t ∈ [0, 1]. (3.1.2)

Este natural sa ıncercam sa studiem curbe polinomiale, cu alte cuvinte curbe obtinute ınlocuind ınecuatiile (3.1.1), functiile de gradul ıntai prin functii polinomiale (de grad mai mare de 1). Dupa cumse stie din analiza, aceasta alegere este departe de a fi accidentala. De fapt, toate functiile continue potfi aproximate uniform prin functii polinomiale (teorema Weierstrass-Stone). Nu ne intereseaza aceastaabordare. Tot ce vrem este sa ilustram cateva notiuni de baza legate de cele mai simple curbe utilizate ıngrafica pe calculator, asa-numitele curbe Bezier.

Consideram, de exemplu, urmatoarea curba:

r(t) = (t+ 5t+ t3, 1 + t+ t2 + t3), t ∈ [0, 1]. (3.1.3)

Sa presupunem ca deja calculatorul “stie” ca aceasta trebuie sa fie o curba cubica. Acum problema este:ce alte informatii trebuie sa ma furnizam pentru a descrie complet aceasta curba? O prima idee ar fisa folosim coeficientii celor doua polinoame, cu alte cuvinte sa descompunem polinoamele dupa bazacanonicaompose the polynomials with respect to the canonical basis {1, t, t2, t3} a spatiului vectorial alpolinoamelor cubice. In mod echivalent, asta ınseamna sa rescriem (3.1.3) sub forma

r(t) = (0, 1) + (1, 1)t+ (5, 1)t2 + (1, 1)t3. (3.1.4)

31

Page 32: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

32 Capitolul 3. Curbe Bezier si B-spline

Coeficientii vectoriali sunt, desigur, pana la niste factori constanti, tocmai derivatele lui r pana la ordinul3 (inclusiv derivata de ordinul zero), evaluate ın origine. Astfel, doar uitandu-ne la coeficienti, obtinemmulte informatii despre unul dintre capetele curbeie. Totusi, acesti coeficienti nu sunt foarte intuitivi sinu este foarte clar (ın special pentru non-experti) cum se modifica forma curbei daca schimbam unuldintre coeficienti.

In multe situatii, curbele polinomiale sunt folosite ın programe de grafica interactiva. Utilizatoriiacestor programe nu sunt ıntotdeauna informaticieni si/sau geometrii. De aceea, trebuie sa le fie oferitaposibilitatea de a modifica interactiv forma acestor curbe, fara a trece, fara a trece printr-un proces decalcul, ıntr-un mod intuitiv, modficand vectorii care le definesc sau, ceea ce este acelasi lucru, modificandpozisia punctelor definite de acesti vectori, asa-numitele puncte de control.

O modalitate de a realiza acest lucru a fost descoperita, ın mod independent, de catre doi inginerifrancezi, Paul Bezier, care lucra pentru Renault, si Andrde Casteljau, care lucra penbtru Citroen. Ideealor a fost sa utilizeze, ınlocul bazei canonice a spatiului functiilor polinomiale, o alta baza, formata dinasa-numitele polinoame Bernstein, definite pentru fiecare n ≥ 1 si fiecare k ∈ {0, . . . , n}, prin

Bkn(t) = Cknt

k(1− t)n−k, t ∈ [0, 1], (3.1.5)

unde Ckn sunt coeficientii binomiali.Este usor de verificat ca polinoamele Bernstein formeaza, ıntr-adevar, o baza a spatiului polinoamelor

de gradul n (adica genereaza spatiul si sunt liniar independente). In fapt, cum sunt n + 1 polinoameBernstein (adica numarul lor coincide cu dimensiunea spatului), este suficient sa demonstram fie ca suntliniar independente sau ca formeaza un sistem de generatori.

Daca n = 1, avem, evident, numai doua polinoame Bernstein, t si 1−t. Daca n = 2, 3, 4, 5, graficelelor sunt indicate ın figura 3.1. Suntem acum gata sa definim curbele Bezier.

Definitia 3.1. Fie P0, . . . , Pn n + 1 puncte ın plan, date prin vectorii lor de pozitie a0, . . . ,an. CurbaBezier cu punctele de control P0, . . . Pn este, prin definitie, curba data de

r(t) =

n∑k=0

Bkn(t)ak. (3.1.6)

Cum polinoamele Bernstein au gradul n, rezulta ca o curba Bezier cu n + 1 puncte de control esteo curba polinomiala de fgradul n. Asta nu exclude, totusi, posibilitatea ca termenul de gradul n ın t safie egal cu zero. Inseamna doar ca gradul maxim al polinoamelor implicate poate sa fie egal cu n. Infigura 3.1 am reprezentat grafic mai multe curbe Bezier de grad pana la 9, ımpreuna cu poligoanele lorde control.

3.2 Algoritmul lui de Casteljau

Algoritmul lui de Casteljau este un algoritm pentru construirea geometrica a unui punct de pe o curbaBezier daca se da valoarea parametrului asociata punctului de pe curba. Astfel, fie et P0, P1, . . . , Pncele n + 1 puncte de control. Daca t ∈ [0, 1], ıncepem prin a divide segmentele P+iPi+1, i = 0, . . . , nın raportul t/(1 − t). Obtinem, astfel, alte n puncte, P 1

0 , . . . P1n−1. Itera m aceasta procedura pana

cand raman doar doa puncte, Pn0 si Pn1 . Este nevoiue, an mod clar, de n iteratii. Atunci, dupa cum

Page 33: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.2. Algoritmul lui de Casteljau 33

(a) n=2 (b) n=3

(c) n=4 (d) n=5

Figura 3.1: Polinoamele Bernstein pentru n = 2, 3, 4, 5

Page 34: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

34 Capitolul 3. Curbe Bezier si B-spline

(a) n = 2 (b) n = 3 (c) n = 3

(d) n = 3 (e) n = 3 (f) n = 3

(g) n = 5 (h) n = 5 (i) n = 7

(j) n = 9 (k) n = 9

Figura 3.2: Curbe Bezier cu diferite pozitii ale pnctelor de control

Page 35: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.2. Algoritmul lui de Casteljau 35

de Casteljau afirma si noi vom demonstra, punctul r(t) de pe curba va fi punctul care divide segmentulPn0 P

n1 ın raportul t/(1− t).

Descrie oare acest algoritm, ıntr-adevar, curba Bezier cautata? Pentru a raspunde la aceasta ıntrebare,vom folosui o metoda descrisa de Jens Gravesen, care scoate ın evidenta aspectul algebric al problemei.

Incepem prin a nota cu a0, . . . ,an vectorii de pozitie ai punctelor de control si cu al0, . . . ,aln−l

vectorii de pozitie ai punctelor obtinute dupa iteratia de ordinul l (cu conventia ca a0i = ai, i = 0, . . . , n.).

Din descrierea geometrica a algoritmului, este clar ca o itereaetie este descrisa prin relatia

alk(t) = (1− t)al−1k (t) + tal−1

k+1(t), (3.2.1)

unde k = 0, . . . , n− l si l = 1, . . . , n. Relatia (3.2.1) poate fi transcrisa cu usurinta ın forma matricialaal0(t)

...

...aln−l(t)

=

1− t t 0 · · · · · · · · · 0

0 1− t 0 · · · · · · · · · ......

. . . . . . . . . . . . . . . 00 0 0 · · · 0 1− t t

al−10 (t)

...

...al−1n−l+1(t)

. (3.2.2)

Daca notam cu Aln−l(t) matricea punctelor obtinute dupa iteratia de ordinul l, atunci ultima relatie se

poate scrie, mai compact, sub forma then the last relation can be rewritten, for convenience, as

Aln−l(t) = ((1− t)Rn−l + tLn−l)A

l−1n−l+1(t), (3.2.3)

unde matricele Rn−l si Ln−l sunt matrici dinMn−l,n−l+1(R), date de

Rn−l =

1 0 0 · · · 0 0 00 1 0 · · · 0 0 0...

......

. . ....

......

0 0 0 · · · 0 1 0

, (3.2.4)

respectiv

Ln−l =

0 1 0 · · · 0 0 00 0 1 · · · 0 0 0...

......

. . ....

......

0 0 0 · · · 0 0 1

. (3.2.5)

Operatorii liniari asociati cu aceste matrici pur si simplu elimina primul, respectiv ultimul punctdintr-un sir de puncte.

Vom folosi acum operatorii Rn−l si Ln−l pentru a defini alti doi operatori care vor juca un rol centralın povestea noastra:

∆n−l = Ln−l −Rn−l, (3.2.6)

numiti operatorul de diferenta avansata si operatorul lui de Casteljau

Cn−l(t) = (1− t)Rn−l + tLn−l, ∀t ∈ R. (3.2.7)

Page 36: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

36 Capitolul 3. Curbe Bezier si B-spline

Matricile asociate cu acesti operatori sunt

∆n−l =

−1 1 0 · · · 0 0 00 −1 1 · · · 0 0 0...

......

. . ....

......

0 0 0 · · · 0 −1 1

, (3.2.8)

respectiv

Cn−l(t) =

1− t t 0 · · · 0 0 0

0 1− t t · · · 0 0 0...

......

. . ....

......

0 0 0 · · · 0 1− t t

(3.2.9)

Modul ın care actioneaza ∆n−l este clar: el asociaza punctelor a0, . . . ,an diferentelor a1−a0, . . . ,an−an−1.

De aici ıncolo vom scrie indicii operatorilor doar acolo unde este necesar, daca ei nu sunt clari dincontext. Inainte de a ne ıntoarce la algoritmul nostru, mentionam urmatorul resultat, elementar, dar util:

Lemma 3.2.1. Operatorii R i L comuta, ın sensul ca pentru orice k ≥ 2 avem

Rk−1Lk = Lk−1Rk. (3.2.10)

Demonstratie Nu trebuie sa facem nici un calcul, este suficient sa ne gandim la modul ın care actioneazacei doi operatori. Astfel, sa presupunem ca ni se da omultime formata din k+1 puncte, a0, . . . ,ak; atunciLk elimina a0 si apoi, din cele k puncte ramase, Rk−1 ıl elimina pe ultimul, anume pe ak. Reciproc,daca multimii de k + 1 puncte ıi aplicam prima data Rk, atunci este eliminat mai ıntai ultimul punct,anume ak si apoi (prin Lk−1) primul punct, adica a0. Astfel, ın ambele cazuri, rezultatul este acelasi ınambele cazuri, anume a1, . . . ,ak−1.

Corollary 3.2.1. Oricare doi dintre operatorii R,L,∆, C(t) comuta, ın acelasi sens ca ın lema prece-denta.

Demonstratie Am vazut deja ca L si R comuta. Sa verificam, de exemplu, ca R si ∆ commuta. Avem

Rk−1∆k = Rk−1Lk −Rk−1Rk = Lk−1Rk −Rk−1Rk = (Lk−1 −Rk−1)Rk = ∆k−1Rk.

Celelalte reguli de comutare rezulta ın acelasi mod, toate fiind consecinte imediate ale comutativitatiioperatorilor de baza, L si R.

Suntem gata sa demonstram prima teorema importanta.

Teorema 3.2.1. Curba construita prin algoritmul lui de Casteljau este curba Bezier care corespundepunctelor de control date.

Demonstratie Curba construita prin algoritmul lui de Casteljau este, assa cum ne putem convinge foarteusor,

r(t) = C(t)n

a0...an

.

Page 37: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.2. Algoritmul lui de Casteljau 37

Ecuatia precedenta trebuie citia, desigur, sub forma:

r(t) = C1(t)C2(t) · · ·Cn(t)

a0...an

.Inainte de a face demonstratia ın toata generalitatea sa, vom trata, mai ıntai, cazul special, dar foarteimportant, al curbelor Bezier cubice. In acest caz avem patru puncte de control, a0,a1,a2 si a3. MatricileC pana la ordinul al treilea sunt

C1(t) =[1− t t

], C2(t) =

[1− t t 0

0 1− t t

], C3(t) =

1− t t 0 00 1− t t 00 0 1− t t

,de aceea, avem

r(t) = C1(t)C2(t)C3(t)

a0

a1

a2

a3

=[1− t t

] [1− t t 00 1− t t

]1− t t 0 00 1− t t 00 0 1− t t

a0

a1

a2

a3

=

=[1− t t

] [1− t t 00 1− t t

](1− t)a0 + ta1

(1− t)a1 + ta2

(1− t)a2 + ta3

=[1− t t

] [(1− t)[(1− t)a0 + ta1] + t[(1− t)a1 + ta2](1− t)[(1− t)a1 + ta2] + t[(1− t)a2 + ta3]

]=

=[1− t t

] [(1− t)2a0 + 2t(1− t)a1 + t2a2

(1− t)2a1 + 2t(1− t)a2 + t2a3

]=

= (1− t)[(1− t)2a0 + 2t(1− t)a1 + t2a2] + t[(1− t)2a1 + 2t(1− t)a2 + t2a3] =

= (1− t)3a0 + 3t(1− t)2a1 + 3t2(1− t)a2 + t3a3 = B03(t)a0 +B1

3(t)a1 +B23(t)a2 +B3

3(t)a3,

cu alte cuvinte, r este curba Bezier cu punctele de control a=0,a1,a2,a3.In calculele pe care le-am facut, n-am folosit ın modul cel mai eficient reprezentarea algebrica a

algoritmului lui de Casteljau. In fapt, am facut doar iteratii. Ideea lui Gravesen a fost sa executam, maiıntai, operatiile matriciale si apoi sa aplicam operatorul final punctelor de control. Vom reface calculul,pentru a ıntelege mai bine ce se petrece.

r(t) = C1(t)C2(t)C3(t)

a0

a1

a2

a3

=[1− t t

] [1− t t 00 1− t t

]1− t t 0 00 1− t t 00 0 1− t t

a0

a1

a2

a3

=

=[1− t t

] [(1− t)2 2t(1− t) t2 00 (1− t)2 2t(1− t) t2

]a0

a1

a2

a3

=[(1− t)3 3t(1− t)2 3t2(1− t) t3

] a0

a1

a2

a3

=

=[B0

3(t) B13(t) B2

3(t) B33(t)

] a0

a1

a2

a3

= B03(t)a0 +B1

3(t)a1 +B23(t)a2 +B3

3(t)a3.

Page 38: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

38 Capitolul 3. Curbe Bezier si B-spline

Se poate vedea ca C(t)3 ≡ C1(t)C2(t)C3(t) este, de fapt, o linie a matricii care are ca si componentetocmai polinoamele Bernstein de gradul trei. Vom vedea acum ca acest rezultat este valabil pentru oricenumar natural n.

Pe de alta parte, curba Bezier cu punctele de control P0, . . . , Pn este, dupa cum am vazut mai de-vreme, data de

ρ(t) =n∑k=0

Bkn(t)Pk,

undeBkn(t) sunt polinoamele Bernstein. Trebuie sa demonstram, prin urmare, ca cele doua curbe coincid.

Incepem prin a evalua C(t)n. Dupa cum stim deja, C(t) = tL+ (1− t)R, de aceea (ıntrucat R si Lcomuta!) putem folosi formula binomului si obtinem

C(t)n ≡ (tL+ (1− t)R)n =

n∑k=0

Ckntk(1− t)n−kLkRn−k =

n∑k=0

Bkn(t)LkRn−k.

Pe de alta parte, este usor de vazut ca

LkRn−k(P0, . . . , Pn) = Pk.

Intr-adevar, dupa cum am remarcat mai devreme, R sterge un punct din dreapta listei, ın timp ce L faceacelasi lucru, dar ıncepand din capatul din stanga al listei. Prin urmare, sa aplicam R de n − k oriınseamna sa stergem punctele de la Pk+1 pana la Pn (ın ordine inversa), ın timp ce sa aplicam L de kori ıInseamna sa stergem punctele de la P0 pana la Pk−1 (ın aceasta ordine). Ne ramane, panaE la urma,numai punctul Pk.

Astfel, avem

r(t) =

n∑k=0

Bkn(t)Pk = ρ(t).

3.3 Calculul derivatelor unei curbe Bezier

In multe calcule legate de curbe si suprafete, trebuie sa calculam derivatele functiilor care apar. Inparticular, vom avea nevoie de derivatele de diferite ordine ale unei curbe Bezier. De obicei, pebtru functiiarbitrare, derivatele sunt construite dioar numeric. Totusi, ın cazul curbelor Bezie putem gasi formulealgebrice de diferentiere foarte simple, exprimate cu ajutorul operatorilor introdusi mai devreme.

Incepem cu urmatorul rezultat, privitor la derivata de ordinul ıntai:

Propozitia 3.3.1. Derivata de ordinul ıntai a unei curbe Bezier de ordinul n, cu punctele de control datede vectorii de pozitie a0, . . . ,an este data de

r′(t) = n(an−1

1 − an−10

),

unde an−10 si an−1

1 sunt penultimele puncte intermediare ın algoritmul lui de Casteljau.

Page 39: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.3. Calculul derivatelor unei curbe Bezier 39

Demonstratie Incepem cu reprezentarea operatoriala a curbei Bezier, folosind operatorul lui Casteljau,

r(t) = C(t)n

a0...an

,

unde, desigur, C(t)n ınseamna

C(t)n = C1(t) · C2(t) · · ·Cn(t).

Astfel, ın esenta, pentru a deriva r, trebuie doar sa stim sa derivamC, ceea ce este mai simplu. Renuntandla indici, avem, dupa cum am vazut mai devreme,

C(t) = R+ t∆.

Cum R si ∆ sunt matrici constante, avem, evident,

d

dtC(t) = ∆.

Aceasta ınseamna ca derivata lui C(t)n este data de

d

dt(C(t)n) =

n∑k=1

C(t)k−1

(d

dtC(t)

)C(t)n−k =

n∑k=1

C(t)k−1∆C(t)n−k.

Folosind faptul ca C si ∆ commuta, obtinem

d

dt(C(t)n) = n∆C(t)n−1.

Aici ∆ este, de fapt, ∆1, ın timp ce C(t)n−1 trebuie citit

C(t)n−1 ≡ C2(t) · · ·Cn(t).

Astfel, derivata curbei Bezier este data de

r′(t) =d

dt(C(t)n)

a0

a1...an

= n∆1C2(t) · C3(t) · · ·Cn(t)

a0

a1...an

= n∆1

(an−1

0

an−10

)= n

(−1 1

)(an−10

an−11

)= n

(an−1

1 − an−10

).

Observatie. Folosind, ınca o data, faptul ca operatorii ∆ si C(t) comuta, ın sensul indicat mai sus,formula pentru derivarea lui C(t)n poate fi scrisa si sub forma

d

dt(C(t)n) = nC(t)n−1∆,

Page 40: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

40 Capitolul 3. Curbe Bezier si B-spline

unde, de data aceasta, ∆ este, de fapt, ∆n, ın timp ce C(t)n−1 trebuie citit ca

C(t)n−1 ≡ C1(t) · C2(t) · · ·Cn−1(t).

Astfel, formula pentru derivata curbei Bezier devine

r′(t) = nC(t)n−1∆

a0

a1...an

= nC1(t) · C2(t) · · ·Cn−1(t) ·∆n

a0

a1...an

=

= nC(t)n−1

−1 1 0 · · · 0 0 0

0 −1 1. . . 0 0 0

.... . . . . . . . . . . . . . .

...0 0 0 · · · 0 −1 1

a0

a1...an

=

= nC(t)n−1

a1 − a0

a2 − a1...

an − an−1

= C(t)n−1

n (a1 − a0)n (a2 − a1)

...n (an − an−1)

.

Cu alte cuvinte, prima derivata a curbei Bezier de ordinul n definita de punctele de control a0, . . . ,aneste curba Bezier de gradul n − 1, definita de punctele de control n(a1 − a0), . . . , n(an − an−1). Nueste ncici o surriza, desigur, ca derivata este o curba Bezier de grad n − 1. La urma urmei, r(t) este ofunctie polinomiala de gradul n, de aceea este evident ca derivata sa este o functie polinomiala de graduln − 1. Ce este remarcabil aici este modul simplu ın care se exprima punctele sale de control ın functiede punctele de control ale curbei initiale.

Din observatia precedenta rezulta imediat ca tangentele la capetele curbei Bezier sunt dreptele suportale primului, repectiv ultimului segment din poligonul de control al curbei. ntr-devar, dupa cum am vazutmai devreme, primul si ultimul punct de control de pe orice curba Bezier se afla pe curba si ele coincidecu cele doua capete ale curbei. Aplicand acest rezultat curbei derivate, obtinem ca

r′(0) = n(a1 − a0),

r′(1) = n(an − an−1).

Iterand, obinem, ın ceneral, urmatorul rezultat:

Propozitia 3.3.2. Derivata de ordinul k al unei curbe Bezier r(t) de gradul n, cu punctele de controla0, . . . ,an este data de

r(k) =n!

(n− k)!∆kC(t)n−k

a0

a1...an

(3.3.1)

Page 41: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.4. Precizia liniara si ridicarea gradului 41

sau de

r(k) =n!

(n− k)!C(t)n−k∆k

a0

a1...an

(3.3.2)

Prima expresie a derivatei (ecuatia (3.3.1) spune, pur si simplu, ca pentru a obtine derivata de ordinul,trebuie sa facem n − k pasi ın algoritmul lui de Casteljau si apoi sa facem diferente repetate (de k ori).Cea de-a doua formula (ecuatia (3.3.2) spune ca derivata de ordinul k este curba Bezier de gradul n− kcu punctele de control obtinute efectuand k diferente repetate ale punctelor de control si apoi ınmultindpunctele rezultate cu n!/(n − k)!. In fiecare dintre cazuri, procesul de derivare este foarte simplu si sereduce la niste ınmultiri cu matrici rare (pentru care aproape toate elementele sunt zero).

3.4 Precizia liniara si ridicarea gradului

Punctele de control P0, . . . , Pn ale unei curbe Bezier de gradul n pot fi situate toate pe segmentul dedreapta P0Pn. In acest caz, ne asteptam ca suportul curbei sa fie chiar acest segment. Chiar asa staulururile, dupa cum ne putem convinge imediat, folosind, de exemplu, algoritmul lui de Casteljau. Totusi,ın general, curba este tot de gradul n, ın loc sa fie de gradul ıntai, asa cum pare mai natural pentru unsegment de dreapta. Este, de aceea, natural sa ne ıntrbam ın ce conditii curba Bezier este liniara, chiardaca initial a fost construita plecand de la n + 1 puncte de control. Vom vedea ca punctele de controltrebuie sa fie uniform distribuite pe segmentul P0Pn. Aceasta proprietate a curbelor Bezier se numesteprecizie liniara. Mai precis, avem urmatoarea propozitie.

Propozitia 3.4.1. Fie a0, . . . ,an vectorii de pozitie ai punctelor de control ale unei curbe Bezier r(t).Atunci

r(t) = (1− t)a0 + tan

daca si numai daca avem

ak =n− kn

a0 +k

nan, k = 1, . . . , n− 1.

Demonstratie Intrucat r(0) = a0, avem

r(t) = (1− t)a0 + tan ⇐⇒ r′(t) = an − a0.

Dar, asa cum am vazut mai devreme, r′(t) este o curba Bezier cu punctele de control n(a1−a0), . . . , n(an−an−1), deci aceasta se ıntampla daca si numai daca

n(ak − ak−1) = an − a0,

pentru orice k = 1, . . . , n. Asta se ıntampla, ın mod clar, daca si numai daca

ak =n− kn

a0 +k

nan, k = 1, . . . , n− 1.

Page 42: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

42 Capitolul 3. Curbe Bezier si B-spline

Putem aborda aceasta problema si dintr-o perspectiva diferita. Putem porni cu o curba Bezier degradul ıntai, definita de doua puncte de control. Propozitia pe care am demonstrat-o ne arata ca dacaintroducem puncte suplimentare alese judicios, aceeai curba poate fi reprezentata ca o curba de grad maimare. Aceasta poate fi necesar daca vrem mai mult control si, dupa introducerea punctelor suplimentare,putem sa mutam pentru a obtine forma dorita pentru curba noastra. Un procedeu ar se poate utiliza pentrucurbe Bezier de grad arbitrart si acest procedeu numeste ridicarea gradului. Urmatoarea propoizitie nearata cum functioneaza lucrurile. In particular, vom vedea ca, prin ridicarea gradului, nu doar ca seinsereaza un punct de control suplimentar, dar toate celelalte se modifica, cu exceptia primului si aultimului, desigur.

Propozitia 3.4.2. Fie a0, . . . ,an vectorii de pozitie ai punctelor de control ale unei curbe Bezier r(t),de gradul n. Privita ca o curba de grad n+ 1, r(t) are punctele de control b0, . . . ,bn+1, date de

b0 = a0

bk =n+ 1− kn+ 1

ak +k

n+ 1ak−1 k = 1, . . . , n

bn+1 = an.

Demonstratie Este mai simplu sa demonstram aceasta propozitie folosind reprezentarea Bernstein a cur-bei Bezier. Vom folosi doar prelatia dintre polinoamele Bernstein de gradul n i cele de grad n + 1.Remarcam, ınainte de toate, ca avem, pentru orice i = 0, . . . , n,

(1− t)Bin(t) =

n!

(n− i)!i! (1− t)n+1−iti =

n+ 1− in+ 1

(n+ 1)!

(n+ 1− i)!i! (1− t)n+1−iti =

n+ 1− in+ 1

Bin+1(t)

si

tBin(t) =

n!

(n− i)!i! (1− t)n−iti+1 =

i+ 1

n+ 1

(n+ 1)!

((n+ 1)− (i+ 1))!(i+ 1)!(1− t)(n+1)−(i+1)ti+1 =

=i+ 1

n+ 1Bi+1n+1(t).

De aceea,

r(t) ≡ ((1− t) + t)r(t) =

n∑i=0

((1− t)Bi

n(t) + tBin(t)

)ai =

n∑i=0

(n+ 1− in+ 1

Bin+1(t) +

i+ 1

n+ 1Bi+1n+1(t)

)ai =

= B0n+1(t)a0 +

n∑i=1

n+ 1− in+ 1

Bin+1(t)ai +

n−1∑i=0

i+ 1

n+ 1Bi+1n+1(t)ai +Bn+1

n+1(t)an =

= B0n+1(t)a0 +

n∑i=1

Bin+1(t)

(n+ 1− in+ 1

ai +i

n+ 1an−1

)+Bn+1

n+1(t)an =

n+1∑i=0

Bin+1(t)bi.

Page 43: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.5. Subdivizarea si micsorarea variatiei 43

3.5 Subdivizarea si micsorarea variatiei

Uneori trebuie sa ınlaturam o parte dintr-o curba Bezier. Am vrea, totusi, ca partea din curba care ramanesa fie reprezentata tot sub forma unei curbe Bezier. Pentru a atinge acest deziderat, trebuie sa calculamun alt set de puncte de control pentru aceasta noua curba. Mai ıntai, ınsa, trebuie sa vedem cum putemface restrectia ın sine. Avem nevoie, ınainte de toate, de urmatoarea lema:

Lemma 3.5.1. Operatorul lui de Casteljau C(t) este invariant fata deo schimbare afina de parametru.Aceasta ınseamna ca pentru orice trei numere reale a, b, t avem

C((1− t)a+ tb) = (1− t)C(a) + tC(b). (3.5.1)

Cu alte cuvinte: C aplicat unei combinatii afine a lui a si b este combinatia afina corespondenta a luiC(a) si C(b), unde “corespondente” ınseamna ca folosim acelasi parametru (t ın cazul nostru).

Demonstratie Demonstratia se reduce la un calcul direct, folosind expresia lui C ın functie de operatoriiL si R. Astfel, membrul stang al relatiei (3.5.1) este

C((1− t)a+ tb)) = (1− ((1− t)a+ tb))R+ ((1− t)a+ tb)L = (1− a+ ta− tb)R+ (a− ta+ tb)L,

ın timp ce membrul drept este

(1− t)C(a)+ tC(b) = (1− t)((1−a)R+aL)+ t((1−b)R+bL) = (1−a+ ta− tb)R+(a− ta+ tb)L

si, ın mod clar, cei doi membrii coincid.

Consideram, acum, o curba polinomiala r de gradul n, definita pe un interval [a, b], unde a si b suntnumere reale arbitrare. Asociem acestei curbe curba ρ : [0, 1]→ Rm dsata de ρ(t) = r ((1− t)a+ tb).Atunci, ın mod clar, ρ si r au acelasi suport. De fapt, putem vedea usor ca ρ este doar o reparametrizarea lui r. ρ este, ın mod evident, o curba polinomiala de acelasi grad cu r, de aceea are, de asemenea, oreprezentare Bezier. Urmatoarea teorema ne da legatura dintre punctele de control ale celor doua curbe.

Teorema 3.5.1. Fie r o curba Bezier de gradul n, cu punctele de control a0, . . . ,an. Atunci curbat→ ρ(t) = r ((1− t)a+ tb) este o curba Bezier de gradul n cu punctele de control b0, . . . ,bn date de

bk = C(a)n−kC(b)k

a0...an

. (3.5.2)

Demonstratie Din definitie, avem ca

ρ(t) = r ((1− t)a+ tb) = C ((1− t)a+ tb)n

a0...an

,

de aceea, ceea ce avem de demonstrat este ca

C ((1− t)a+ tb)

a0...an

= C(t)n

b0...bn

.

Page 44: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

44 Capitolul 3. Curbe Bezier si B-spline

Folosind lema precedenta si formula binomului, obtinem

C ((1− t)a+ tb)

a0...an

= ((1− t)C(a) + tC(b))n

a0...an

=n∑i=0

Cin ((1− t)C(a))n−i (tC(b))i

a0...an

=

=

n∑i=0

Cin(1− t)n−1tiC(a)n−iC(b)i

a0...an

=

n∑i=0

Cin(1− t)n−1tibi =

= C(t)n

b0...bn

.

Acest proces este important, de exemplu, daca avem o curba Bezier definita, sa zicem, pe [0, 1] sitrebuie sa renuntam la o parte a curbei si, apoi, sa reprezentam, din nou, partea ra masa a curbei subforma unei curbe Bezier. Acest proces se numeste subdivizare.

El implica, de asemenea, o alta proprietate importanta a curbelor Bezier , pe care nu o demonstramaici, anume roprietatea de diminuare a variatiei: numarul de puncte de intersectie dintre o curba Beziersi un hiperplan (o linie dreapta pentru curbe plane, un plan pentru curbe ın spatiu), este mai mic sauegal decat numarul de intersectii dintre poligonul de control si acesl hiperplan. Demonstratia nu este,de fapt, complicata si se bazeaza pe faptul ca un pas ın algoritmul lui de Casteljau nu poate mari numarulde intersectii.

3.6 Forma polara a functiilor polinomiale

Definitia 3.2. Fie F : R→ Rk o functie polinomiala de grad n, scrisa sub forma Bezier, cu punctele decontrol a0, . . . ,an:

F (t) = C(t)n

a0...an

.

Atunci forma sa polara este, prin definitie, aplicatia f : Rn → Rk, data de

f(t1, . . . , tn) = C(t1) · · · · · C(tn)

a0...an

, (3.6.1)

unde, desigur, ca de obicei, produsul operatorilor de Casteljau trebuie citit ca

C(t1) · · · · · C(t1) ≡ C1(t1) · · · · · Cn(tn).

Page 45: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.6. Forma polara a functiilor polinomiale 45

Forma polara a unei curbe polinomiale se mai numeste si polarizarea sau ınflorirea curbei.Este interesant de vazut ce se ıntampla ın cazul ın care F este o functie patratica cu valori scalare

(k = 1). In acest caz, desigur, cele trei puncte de control sunt doar numere reale. Vom calcula formapolara a unei astfel de functii. Inainte de toate, ramarcam ca daca a0, a1, a2 sunt punctele de control1,atunci avem, folosind reprezentarea cu polinoame Bernstein:

F (t) = (1− t)2a0 + 2t(1− t)a1 + t2a2 = (a0 − 2a1 + a2)t2 + 2(a1 − a0)t+ a0.

Pe de alta parte, pentru forma polara vom avea

f(t1, t2) = C1(t1)C2(t2)

a0

a1

a2

=(1− t1 t1

)(1− t2 t2 00 1− t2 t2

)a0

a1

a2

=(1− t1 t1

)((1− t2)a0 + t2a1

(1− t2)a1 + t2a2

)=

= (1− t1) ((1− t2)a0 + t2a1) + t1 ((1− t2)a1 + t2a2) = t1t2(a0 − 2a1 + a2) + t1(a1 − a0) + t2(a1 − a0) + a0 =

= t1t2(a0 − 2a1 + a2) + (t1 + t2)(a1 − a0) + a0.

Regula, ın acest caz particular, este clara: pur si simplu dedublam functia F . Cu alte cuvinte, ınlocuimt2 cu t1t2 si t cu (t1 + t2)/2.

Acest caz particular sugereaza ca trecerea de la o functie polinomiala la forma sa polara este o ge-neralizare a algoritmului pentru determinarea formei biliniare asociate unei forme patratice. Remarcam,totusi, ca nici macar ın exemplul nostru foarte simplu, F nu este o forma patratica ın t (daca ar fi, arttrbui sa fie omogena de gradul doi, cu alte cuvinte ar trebui sa avem a1 = a0 = 0). De aceea, formapolara care i se asociaza nu este, ın general, biliniara. Ca atare, nu neateptam ca forma polara asociataunui polinom de gradul n sa fie n-liniara (adica liniara ın fiecare dintre cele n variabile). Ea este, totusi,afina ın fiecare dintre argumentele sale. Intr-adevar, ınainte de a formula rezultatul general, vom folosi,ca model, forma polara pe care am calculat-o pentru un polinom scalar de gradul doi. Fie α un numarreal oarecare. Atunci avem

f((1− α)t1 + αt′1, t2) =((1− α)t1 + αt′1

)t2(a0 − 2a1 + a2) +

((1− a)t1 + at′1 + t2

)(a1 − a0) + a0 =

= (1− α) (t1t2(a0 − 2a1 + a2) + (t1 + t2)(a1 − a0) + a0) +

= α(t′1t2(a0 − 2a1 + a2) + (t′1 + t2)(a1 − a0) + a0

)= (1− α)f(t1, t2) + αf(t′1, t2),

care arata, imediat, ca f este, ıntr-adevar, afina ın ptima variabila. e de alta parte, f este, ın mod evident,simetrica (adica, pentru orice pereche de argumente, avem f(t1, t2) = f(t2, t1)), de aceea f este afina iın al doilea argument.

Un alt lucru evident despre f este ca daca punem t1 = t2 = t (sau, folosind o alta espresie,restrangem f la diagonala), avem

f(t, t) = F (t).

Intentionam sa aratam ca aceste trei proprietati (simetria, caracterul afin ın fiecare variabila si faptulca restrictia la diagonala coincide cu polinomul original) sunt caracteristici generale ale formei polare.

Vom demonstra, mai ıntai, o propozitie care este importanta ın sine, ıntrucat sugereaza ca, ıntr-unanume sens, primele doua proprietati sunt caracteristice numai functiilor de mai multe variabile care suntforme polare ale unor functii polinomiale. Pentru a o formula, ıncepem prin a defini mai precis primeledoua proprietati.

1Nu folosim litere ıngrosate ca sa le notam deoarece, dupa cum am spus mai sus, ele sunt numere reale, nu vectori.

Page 46: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

46 Capitolul 3. Curbe Bezier si B-spline

Definitia 3.3. Fie f : Rn → Rm o functie. Spunem ca f este simetrica daca pentru orice permutare σ anumerelor {1, 2, . . . , n} avem

f(tσ(1), tσ(2, . . . , tσ(n)

)= f(t1, t2, . . . , tn),

pentru orice argumente t1, . . . , tn ∈ R.

Pentru n = 2, simetria lui f se reduce la conditia f(t1, t2) = f(t2, t1), pentru orice numere realet1, t2. Pentru n = 3, situatia este, deja, mult mai complicata, iar simetria ınseamna ca pentru orice tripletde argumente avem

f(t1, t2, t3) = f(t2, t3, t1) = f(t3, t1, t2) = f(t3, t2, t1) = f(t2, t1, t3) = f(t1, t3, t2).

Definitia 3.4. Fie f : Rn → Rm o functie. Spunem ca f este n-afina daca f este n-afina ın fiecarevariabila, adica daca pentru orice i ∈ {1, 2, . . . , n} si pentru orice numere reale α, t1, . . . , tn, t′i avem

f(t1, . . . , ti−1, (1−α)ti+αt′i, ti+1, . . . , tn) = (1−α)f(t1, . . . , ti−1, ti, ti+1, . . . , tn)+αf(t1, . . . , ti−1, t

′i, ti+1, . . . , tn).

Putem formula acum propozitia promisa.

Propozitia 3.6.1. Daca f : Rn → Rn este o functie simetrica si n-afina, atunci

f(t1, . . . , tn) = C(t1) . . . C(tn)

a0...an

,

unde ak = f(

0, . . . , 0︸ ︷︷ ︸n−k

, 1, . . . , 1︸ ︷︷ ︸k

), , k = 0, . . . , n.

(3.6.2)

Demonstratie Vom demonstra propozitia prin inductie dupa n. Daca n = 1, atunci, cum putem scriet1 = (1− t1) · 0 + t1 · 1, avem

f(t1) = f ((1− t1) · 0 + t1 · 1) = (1− t1)f(0) + t1f(1) =(1− t1 t1

)(f(0)f(1)

)= C(t1)

(f(0)f(1)

),

adic a afirmatia este adevarata pentru n = 1.Sa presupunem, acum, ca propozitia este adevarata pentru un n ≥ 1. Vom arata ca ea este adevarata

si pentru n + 1. Astfel, fie f : Rn+1 → Rm o functie care este simetrica si (n + 1)-afina. In particular,folosind acelasi truc pe care l-am folosit pentru n = 1, din invarianta fina relativ la ultimul argument,obtinem

f(t1, . . . , tn, tn+1) = (1− tn+1)f(t1, . . . , tn, 0) + tn+1f(t1, . . . , tn, 1).

Astfel, f poate fi scrisa ca o combinatie de doua functii care depind doar de n variabile,

f0, f1 : Rn → Rm,

unde

f0(t1, . . . , tn) = f(t1, . . . , tn, 0), (3.6.3)

f1(t1, . . . , tn) = f(t1, . . . , tn, 1). (3.6.4)

Page 47: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.6. Forma polara a functiilor polinomiale 47

In mod clar, din simetria si caracterul afin ale lui f , rezulta imediat ca atat f0 cat si f1 sunt simetrice sin-afine.

Dar pentru astfel de functii, concluzia propozitiei este valabila, ın conformitate cu ipoteza de inductie,de aceea fi, i = 1, 2 se pot scrie ca

fi(t1, . . . , tn) = C(t1) . . . C(tn)

ai0...ain

Punctele de control se pot obtine cu usurinta, folosind simetria lui f . Astfel, pentru i = 0 avem

a0k = f0(0, . . . , 0︸ ︷︷ ︸

n−k

, 1, . . . , 1︸ ︷︷ ︸k

) = f(0, . . . , 0︸ ︷︷ ︸n−k

, 1, . . . , 1︸ ︷︷ ︸k

, 0) = f(0, . . . , 0︸ ︷︷ ︸(n+1)−k

, 1, . . . , 1︸ ︷︷ ︸k

) = ak,

ın timp ce pentru i = 1 avem

a1k = f1(0, . . . , 0︸ ︷︷ ︸

n−k

, 1, . . . , 1︸ ︷︷ ︸k

) = f(0, . . . , 0︸ ︷︷ ︸n−k

, 1, . . . , 1︸ ︷︷ ︸k

, 1) = f( 0, . . . , 0︸ ︷︷ ︸(n+1)−(k+1)

, 1, . . . , 1︸ ︷︷ ︸k+1

) = ak+1.

Ne ıntoarcem acum la expresia lui f ın functie de f0 si f1. Avem

f(t1, . . . , tn, tn+1) = (1− tn+1)f0(t1, . . . , tn) + tn+1f1(t1, . . . , tn) =

= (1− tn+1)C(t1) . . . C(tn)

a00...a0n

+ tn+1C(t1) . . . C(tn)

a10...a1n

=

= (1− tn+1)C(t1) . . . C(tn)

a0...an

+ tn+1C(t1) . . . C(tn)

a1...

an+1

=

= (1− tn+1)C(t1) . . . C(tn)R

a0...

an+1

+ tn+1C(t1) . . . C(tn)L

a0...

an+1

=

= C(t1) . . . C(tn) ((1− tn+1)R+ tn+1L)

a0...

an+1

= C(t1) . . . C(tn)C(tn+1)

a0...

an+1

.

Inainte de a merge mai departe, trebuie sa spunem ca, desi gradul efectiv al unei functii polinomialeeste bine definit, functia polinomiala poate fi privita ca avand orice grad, mai mare decat gradul efectiv,adaugand termeni de grad superior (cu coeficientii nuli, desigur). Astfel, formal, F poate fi privita cafiind o curba Bezier de grad mai mare. Pentru a specifica la care reprezentare ne referim, vom utilizatermeniul de forma n-polara, pentru a scoate ın evidenta faptul ca F este privit ca un polinom de gradn. Astfel, daca are sens sa vorbim despre forma n-polara a unei functii polinomiale, putem vorbi despreorice forma polara de grad mai ınalt.

Putem formula acum teorema de caracterizare pentru forme polare.

Page 48: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

48 Capitolul 3. Curbe Bezier si B-spline

Teorema 3.6.1. Fie F : R → Rm o functie polinomiala de grad cel mult n. Atunci forma sa n-polarasatisface urmatoarele proprietati:

(i) f este simetrica;

(ii) f este n-afina;

(iii) restrictia lui f la diagonala lui Rn coincide cu F , cu alte cuvinte,

f(t, . . . , t︸ ︷︷ ︸n

) = F (t).

Reciproc, daca f este o functie f : Rn → Rm care satisface proprietatile (i)–(iii), atunci f esteforma polara a lui F .

Demonstratie Demonstratia rezulta imediat din proprietatile operatoruoui lui de Casteljau si din Propozitia 3.6.1.

Forma polara a unei functii polinomiale poate fi utilizata pentru a descrie proprietatile curbelorBezier, dupa cum rezulta din urmatoarea teorema, a carei demonstratie este lasata cititorului, ca tema:

Teorema 3.6.2. Fie r o curba Bezier de grad n, cu punctelede control a0, . . . ,an, definita pe un interval[a, b], si f – forma sa n-polara. Atunci:

(i) punctele sale intermediabre din algoritmul lui de Casteljau sunt date de

alk = f(t, . . . , t︸ ︷︷ ︸l

, 0, . . . , 0︸ ︷︷ ︸n−l−k

, 1, . . . , 1︸ ︷︷ ︸k

); (3.6.5)

(ii) derivata de ordinul ıntai este data de

F ′(t) =n

b− a (f(t, . . . , t, b)− f(t, . . . , t, a)) ; (3.6.6)

(iii) derivata de ordinul k este data de

F (k)(t) =n!

(b− a)k(n− k)!

k∑i=0

(−1)iCikf(t, . . . , t︸ ︷︷ ︸n−k

, b, . . . , b︸ ︷︷ ︸k−i

, a, . . . , a︸ ︷︷ ︸i

); (3.6.7)

(iv) forma (n+ 1)-polara a lui F este data de

f∗(t1, . . . , tn+1) =1

n+ 1

n+1∑k=1

f(t1, . . . , tk−1, tk+1, . . . , tn+1), (3.6.8)

cu conventia ca t−1 ≡ tn+1 si tn+2 ≡ t1.

Page 49: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.6. Forma polara a functiilor polinomiale 49

Am vazut mai devreme ca forma n-polara a unui polinom de grad cel mult egal cu n este unicdeterminata de valorile sale pe vectori de forma (0, . . . , 0, 1, . . . , 1). Totusi, pentru multe aplicatii pecare le vom trata mai tarziu, este mai util sa folosim si alte siruri de numere. Vom ilustra cele spuseprintr-un exemplu.

Teorema 3.6.3. Fie f : Rn → Rm o functie simetrica si n-afina si fie s1 ≤ s2 ≤ · · · ≤ s2n un sir denumere reale astfel ıncat sn < sn+1. Atunci f este determinat ın mod unic de valorile f(si+1, . . . , si+1),i = 0, . . . , n.

Demonstratie Fie date numerele t1, . . . , tn. Daca 1 ≤ k ≤ n si k ≤ i ≤ n, atunci remarcam ca

tk =(si+n−k+1 − tk)si + (tk − si)si+n−k+1

si+n−k+1 − si=

(1− tk − si

si+n−k+1 − si

)si +

tk − sisi+n−k+1 − si

si+n−k+1.

Daca punem αki =tk − si

si+n−k+1 − si, atunci tk = (1 − αki )si + αki si+n−k+1, de aceea, din simetria si

invarianta afina a lui f , obtinem:

f(t1, . . . , tk, si+1, . . . , si+n−k) = f(t1, . . . , tk−1, (1− αki )si + αki si+n−k+1, si+1, . . . , si+n−k) =

= (1− αki )f(t1, . . . , tk−1, si, si+1, . . . , si+n−k) + αki f(t1, . . . , tk−1, si+n−k+1, si+1, . . . , si+n−k) =

= (1− αki )f(t1, . . . , tk−1, si, si+1, . . . , si+n−k) + αki f(t1, . . . , tk−1, si+1, . . . , si+n−k, si+n−k+1).

Astfel, daca stim valorile lui f pe argumente alcatuite din k valori t si n− k valori s, atunci putem ridicanumarul argumentelor t cu o unitate. Daca rulam algoritmul plecand de la k = 1 si continuam pana lak = n, atunci plecam cu valorile f(si+1, . . . , si+n) si terminam cu f(t1, . . . , tn).

Daca toate argumentele lui f sunt egale, atunci demonstratia teoremei precedente furnizeaza un al-goritm pentru calculul valorilor unui polinom, plecand de la n + 1 valori ale formei sale polare. Acestalgoritm se numeste algoritmul lui de Boor. Vom vedea cum functioneaza acest algoritm pentru poli-noame cubice

Astfel, fie s1 ≤ s2 ≤ s3 < s4 ≤ s5 ≤ s6. Alegem t1, t2, t3 ∈ R. Presupunem ca stim valorile lui fde forma f(si+1, si+2, si+3), i = 1, 2, 3. Atunci avem

(i) k = 1, i = 1f(t1, s2, s3) = (1− α1

1)f(s1, s2, s3) + α11f(s2, s3, s4);

(ii) k = 1, i = 2f(t1, s3, s4) = (1− α1

2)f(s2, s3, s4) + α12f(s3, s4, s5);

(iii) k = 1, i = 3f(t1, s4, s5) = (1− α1

3)f(s3, s4, s5) + α13f(s4, s5, s6);

(iv) k = 2, i = 2f(t1, t2, s3) = (1− α2

2)f(t1, s2, s3) + α22f(t1, s3, s4);

(v) k = 2, i = 3f(t1, t2, s4) = (1− α2

3)f(t1, s3, s4) + α22f(t1, s4, s5);

Page 50: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

50 Capitolul 3. Curbe Bezier si B-spline

(vi) k = 3, i = 3f(t1, t2, t3) = (1− α3

3)f(t1, t2, s3) + α33f(t1, t2, s4).

Forma polara a unui polinom este utila atunci cand trebuie sa comparam derivatele a doua functiipolinomiale. Avem, astfel, urmatoarea teorema:

Teorema 3.6.4. Fie F si G doua polinoame de grad cel mult n si f, g – formele lor n-polare. Presupu-mem, ın plus, ca se dau t ∈ R si r ∈ N∗. Atunci

F (k)(t) = G(k)(t), k = 0, . . . , r,

daca si numai dacaf(t1, . . . , tr, t, . . . , t) = g(t1, . . . , tr, t, . . . , t),

pentru orice t1, . . . , tr ∈ R.

Demonstratie Daca punem (t1, . . . , tr) = (t, . . . , t︸ ︷︷ ︸r−k

, b, . . . , b︸ ︷︷ ︸k−i

, a, . . . , a︸ ︷︷ ︸k

), atunci implicatia directa rezulta

imediat din formula de derivare (3.6.7).Pentru a demonstra cealalta implicatie, vom demonstra, mai ıntai, prin inductie dupa k, ca

f(t, . . . , t︸ ︷︷ ︸n−k

, a, . . . , a︸ ︷︷ ︸k

) = g(t, . . . , t︸ ︷︷ ︸n−k

, a, . . . , a︸ ︷︷ ︸k

), k = 0, . . . , r.

Daca k = 0, atunci egalitatea noastra se reduce, de fapt, la F (t) = G(t), care este adevarata, din ipoteza.Sa presupunem ca ecuatia este adevarata pentru toate numerele naturale pana la k − 1 ≥ 0. Daca ınformula de derivare (3.6.7), ın care a si b sunt arbitrare, punem b = t, avem

k∑i=0

(−1)iCikf(t, . . . , t︸ ︷︷ ︸n−i

, a, . . . , a︸ ︷︷ ︸i

) =

k∑i=0

(−1)iCikg(t, . . . , t︸ ︷︷ ︸n−i

, a, . . . , a︸ ︷︷ ︸i

).

Din ipoteza de inductie, avem

k−1∑i=0

(−1)iCikf(t, . . . , t︸ ︷︷ ︸n−i

, a, . . . , a︸ ︷︷ ︸i

) =k−1∑i=0

(−1)iCikg(t, . . . , t︸ ︷︷ ︸n−i

, a, . . . , a︸ ︷︷ ︸i

).

Scazand cele doua egalitati, obtinem

f(t, . . . , t︸ ︷︷ ︸n−k

, a, . . . , a︸ ︷︷ ︸k

) = g(t, . . . , t︸ ︷︷ ︸n−k

, a, . . . , a︸ ︷︷ ︸k

),

cum era de asteptat. Remarcam, acum, ca functiile f∗ si g∗ ar date de

f∗(t1, . . . , tr) = f(t1, . . . , tr, t, . . . , t)

sig∗(t1, . . . , tr) = g(t1, . . . , tr, t, . . . , t)

Page 51: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.7. Curbe B-spline 51

sunt simetrice si r-afine si tocmai am demonstrat ca

f∗(t, . . . , t︸ ︷︷ ︸k

, a, . . . , a︸ ︷︷ ︸r−k

) = g∗(t, . . . , t︸ ︷︷ ︸k

, a, . . . , a︸ ︷︷ ︸r−k

),

de aceea, ın conformitate cu teorema 3.6.3, ele trebuie sa coincida.

Teorema 3.6.5. Fie F si G doua polinoame de grad cel mult n, iar f, g – formele lor n-polare cores-punzatoare. Sa presupunem ca se dau numerele reale

s1 ≤ · · · ≤ sn−r < sn−r+1 = · · · = sn < sn+1 ≤ . . . s2n−r,

cu 1 ≤ r ≤ n. AtunciF (k)(sn) = G(k)(sn), k = 0, . . . , n− r,

daca si numai daca

f(si+1, . . . , sn+i) = g(si+1, . . . , sn+i), i = 1, . . . , n− r + 1.

Demonstratie Intentia este sa aplicam teorema 3.6.3. In acest scop, construim, mai ıntai, un sir denumere corespunzator. Mai precis, punem t = sn, ui = si pentru i ≤ n − r si ui = si+r pentrui > n− r. Aceasta ınseamna ca avem

u1 ≤ · · · ≤ un−r < t = · · · = t︸ ︷︷ ︸r

< un−r+1 ≤ . . . u2n−2r.

Definim, acum, f∗ si g∗ prin

f∗(t1, . . . , tn−r)) = f(t1, . . . , tn−r, t, . . . , t︸ ︷︷ ︸r

)

sig∗(t1, . . . , tn−r)) = g(t1, . . . , tn−r, t, . . . , t︸ ︷︷ ︸

r

).

Conform Teoremei 3.6.3, f∗ = g∗ daca si numai daca

f∗(ui+1, . . . , ui+n−r) = g∗(ui+1, . . . , ui+n−r), i = 0, . . . , n− r.

Rezultatul este, acum, o consecinta directa a Teoremei 3.6.4.

3.7 Curbe B-spline

Curbele Bezier sunt foarte utile. Totusi, daca vrem sa avem mai mult control, trebuie sa introducem curbede control suplimentare si, drept consecinta, gradele polinoamelor cresc si devin dificil de manevrat. Inplus, daca avem polinoame de grad mare, poligoanele de control nu mai sunt atat de similare cu curba,ceea ce ınseamna ca mare parte din intuitia geometrica se pierde. Solutia este sa ınlocuim curbele Bezier,care sunt polinomiale, cu curbe care sunt polinomiale pe portiuni. Pentru astfel de curbe, inserarea unuinod suplimentar are ca efect marirea numarului de subintervale, dar gradul polinoamelor ramane constantsi, ın practica, doar rareori este mai mare de trei.

Page 52: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

52 Capitolul 3. Curbe Bezier si B-spline

Definitia 3.5. Un sir de noduri sau vector de noduri ın grad n este un sir

t0 ≤ t1 · · · ≤ tn︸ ︷︷ ︸noduri marginale

< tn+1 ≤ tn+2 ≤ · · · ≤ tn+N−1︸ ︷︷ ︸noduri interioare

< tn+N ≤ · · · ≤ t2n+N︸ ︷︷ ︸noduri marginale

.

Primele si ultimele n+1 noduri se numesc noduri marginale, restul sunt noduri interioare. Daca tr−1 <tr = · · · = tr+ν−1, atunci spunem ca nodul tr are multiplicitatea ν. Remarcam ca ın multe cazurinodurile marginale au multiplicitatea n+1. Aceasta ınseamna ca t0 = · · · = tn si tn+N = · · · = t2n+N .

Definitia 3.6. O curba B-spline de grad n cu sirul de noduri t0, . . . , t2n+N si punctele de control saude Boor d1, . . .dN+n este o curba polinomiala de gradul n pe portiuni, definita pe intervalul [tn, tn+N ].Segmentele polinomiale sunt definite pe intervale de forma [tr, tr+1], cu tr < tr+1 astfel ıncıt formelelor polare sa verifice egalitatile

fr(tr−n+i, . . . , tr+i−1) = dr−n+i, i = 1, . . . , n+ 1.

Observatie. Daca un nod are multiplicitatea n, adica tr = · · · = tr+n−1, atunci unul dintre punctele decontrol se afla pe curba, deoarece este de forma fr(tr, . . . , tr).

Urmatoarea teorema este o consecinta imediata a Teoremei 3.6.5 si ne spune cat de neted se ımbinabucatile de B-splines.In mod clar, putem avea probleme doar ın noduri (ın rest curba este polinomiala,deci infinit neteda).

Teorema 3.7.1. Daca un nod interior tr are multiplicitatea ν, atunci o curba B-spline de gradul n estede clasa Cn−ν ın punctul tr.

Observatie. Ca o consecinta a acestei teoreme, rezulta ca daca un nod interior are multiplicitatea maimare de n, atunci curba poate fi discontinua ın acel punct.

Astfel, o curba B-spline de grad n este o curba polinomiala pe portiuni, astfel ıncat toate bucatilesunt polinoame de grad cel mult n si aceste bucati se ımbina, la noduri, cu un anumit grad de netezime,care depinde de multiplicitatea nodurilor interioare. Ne putem pune urmatoarea ıntrebare: Daca ni se dao curba polinomiala pe portiuni, ale caror bucati se ımbina neted cu un anumit grad de netezime, putemsa o reprezentam ca o curba B-spline? Raspunsul este afirmativ si este dat de urmatoarea teorema.

Teorema 3.7.2. Sa presupunem ca ni se dau numerele reale u0, . . . , um, ıntregii pozitivi ν1, . . . , νm−1

si o curba r definita pe intervalul [u0, um] astfel ıncat uj−1 < uj , j = 1, . . . ,m si

(1) restrictia lui r la fiecare subinterval [uj−1, uj ] este un polinom de grad n, j = 1, . . . ,m;

(2) r is Cn−νj ın punctele uj , j = 1, . . . ,m− 1.

Atunci curba se poate scrie ca o curba B-spline cu sirul de noduri

t0, . . . , t2n+N = u0, . . . , u0︸ ︷︷ ︸n+1

, u1, . . . , u1︸ ︷︷ ︸ν1

, . . . , um−1, . . . , um−1︸ ︷︷ ︸νm−1

, um, . . . , um︸ ︷︷ ︸n+1

unde N = 1 +∑m−1

j=1 νj . Mai mult, daca punem mr = n +∑r

j=1 νj , pentru r = 0, . . . ,m, atuncipunctele de control sunt date de

di = fr(ti, . . . , ti+n−1), pentru i = mr−1 − n+ 1, . . . ,mr−1 + 1,

unde fr este forma polara a segmentului polinomial definit pe [ur−1, ur] = [tmr−1 , tmr−1+1], r =1, . . . ,m.

Page 53: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.7. Curbe B-spline 53

Demonstratie Tot ce avem de demonstrat este ca punctele de control sunt bine definite, adica trebuie saaratam ca daca mr−1 − n1 ≤ i ≤ mr+l−1 − n+ 1, atunci

fr(ti, . . . , ti+n−1) = fr+l(ti, . . . , ti+n−1).

Pentru l = 1 rezulta din Teorema 3.6.5 si pe urma putem face inductie dupa l.

Din aceasta teorema rezulta, ın particular, ca o curba B-spline definita pe un sir de noduri dat poatefi interpretata ca fiind o curba B-spline definita pe un sir de noduri rafinat si ne spune, de asemenea, caresunt noile puncte de control. Procesul se numeste inserare de noduri, iar urmatoarea teorema descrieprocesul.

Teorema 3.7.3. Sa presupunem ca d1, . . .dn+N sunt punctele de control pentru curba B-spline de gra-dul n pe sirul de noduri t0, . . . , t2n+N . Fie t∗ ∈ [tr−1, tr], astfel ıncat tn ≤ tr−1 < tr ≤ tn+N . Dacainseram t∗ ın sirul de noduri, atunci noile puncte de control sunt date de

d∗i =

di i = 1, . . . , r − n(1− αi)di−1 + αidi i = r − n+ 1, . . . , r

di−1 i = r + 1, . . . , n+N + 1

,

undeαi =

t∗ − ti−1

ti+n−1 − ti−1.

Demonstratie Fie t∗1, . . . , t∗2n+N+1 noul sir de noduri, adica

t∗i =

ti i = 0, . . . , r − 1

t∗ i = r

ti−1 i = r + 1, . . . , 2n+N

.

Daca i ≤ r − n, atunci i+ n− 1 ≤ r − 1 si, deci,

d∗i = g(t∗i , . . . , t∗i+n−1) = g(ti, . . . , ti+n−1) = di,

unde g este forma polara a unui anumit segment polinomial. In acelasi mod, daca i ≥ r + 1, atunci

d∗i = g(t∗i , . . . , t∗i+n−1) = g(ti−1, . . . , ti+n−2) = di−1,

unde, din nou, g este forma polara a unui anumit segment polinomial. Fie, acum, f forma polara a unuisegment polinomial definit pe intervalul [tr−1, tr] si consideram r r−n < i < r+1. Atunci noile punctede control sunt date de

d∗i = f(t∗i , . . . , t∗i+n−1) = f(ti, . . . , tr−1, t

∗, tr, . . . , ti+n−2).

Procedam acum ca ın demonstratia Teoremei 3.6.3, unde punem t1 = t∗ si si = ti+r−n si obtinem

f(ti, . . . , tr−1, t∗, tr, . . . , ti+n−2) = f(si−r+n, . . . , sn−1, t1, sn, . . . , si+2n−r−2) =

= (1− α1i−r+n−1)f(si−r+n−1, . . . , si+2n−r−2)+

+ α1i−r+n−1f(si−r+n, . . . , si+2n−r−1) =

= (1− αi)f(ti−1, . . . , ti+n−2) + αif(ti, . . . , ti+n−1) =

= (1− αi)di−1 + αidi,

Page 54: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

54 Capitolul 3. Curbe Bezier si B-spline

undeαi = α1

i−r+n−1 =t1 − si−r+n−1

si−r+2n−1 − si−r+n−1=

t∗ − ti−1

ti+n−1 − ti−1.

Procesul de inserare repetata a aceluiasi nod pana se obtine multiplicitatea completa si se obtine unpunct de pe curba, se numeste algoritmul lui de Boor si, ın esenta, exact algoritmul din demonstratiaTeoremei 3.6.3. Esenta sa este capturata ın urmatoarea teorema.

Teorema 3.7.4. Fie r o curba B-spline de grad n, cu nodurile t0, . . . t2n+N si punctele de controld1, . . . ,dn+N . Daca t ∈ [tr−1, tr] si tn ≤ tr−1 < tr ≤ tn+N , atunci putem determina punctul r(t) depe curba folosind algoritmul lui de Boor. Initializam, mai ıntai,

si = tr−n+i i = 1, . . . , 2n

d0i (t) = dr+1−n+i i = 0, . . . , n.

Atunci, pentru k = 1, . . . , n punem:αki =

t− sisn+1+i−k − si

dki (t) = (1− αki )dk−1i−1 (t) + αki d

k−1i (t)

i = 1, . . . , n.

In fine, punctul de pe curba este r(t) = dnn(t).

Observatie. Din algoritmul lui de Boor rezulta ca curbele B-spline verifica proprietatea tare de ınvelitoarecovexa. Nu numai ca curba B-spline este inclusa ın ınvelitoarea convexa a punctelor de control, darr([tr−1, tr]) este inclusa ın ınvelitoarea convexa a lui {dr−n, . . . ,dr+1}.

Stabilim, ın final, o formula pentru calculul derivatei unei curbe B-spline.

Teorema 3.7.5. Fie r o curba B-spline de gradul n, cu nodurile t0, . . . , t2n+N si punctele de controld1, . . . ,dn+N . Derivata r′ este o curba B-spline de gradul n− 1, cu sirul de noduri t1, . . . , t2n+N−1 sipunctele de control

d′i =n(di − di−1)

ti+n−1 − ti−1. (3.7.1)

Dintr-o perspectiva diferita, daca t ∈ [tr, tr+1], unde tr < tr+1, atunci rulam algoritmul lui de Boorpana la al doilea pas (adica inseram t ca un nod de multiplicitate n− 1). Derivata este atunci data de

r′(t) =n(dn−1

n (t)− dn−1n−1(t))

sn+1 − sn=n(dn−1

n (t)− dn−1n−1(t))

tr+1 − tr. (3.7.2)

Demonstratie ın mod clar, r′ este o curba polinomiala pe portiuni de gradul n − 1 si, daca r este Cn−ν

la un anumit nod interior, atunci, r′ este Cn−ν−1 ın acelasi nod. Atunci, din Teorema 3.7.2 rezulta caderivata r′ este o curba B-spline cu aceleasi noduri interioare ca si curba originala. Daca f este forman-polara a curbei r pe intervalul [ti+n−1, ti+n], atunci din formula (3.6.6) rezulta ca, pe acelasi interval,forma (n− 1)-polara a lui r′ este data de

(u1, . . . , un−1)→ n

ti+n−1 − ti−1(f(u1, . . . , un−1, ti+n−1)− f(u1, . . . , un−1, ti−1)) .

Page 55: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

3.7. Curbe B-spline 55

Atunci, iarasi din Teorema 3.7.2, punctele de control sunt date de

d′i =n

ti+n−1 − ti−1(f(ti, . . . , ti+n−2, ti+n−1)− f(ti, . . . , ti+n−2, ti−1)) =

n

ti+n−1 − ti−1(di − di−1) .

Astfel, am demonstrat (3.7.1). Pentru a demonstra formula (3.7.2), fie f forma n-polara a lui r peintervalul [tr, tr+1]. Cele doua puncte din penultimul pas al algoritmului lui de Boor sunt date de

dn−1n−1 = f(t, . . . , t, sn) = f(t, . . . , t, tr)

dnn−1 = f(t, . . . , t, sn+1) = f(t, . . . , t, tr+1)

iar rezultatul este, acum, o consecinta a relatiei (3.6.6).

Incheiem acest capitol prin observatia ca o curba B-spline cu sirul de noduri t0, . . . , t2n+N poate fiscrisa, prin analogie cu reprezentarea unei curbe Bezier folosind polinoame Bernstein, ca

r(t) =

n+N∑i=1

N in(t), (3.7.3)

unde N in sunt functii scalare, polinomiale pe portiuni, numite functii B-spline. Spre deosebire de cazul

polinoamelor Bernstein, ele depind, desigur, de sirul de noduri. Ele pot fi gasite prin recurenta:

N i0(t) =

{1 if t ∈ [ti−1, ti[

0 ın caz contrari = 1, . . . 2n+N

N ir(t) =

t− ti−1

ti+r−1 − ti−1N ir−1(t) +

ti+r − tti+r − ti

N i+1r−1(t), i = 1, . . . , 2n+N − r, r = 1, . . . , n

(3.7.4)

Page 56: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

56 Capitolul 3. Curbe Bezier si B-spline

Page 57: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

CAPITOLUL 4

Suprafete Bezier si B-spline

4.1 Suprafete produs tensorial

4.1.1 Introducere

Ideea de suprafata produs tensorial este sa construim o suprafata asa fel ıncat, prin fiecare punct, liniilede coordonate u = const sau v = const sa fie curbe Bezier sau B-spline ın raport cu coordonata ramasa.

4.1.2 Suprafete Bezier produs tensorial

Fie n,m doua numere naturale. Remarcam, mai ıntai, ca familia de functii Bin ⊗ Bj

m, i = 0, . . . , n,j = 0, . . . ,m, unde Bi

n si Bjm sunt polinoame Bernstein de grad n, respectiv m,

(Bin ⊗Bj

m)(u, v) = Bin(u)Bj

m(v),

formeaza o baza ın spatiul functiilor polinomiale de doua variabile pe [0, 1] × [0, 1], de grad cel mult nın u si cel mult m ın v. Acest spatiu, ın mod clar, are dimensiunea (n+ 1) · (m+ 1). Perechea (n,m) semai numeste bigradul functiei polinomiale. Astfel, orice functie polinomiala de u si v, de bigrad (n,m)poate fi scris ca o combinatie de aceste functii. Suntem, astfel, condusi la urmatoarea definitie.

Definitia 4.1. Fie bi,j (n + 1) · (m + 1) vectori ın R3. Suprafata Bezier produs tensorial de bigrad(n,m) asociata punctelor de control bi,j este suprafata parametrizata r : [0, 1]× [0, 1]→ R3, data de

r(u, v) =

n∑i=0

m∑j=0

Bin(u)Bj

m(v) =

m∑j=0

(n∑i=0

bi,jBin(u)

)︸ ︷︷ ︸

=cj(u)

Bjm(v) =

n∑i=0

m∑j=0

bi,jBjm(v)

︸ ︷︷ ︸

=di(v)

Bin(u).

(4.1.1)

57

Page 58: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

58 Capitolul 4. Suprafete Bezier si B-spline

Ultimele doua egalitati arata ca pute sa ne gandim la o suprafata Bezier produs tensorial ca fiind fieo curba Bezier de grad m, dar cu punctele de control dependente de u, fie ca o curba Bezier de grad n,cu punctele de control dependente de v. O cale alternativa de interpretare a unei suprafete Bezier produstensorial este sa o privim ca fiind generata de o curba Bezier care se misca ın spatiu si se deformeaza, ınacelasi timp.

Ultimele doua egalitati din relatia (4.1.1) sugereaza, de asemenea, modul de determinare a unui punctde pe suprafata atunci cand coordonatele sale u si v sunt date: executam, mai ıntai, n pasi din algoritmullui de Casteljau ın coloanele retelei de control, pentru a determina punctele de control cj , j = 1, . . . ,m,apoi executam m pasi ın liniile retelei de control (sau, mai precis, executam m pasi pentru a obtinepunctul r(u, v), privit ca un punct de pe curba Bezier de gradul m, determinata de punctele de controlcj(u), determinate mai ınainte).

Astfel, pentru a obtine punctul r(u, v), punem ıntai, pentru j = 1, . . . ,m,

b0,0i,j (u, v) = bi,j , i = 0, . . . , n

br,0i,j (u, v) = (1− u)br−1,0i,j (u, v) + ubr−1,0

i+1,j (u, v), r = 1, . . . , n, i = 0, . . . , n− r.(4.1.2)

Ceea ce am notat cu cj(u) sunt exact punctele bn,00,j (u, v). Este de remarcat ca, pana acum, puncteleintermediare nu depind ınca de v, ın ciuda notatiilor noastre. Doar acum intra v ın joc, odata cu aplicareaalgoritmului lui de Casteljau punctelor nou gasite.

Punem acum

bn,s0,j (u, v) = (1− v)bn,s−10,j (u, v) + vbn,s−1

0,j+1 (u, v), s = 1, . . . ,m, j = 0, . . . ,m− s (4.1.3)

si gasim, ın final, car(u, v) = bn,m0,0 (u, v). (4.1.4)

Este usor de demonstrat ca putem, de asemenea, sa rulam, mai ıntai, algoritmul lui de Casteljau pe liniileretelei de control si apoi pe coloane, cu alte cuvinte, putem sa determinam, maki ıntai, punctele de controldi(v), i = 0, . . . , n si apoi sa rulam algoritmul lui de Casteljau pe aceste puncte de control si obtinemacelasi rezultat. In fine, putem combina un pas ın directia orizontala cu un pas ın directia verticala siobtinem ceea ce se numeste un pas de Casteljau direct:

br,si,j (u, v) =[1− u u

] [br−1,s−1i,j (u, v) br−1,s−1

i,j+1 (u, v)

br−1,s−1i+1,j (u, v) br−1,s−1

i+1,j+1 (u, v)

] [1− vv

]. (4.1.5)

Algoritmul lui de Casteljau poate fi, de asemenea, exprimat folosind operatori de Casteljau generalizati.Notam, astfel, cu 1L si 1R operatorii care ınlatura prima, respectiv ulima linie din reteaua de controlsi, ın mod analog, cu 2L si 2R – operatorii care elimina prima, respectiv ultima coloana din reteaua decontrol. Acum definim operatorii de Casteljau

iC(t) = (1− t) · iR+ t · iL =i R+ t ·i ∆, i = 1, 2, (4.1.6)

unde i∆ =i L− iR sunt operatorii diferenta corespunzatori. Precizam ca acesti operatori trebuie privitiıntr-o “maniera operationala” m,ai degraba decat prin intermediul matricilor lor. Ca si ın cazul curbelorBezier, suprafata Bezier produs tensorial se poate scrie acum ın forma compacta

r(u, v) = 1C(u)n2C(v)m(bi,j). (4.1.7)

Page 59: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

4.2. Derivarea suprafetelor Bezier produs tensorial 59

Insistam asupra faptului ca analogia cu cazul curbelor Bezier este doar formala. Aici 2C(v) nu seınmulteste cu magtricea punctelor de control ci, mai degraba este evaluata pe acesta retea de control.Este instructiv sa vedem cum functioneaza totul ın cazul suprafetelor Bezier produs tensorial de grad(3, 3) (asa-numitele panze Bezier bicubie), are sunt cel mai des ıntalnite ın practica. In acest caz, matri-cea punctelor de control este o matrice 4× 4,

B =

b00 b01 b02 b03

b10 b11 b12 b13

b20 b21 b22 b23

b30 b31 b32 b33

. (4.1.8)

Atunci, pentru o pereche data de parametri, (u, v), avem,

r(u, v) = 1C(u)32C(v)3(B) = 1C(u)3

2C(v)2

(1− v)

b00 b01 b02

b10 b11 b12

b20 b21 b22

b30 b31 b32

+ v

b01 b02 b03

b11 b12 b13

b21 b22 b23

b31 b32 b33

=

= 1C(u)32C(v)

(1− v)

(1− v)

b00 b01

b10 b11

b20 b21

b30 b31

+ v

b01 b02

b11 b12

b21 b22

b31 b32

+

+v

(1− v)

b01 b02

b11 b12

b21 b22

b31 b32

+ v

b02 b03

b12 b13

b22 b23

b32 b33

= · · ·

Este usor de demonstrat ca, asa cum se ıntampl cazu curbelor Bezier, operatorii L,R,C,∆ comuta,ın acelasi sens, iar proprietatile legate de invarianta afina si de ınvelitoarea conveza sunt verifica desuprafetele Bezier.

4.2 Derivarea suprafetelor Bezier produs tensorial

Calculul derivatelor partiale ale suprafetelor Bezier se reduce, casi ın cazul curbelor, la calculul deriva-telor operatorilor de Casteljauors. Dar, chiar din definitie, rezulta imediat ca

d

dtiC(t) = i∆. (4.2.1)

De aceea, pentru derivatele partiale mixte de ordin (r, s) avem, ca si ın cazul curbelor,

∂r+sr

∂ur∂vs=

n!m!

(n− r)!(m− s)!1C(u)n−r2C(v)m−s1∆r2∆s(bi,j) =

=n!m!

(n− r)!(m− s)!1∆r2∆s

1C(u)n−r2C(v)m−s(bi,j)

(4.2.2)

Page 60: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

60 Capitolul 4. Suprafete Bezier si B-spline

Prima reprezentare ne spune, desigur, ca derivata de ordin (r, s) a unei suprafete Bezier produs tensorialde bigrad (n,m) este, de asemenea, o suprafata Bezier produs tensorial, de bigrad (n−r,m−s) si indica,de asemenea, modul ın care se calculeaza noua retea de control. In particular, derivatele de ordinul ıntaila colturile domeniului sunt

∂r

∂u(0, v) = n2C

m(v)(b1,0 − b0,0, . . . ,b1,m − b0,m), (4.2.3)

∂r

∂u(1, v) = n2C

m(v)(bn0 − bn−1,0, . . . ,bn,m − bn−1,m), (4.2.4)

∂r

∂v(u, 0) = m2C

n(u)(b0,1 − b0,0, . . . ,bn,1 − bn,0), (4.2.5)

∂r

∂v(u, 1) = m2C

n(u)(b0,m − b0,m−1, . . . ,bn,m − bn,m−1). (4.2.6)

4.3 Suprafete B-spline produs tensorial

Suprafetele B-spline produs tensoriale se construiesc, ın esentap pe aceleasi principii ca si suprafeteleBezier produs tensorial, atata doar ca, ın loc sa folosim polinoane Bernstein, utilizam functii B-spline.

Astfel, fie u = u0, . . . , u2n+N si v = v0, . . . , u2m+M doi vectori de noduri. Fie, de asemenea, R2,planul euclidian cu coordonatele carteziene u si v. Liniile verticale u = ui, i = 0, . . . , u2n+N si liniileorizontale v = vj , j = 1, . . . , 2m + M se numesc linii de noduri si lor li se atribuie multiplicitati caresunt egale, prin definitie, cu multiplicitatile nodurilor corespunzatoare din cele doua siruri de noduri.Consideram, de asemenea, o retea de (n + N) × (m + M) puncte ın spatiu, di,j , numita reteaua decontrol. Atunci suprafata B-spline produs tensorial de bigrad (n,m), cu vectorii de noduri u si v, si cupunctele de control di,j este data de parametrizarea

r(u, v) =n+N∑i=1

m+M∑j=1

di,jNin(u|u)N j

m(v|v) =m+M∑j=1

(n+N∑i=1

di,jNin(u|u)

)︸ ︷︷ ︸

cj(u)

N jm(v|v) =

=n+N∑i=1

m+M∑j=1

di,jNjm(v|v)

︸ ︷︷ ︸

ai(v)

N in(u|u).

(4.3.1)

Aici N in(u|u) si N j

m(v|v) sunt functiile B-spline corespunzatoare vectorilor de noduri indicati. Ultimeledoua egalitati sugereaza ın mod clar ca, asa cum se ıntampla ın cazul suprafetelor Bezier produs tensorial,pentru un u dat, r(u, v) poate fi privita ca fiind o curba B-spline cu vectorul de noduri v si punctele decontrol

cj(u) =

n+N∑i=1

di,jNin(u|u) j = 1, . . . ,m+M.

In mod alternativ, pentru un v dat, r(u, v) poate fi privita ca fiind o curba B-spline cu vectorul de noduri

Page 61: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

4.3. Suprafete B-spline produs tensorial 61

u si punctele de control

ai(v) =m+M∑j=1

di,jNjm(v|v) i = 1, . . . , n+N.

Aceasta remarca triviala ne spune ca, pentru o pereche de parametri (u, v) data, r(u, v) poate fi gasitaaplicand algoritmul lui de Boor pe coloanele si apoi pe liniile retelei de control (sau ın ordine inversa, nuconteaza). Mai precis, are loc urmatoarea teorema:

Teorema 4.3.1. Fie r o suprafata B-spline produs tensorial, de bigrad (n,m), cu nodurile u0, . . . , u2n+N

si v0, . . . , v2m+M si punctele de control d1,1, . . . ,dn+N,m+M . Daca u ∈ [uk−1, uk] si v ∈ [vl−1, vl], cuuk−1 < uk si vl−1 < vl, atunci putem determina punctul r(u, v) de pe suprafata prin algoritmul lui deBoor. Initializam:

si = uk−n+i, i = 1, . . . , 2n,

tj = vl−m+j , j = 1, . . . , 2m,

d0,0i,j (u, v) = dk+1−n+i,l+1−m+j , i = 0, . . . , n, j = 0, . . . ,m.

Apoi, pentru p = 1, . . . , n executam:

αpi =u− sisn+1+i−p

dp,0i,j (u, v) = (1− αpi )dp−1,0i−1,j (u, v) + αpid

p−1,0i,j (u, v)

{i = p, . . . , n

j = 0, . . . ,m

si apoi, pentru q = 1, . . . ,m, executam

βqj =v − tj

tm+1+j−q − tjdn,qn,j(u, v) = (1− βqj )d

n,q−1n,j−1(u, v) + βqjd

n,q−1n,j (u, v)

j = q, . . . ,m.

In final, punctul de pe suprafata este r(u, v) = dn,mn,m(u, v).

Cum, din nou, ca si ın cazul suprafetelor Bezier produs tensorial, ordinea de execute a patilor de Boor,dupa coloane sau dupa linii, nu este importanta, putem combina cele doua directii pentru a construi unpas de Boor direct:

dp,qi,j (u, v) = (1−αpi )dp−1,qi−1,j (u, v) +αpid

p−1,qi,j (u, v) = (1−βqj )d

p,q−1i,j−1 (u, v) +βqjd

p,q−1i,j (u, v). (4.3.2)

Executia unui pas ın algoritmul lui de Boor pentru o suprafata produs tensorial, fie pe linii, fie pe coloane,are ca rezultat reteaua de control precedenta, cu o linie de noduri suplimentara. Astfel, algoritmul lui deBoor pentru suprafete ınseamna inserare repetata de linii de noduri.

4.3.1 Derivarea unei suprafete B-spline produs tensorial

Cum liniile de coordonate ale unei suprafete B-spline produs tensorial sunt curbe B-spline, a calculaderivatele partial ale unei astfel de suprafete ın raport cu coordonatele revine la a calcula derivatele

Page 62: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

62 Capitolul 4. Suprafete Bezier si B-spline

curbelor B-spline corespunzatoare. Folosind formulele stabilite pentru cazul curbelor B-spline, obtinemimediat ca:

∂r

∂u(u, v) =

dn−1,mn,m (u, v)− dn−1,m

n−1,m(u, v)

sn+1 − sn, (4.3.3)

∂r

∂v(u, v) =

dn,m−1n,m (u, v)− dn,m−1

n,m−1(u, v)

tm+1 − tm. (4.3.4)

Exista, ca si ın cazul curbelor B-spline, si o alta perspectiva, anume ca derivatele partiale ale lui r ınraport cu u si v sunt, de asemenea, suprafete B-spline de bigrade (n− 1,m), respectiv (n,m− 1), si cuaceleasi linii de noduri ca si r, atata doar ca liniile de noduri cele mai exterioare au fost ınlaturate, si cupunctele de control

di,j − di−1,j

ui+n−1 − ui−1, respectiv

di,j − di,j−1

vj+m−1 − vj−1. (4.3.5)

4.4 Suprefete Bezier triunghiulare

Daca A,B si C sunt varfurile unui triunghi nedegenerat din plan, atunci pentru fiecare punct P din planexista un singur triplet de numere reale (u, v, w) astfel ıncat

P = uA + vB + wC, si u+ v + w = 1.

Aceste numere se numesc coordonatele baricentrice ale punctului P.Reteaua de control a unei suprafete Bezier triunghiulare de gradul n este formata din (n+1)(n+2)

2puncte, dispuse ıntr-un tabel triunghiular. Punctele retelei de control vor fi notate folosind trei indici.Preferam sa utilizam o notatie cu indici multipli de forma i = (i, j, k) sau i = (i1, i2, i3), unde, desigur,toate componentele unui indice multiplu sunt numere naturale. Astfel, punctele retelei de control vor finotate cu bi, unde i este un indice multiplu. Alte notatii pe care le vom folosi ın cele ce urmeaza sunt:|i| = i+ j + k, e1 = (1, 0, 0), e2 = (0, 1, 0) si e3 = (0, 0, 1).

Pentru a descrie suprafetele Bezier triunghiulare, vom raporta planul la un sistem de coordonatebaricentrice, ın locul celor carteziene. Cu alte cuvinte, vom fixa un triunghi nedegenerat ın plan si vomasocia fiecarui punct coordonatele sale carteziene relativ la acest triunghi. Desigur, aceste trei coordonatenu sunt independente, deoarece suma lor trebuie sa fie egal cu unu. Totusi, ın calculele noastre va fi maiconvenabil sa utilizam toate trei coordonatele, ın loc sa eliminam una dintre ele, deoarece, ın acest modmulte dintre ecuatii vor avea o forma mai simetrica.

Vom descrie suprafetele Bezier triunghiulara folosind o abordare algoritmica. Algoritmul pe care ılvom folosi este un analog direct al algoritmului lui de Casteljau pentru curbe Bezier, de aceea ıl vomnumi, de asemenea, algoritmul lui de Casteljau pentru suprafete Bezier triunghiulare.

Alegem un punct ın plan, de coordonate baricentrice u = (u, v, w). Vom pune

b0i = bi pentru orice i cu |i| = n

si pentru r = 1, . . . , n:

bri (u) = ubr−1i+e1

(u) + vbr−1i+e2

(u) + wbr−1i+e3

(u) pentru orice i cu |i| = n− r.

Page 63: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

4.4. Suprefete Bezier triunghiulare 63

Punctul de pe suprafata este punctul final, adica

r(u) = bn000(u).

Semnificatia geometrica a algoritmului lui de Casteljau pentru suprafete Bezier triunghiulare este foartesimpla. Pornim cu cu coordonatele baricentrice (u, v, w) si vrem sa determinam punctul de pe suprafatacare corespunde acestor coordonate. Initial, avem un set de (n+1)(n+2)

2 triunghiuri ın spatiu. La primulpas, vom asocia fiecarui astfel de triughi punctul din planul triunghiului care are coordonatele baricentrice(u, v, w) relati la acest triunghi. Obtinem, ın acest mod, o multime de n(n+1)

2 puncte. Dupa penultimulpas, ramanem cu un singur triunghi, iar punctul pe care ıl cautam va fi punctul din planul acestui triunghicare are coordonatele baricentrice (u, v, w) ın raport cu acest triunghi. Este clara, acum, similaritatea cucazul algoritmului lui de Casteljau pentru curbe Bezier, deoarece acolo, la fiecare pas, ımpartim fiecaresegment al poligonului de control ın raportul 1 − t : t. Dar, cum 1 − t + t = 1, rezulta ca, pe dreaptareala, 1− t si t sunt coordonatele baricentrice ale punctului ın raport cu punctele 0 si 1.

In cazul suprafetelor cubice (n = 3), avem urmatoarea diagrama:

b0030

b0021 b0

120

b0012 b0

111 b0210

b0003 b0

102 b0201 b0

300

C(u)−−−→b1

020

b1011 b1

110

b1002 b1

101 b1200

C(u)−−−→ b2010

b2001 b2

100

C(u)−−−→ b3000. (4.4.1)

Aici un pas din algoritmul lui de Casteljau este descris de operatorul C(u). Astfel, operatorul C(u)preia o retea triunghiulara si produce o retea triunghiulara mai mica. Formal, r se poate scrie, folosindoperatorul C(u), ca

r(u)) = C(u)n(bi). (4.4.2)

Observatie. Exemplul suprafetor cubice sugereaza, de asemenea, modul ın care se construe reteaua decontrol a unei suprafete Bezier triunghiulare. Astfel, punctele al ca ror multi-indice contine cel put unzero apartin frontierei retelei: ele sunt varfuri ın cel mult doua triunghiuri. Puctele cu doi indici nuli suntvarfuri ın exact un triunghi. Exista, desigur, trei astfel de puncte. Daca asezam punctele retelei de controlıntr-un triunghi, cum am facut ın cazul suprafetor cubice, atunci fiexcare punct este ın acelasi triunghi cuvecinii sai. Astfel, de exemplu, ın cazul suprafetelor bipatratice (n = 4) reteaua de control initiala va fi

b040

b031b130

b022b121b220

b013b112b211b310

b004b103b202b301b400

Intentionam acum sa scriem suprafete Bezier triughiulare ıntr-o forma care este si mai asemanatoarecu cea a curbelor Bezier. In acest, pentru ınceput, mai introducem niste notatii. Notam Ci = C(ei),i = 1, 2, 3. Atunci, pentru orice u = (u, v, w), avem

C(u) = uC1 + vC2 + wC3.

Operatorii Ci sunt analogi cu operatorii R si L din teoria curbelor Bezier. Reamintim ca operatorii R siL pur si simplu sterg anumite puncte de control. Efectul operatorului Ck consta ın aplicarea unui pas de

Page 64: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

64 Capitolul 4. Suprafete Bezier si B-spline

Casteljau corespunzator coordonatelor baricentrice ek. Astfel, actea sa asupra punctelor de control estede forma:

bri = br−1i+ek

.

Aceasta ınseamna, pur si simplu ca se ınlatura punctele cu ik = 0 si, pentru restul punctelor, se scade 1din ik. Cu alte cuvinte, eliminam o latura din triunghiul punctelor de control. De exemplu, primul pas ınalgoritmul lui de Casteljau pentru suprafete cubice, pentru coordonatele baricentrice (1, 0, 0) este

b030

b021b120

b012b111b210

b003b102b201b300

C1−→b120

b111b210

b102b201b300

In general, daca iteram, obtinem, pentru o suprafata Bezier triunghiulara de gradul n,

r(1, 0, 0) = bn00, r(0, 1, 0) = b0n0, r(0, 0, 1) = b00n,

adica obtinem colturile suprafetei. Curbele de frontiera, pe de alta parte, se obtin daca se pune doar ocoordonata baricentrica egala cu zero. In acest caz, algoritmul lui de Casteljau se reduce la algoritmullui de Casteljau obisnuit, pentru curbe. De exemplu, daca a doua coordonata este zero,

bri,0,r−i(t, 0, 1− t) = (1− t)br−1i,0,r−i+1(t, 0, 1− t) + tbr−1

i+1,0,r−i(t, 0, 1− t).

Astfel, curbele de frontiera sunt curbe Bezier de grad n, iar poligoanele lor de control sunt poligoanelede control de frontiera ale retelei de control.

Intorcandu-ne la problema noastra, remarcam ca, pentru un triplet (i, j, k) dat, cu i + j + k = n,obtinem, aa cm ne putem convinge cu usurinta,

bijk = Ci1Cj2Ck3 (b).

De aceea, pentru niste coordonate baricentrice oarecare u = (u, v, w), obtem

r(u) = Cn(u)(b) = (uC1 + vC2 + wC3)n(b) =∑

i+j+k=n

n!

i!j!k!uivjwkCi1Cj2Ck3 (b) =

=∑

i+j+k=n

n!

i!j!k!uivjwkbijk =

∑|i|=n

biBin(u),

undeBin(u) =

n!

i!j!k!uivjwk

sunt asa-numitele polinoame Bernstein de trei variabile.

Page 65: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

CAPITOLUL 5

Curbe si suprafete rationale

5.1 Geometrie proiectiva. Coordonate omogene

In esenta, proprietatile proiective ale figurilor din plan si din spatiu sunt proprietatile care sunt invarianterelativ la o proiectie centrala, iar geometria proiectiva este cea care investigheaza aceste proprietati.

Ca sa ne pastram la un nivel mai formal, dam, mai ıntai, urmatoarea definitie:

Definitia 5.1. Spatiul proiectiv d-dimensional RPd este alcatuit din toate subspatiile 1-dimensionaleale lui Rd+1. Astfel, daca notam cu [x1, . . . , xd+1] subspatiul 1-dimensional al lui Rd+1 generat de(x1, . . . , xd+1) 6= (0, . . . , 0), atunci

RPd ={

[x1, . . . , xd+1] | (x1, . . . , xd+1) 6= 0}. (5.1.1)

Prin urmare, un element al spatlui proiectiv d-dimensional este o dreapta prin originea spatiuluieuclidian (d + 1)-dimensional. Putem specifica un astfel de element (punct) prin coordonatele saleomogene [x1, . . . , xd+1]. Aceste coordonate nu sunt unice, desigur. Daca λ 6= 0 este un numar real,atunci coordonatele omogene [x1, . . . , xd+1] si [λx1, . . . , λxd+1] reprezinta acelasi punct din spatiulproiectiv.

Spatiul proiectiv d-dimensional poate fi interpretat ca fiind un fel de “completare” a spatiului eucli-dian d-dimensional, adaugand puncte situate “la infinit”.

Ca sa fim mai precisi, sa consideram un hiperplan din Rd+1 care nu trece prin origine. Print-o ale-gere corespunzatoare a coordonatelor, putem presupune ca ecuatia hiperplanului este xd+1 = 1. Putemidentifica acest hiperplan cu spatiul euclidian Rd si putem scufunda Rd ın RPd prin intermediul aplicatiei

f : Rd → RPd,

f(x1, . . . , xd) = [x1, . . . , xd, 1]. (5.1.2)

Este usor de verificat ca aplicatia

g : {[x1, . . . , xd+1] ∈ RPd |xd+1 6= 0} → Rd,

65

Page 66: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

66 Capitolul 5. Curbe si suprafete rationale

g([x1, . . . , xd+1]) =

(x1

xd+1, . . . ,

xdxd+1

), ∗ (5.1.3)

este inversa lui f . Astfel, Rd poate fi identificat cu o submultime a spatiului proiectiv de aceeasi dimen-siune si numai acele elemente ale spatiului proiectiv care au ultima coordonata omogen egala cu zero nuau corespondent ın spatiul euclidian. Aceste puncte sunt considerate “punctele de la infinit” ale spatiuluieuclidian. Astfel, de exemplu, spatiul proiectiv 1-dimensional se obtine prin adaugarea unui singur punctdreptei reale. In mod clar, asta ınseamna ca spatiul proiectiv 1-dimensional poate fi identificat cu cer-cul. Spatiul proiectiv bidimensional (sau planul proiectiv) se obtine adaugand planului euclidian o liniesuplimentara. Mai precis, toate dreptele euclidiene paralele cu o directie data se vor intersecta, de fapt,ıntr-un acelasi punct (ın planul proiectiv!), punctul fiind pe dreapta de la infinit. Astfel, dreapta de lainfinit va avea cate un punct pentru fiecare directie din planul euclidian.

O transformare liniara regulata (adica nedegenerata) a lui Rd+1 asociaza unui subspatiu un subspatiude aceeasi dimensiune, de aceea ea induce o transformare a spatiului proiectiv RPd. O astfel de trans-formare se numeste transformare proiectiva. O transformare proiectiva este, astfel, pur si simplu otransformare care este liniara ın coordonate omogene. Pe R2 ⊂ RP2 avem

(x, y) = [x, y, 1]→ [a11x+ a12y + a13, a21x+ a22y + a23, a31x+ a32y + a33] =

=

[a11x+ a12y + a13

a31x+ a32y + a33,a21x+ a22y + a23

a31x+ a32y + a33, 1

]=

(a11x+ a12y + a13

a31x+ a32y + a33,a21x+ a22y + a23

a31x+ a32y + a33

).

Astfel, transformarile proiective ale planului sunt date de functii rationale de grad unu ın coordonatecarteziene. Se poate demonstra cu usurinta ca aceasta afirmatie este adevarata pentru spatii euclidienede dimensiune arbitrara. In mod clar, transformarile afine (date de functii polinomiale de grad unu ıncoordonate carteziene) sunt cazuri particulare de transformari proiective.

In general, transformarile afine nu sunt izometrii. Ele nu pastreaza distanta. De exemplu, o scalare(o omotetie) este o aplicatie afina care este izometrie daca si numai daca factorul de scala este egal cu 1(adica daca transformarea este chiar aplicatia identica). Ele, totusi, lasa invariant raportul a trei punctede pe o dreapta. Reamintim ca daca a, p, b sunt trei puncte de pe o dreapta, atunci raportul lor este

(a, p, b) =d(a, p)

d(p, b). (5.1.4)

Aici d(a, p) si d(p, b) sunt distantele orientate dintre punctele respective.In cazul transformarilor proiective, raportul nu este pastrat, de obicei, dar exista o alta cantitate care

este pastrata, asa-numitul biraport. Daca a, p, q, b sunt patru puncte de pe o dreapa, atunci biraportul loreste

(a, p, q, b) =(a, p, b)

(a, q, b)=d(a, p)

d(p, b)/d(a, q)

d(q, b)=d(a, p)d(q, b)

d(p, b)d(a, q). (5.1.5)

O scufundare afina a lui R ın Rd este o aplicatie care, pe fiecare componenta, este o functie poli-nomiala de o singura variabila, de gradul 1. O scufundare afina este unic determinata daca se cunoscvalorile sale pe doua puncte distincte. De exemplu, o scufundare afina a dreptei reale ın spatiul euclidiande dimensiune doi este de forma

f(t) = (at+ b, ct+ d).

Page 67: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

5.2. Curbe Bezier si B-spline rationale 67

Sa presupunem ca stim ca f(0) = p = (p1, p2) si f(1) = q = (q1, q2). Aceasta ınseamna ca avem

f(0) ≡ (b, d) = (p1, p2)

si

f(1) ≡ (a+ b, c+ d) = (q1, q2).

Astfel, ın mod evident,

f(t) = ((q1 − p1)t+ p1, (q2 − p2)t+ p2) = (q− p)t+ p.

In mod analog, o functie rationala de la R la Rd este determinata de valorile sale pe trei puncte. Astfel,daca f este o astfel de aplicatie si stim ca f(0) = a, f(1/2) = q si f(1) = b, atunci se dovedeste ca

f(t) = (1− t) d(q, b)

(1− t)d(q, b) + td(a, q)a + t

d(a, q)

(1− t)d(q, b) + td(a, q)b. (5.1.6)

De remarcat ca aceasta este o combinatie afina a lui a si b, de aceea, pentru orice t, f(t) este situat pedreapta determinata de aceste doua puncte.

In particular, daca d = 1, f(0) = 0, f(1/2) = ρ si f(1) = 1, atunci avem

f(t) =tρ

(1− t)(1− ρ) + tρ(5.1.7)

si pentru fiecare ρ ∈ (0, 1), aceasta ne da o reparametrizare rationala a intervalului [0, 1].

5.2 Curbe Bezier si B-spline rationale

Conicele cu centru nedegenerate din plan nu au parametrizari polinomiale. Totusi, ele au parametrizarirationale. Sa consideram cercul unitate cu centrul ın originea axelor de coordonate (vezi figura 5.1).Atunci dreapta prin punctele (0, 1) si (t, 0) poate fi parametrizata ca (x, y) = (ut, 1− u). Daca inseramaceasta expresie ın ecuatia cercului, x2 + y2 = 1, obtinem imediat punctul de intersectie ca

(x, y) =

(2t

t2 + 1,t2 − 1

t2 + 1

). (5.2.1)

Aceasta este o parametrizare rationala a cercului (fara punctul (0, 1)!). Daca interpretam cercul ca fiindo curba ın planul proiectiv, obtinem ecuatii polinomiale de gradul doi ın t ın coordonatele omogene t:

[x, y, z] = [2t, t2 − 1, t2 + 1]. (5.2.2)

Page 68: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

68 Capitolul 5. Curbe si suprafete rationale5.2. RATIONAL BÉZIER AND B-SPLINE CURVES 125

c D .0; 1/

.t; 0/ .x; y/ D �2t

t2C1; t2�1

t2C1

Figure 5.6: Stereographic projections from the unit-circle to the real axis.

of the unit circlex2 C y2 D 1 then we obtain the equationu2.1C t2/ � 2u D 0the two solutions to this equation isu D 0 (the centrec of the projection) andu D 2t

1Ct2 substituted back into the parametrization of the line we obtain the pointof intersection

.x; y/ D �2t

t2 C 1; t2 � 1

t2 C 1

� : (5.9)

This is a rational parametrization of (part of) the circle. If we consider it as acurve in the projective space then we can specify homogeneous coordinates thatare polynomials in the parametert :

Tx; y; zU D T2t; t2 � 1; t2 C 1U: (5.10)

We will now find the three Bézier control points for this quadratic curve inR2C1.

Polynomial Polar form evaluated in(0,0) (0,1) (1,1)

x=2t t1 C t2 0 1 2y=t2 � 1 t1t2 � 1 -1 -1 0z=t2 C 1 t1t2 C 1 1 1 2

We see that it has control points that in homogeneous coordinates areT0;�1; 1U,T1;�1; 1U, andT2; 0; 2U. If we project into the planez D 1 then we obtain theCartesian control pointsb0 D .0;�1/, b1 D .1;�1/, andb3 D .1; 0/. The z-coordinates of the homogeneous control points are called theweightsso in theexample the weights are!0 D 1,!1 D 1, and!2 D 2.

Figura 5.1: Proiectia stereografica a cercului

Gasim cele trei puncte de control Bezier control pentru aceasta curba ın R2+1, folosind forma polara:

Polynomial Polar form e� valuated in(

�0,0) (

�0,1) (

�1,1)

x=2t t� 1 � t2 0�

1 2y� =t2 � 1 t� 1t2 � 1 -1 -1 0

z=t2 � 1 t� 1t2 1 1 1 2

Putem vedea ca are puncte de control care, ın coorrdonate omogene, sunt date de [0,−1, 1], [1,−1, 1]i [2, 0, 2]. Daca proiectam pe planul z = 1, atunci obtinem punctele de control carteziene b0 = (0,−1),b1 = (1,−1) si b2 = (1, 0). Coordonatele z ale punctelor de control se numesc ponderi. In exemplulnostru, ponderile sunt ω0 = 1, ω1 = 1 si ω2 = 2.

Acum, sa ıncercam sa ıntelegem ce am facut, privind ınapoi: consideram trei puncte de control ınplan, b0,b1,b2. Lor le asociem trei puncte ın spatiu, ai = ωi(bi, 1). Construim curba Bezier asociataacestor puncte de control. Aceasta este, ın general, o curba stramba (neplanara!). O proiectam pe planulz = 1. Aceasta ınseamna, pur si simplu, ca ımpartim primele doua coordonate ale curbei spatiale la ceade-a treia. Primele doua coordonate ne vor da, prin urmare, ecuatiile curbei. Astfel, cercul se obtine ca oproiuectie centrala a unei curbe ın spatiu pe planul z = 1. Aceasta sugereaza urmatoarea definitie.

Definitia 5.2. O curba Bezier rationala, cu punctele de control b0, . . . ,bn ∈ Rd si ponderile ω0, . . . , ωn ∈R este data de

r(t) =

∑ni=0 ωibiB

in(t)∑n

i=0 ωiBin(t)

, (5.2.3)

adica este proiectia centrala a curbei Bezier din Rd+1 cu punctele de control ωi(bi, 1), i = 0, . . . , n pehiperplanul xd+1 = 1.

Page 69: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

5.3. Suprafete Bezier si B-spline produs tensorial rationale 69

In mod analog, avem:

Definitia 5.3. O curba B-spline rationala de gradul n cu sirul de noduri t, punctele de control d1, . . . ,dn+N ∈Rd si ponderile ω1, . . . , ωn+N ∈ R este data de

r(t) =

∑n+Ni=1 ωidiN

in(t|t)∑n+N

i=1 ωiN in(t|t)

, (5.2.4)

adica este proiectia centrala a curbei B-spline din Rd+1 cu sirul de noduri t si punctele de controlωi(di, 1), i = 1, . . . , n+N pe hiperplanul xd+1 = 1.

Algoritmii lui de Casteljau si de Boor se pot adapta cu usurinta cazului rational. In cazul de Casteljau,obtinem urmatorul algoritm:

pentru k = 0, . . . , n executa

ω0k(t) = ωk,

b0k(t) = bk,

pentrtu l = 1, . . . , n si k = 0, . . . , n− l executa

ωlk(t) = (1− t)ωl−1k (t) + tωl−1

k+1(t),

blk(t) = (1− t)ωl−1k (t)

ωlk(t)bl−1k (t) + t

ωl−1k+1(t)

ωlk(t)bl−1k+1(t).

5.3 Suprafete Bezier si B-spline produs tensorial rationale

Suprafetele Bezier si B-spline produs tensorial rationale se definesc prin analogie cu curbele rationale,adaptand definitiile suprafetelor produs tensorial polinomiale.

Definitia 5.4. Suprafata Bezier produs tensorial rationala cu punctele de control bi,j ∈ Rd si ponderileωi,j ∈ R, unde i = 0, . . . , n, j = 0, . . . ,m este data de

r(u, v) =

n∑i=0

m∑j=0

ωi,jbi,jBni (u)Bm

j (v)

n∑i=0

m∑j=0

ωi,jBni (u)Bm

j (v)

, (u, v) ∈ [0, 1]2, (5.3.1)

adica este proiectia pe Rd a suprafetei Bezier polinomiale produs tensorial ın Rd+1, cu punctele decontrol (ωi,jbi,j , ωi,j).

Suprafetele B-spline produs tensorial rationale se definesc ın mod analog:

Definitia 5.5. Suprafata B-spline produs tensorial rationala cu punctele de control di,j ∈ Rd, vectoriide noduri u si v si ponderile ωi,j ∈ R, unde i = 1, . . . , n+N , j = 1, . . . ,m+M este data de

r(u, v) =

n+N∑i=1

m+M∑j=1

ωi,jdi,jNni (u|u)Nm

j (v|v)

n+N∑i=1

m+M∑j=0

ωi,jNni (u|u)Nm

j (v|v)

, (u, v) ∈ [un, un+N ]× [vm, vm+M ], (5.3.2)

Page 70: Curbe s¸i suprafet¸e ˆın grafica˘ s¸i designul geometricpablaga/AGI/bezier_ro.pdfS¸i ˆın cazul scal arii, aplicat¸ia se poate reprezenta matricial. De aceasta dat˘ a, avem

70 Capitolul 5. Curbe si suprafete rationale

adica este proiectia pe Rd a suprafetei B-spline polinomiale produs tensorial ın Rd+1, cu punctele decontrol (ωi,jdi,j , ωi,j) si vectorii de noduri u. si v.

Algoritmii de Casteljau si de Boor pentru suprafete produs tensorial polinomiale se adapteaza lacazul rational ca si ın cazul curbelor.