REPREZENTAREA CURBELOR SI A SUPRAFETELOR
In grafica de calculator sunt necesare tehnici prin care utilizatorul poate genera curbe cu aspectul dorit .
Exemple: aplicatii AUTOCAD pentru proiectarea caroseriilor automobilelor, fuselaje de avion etc .
Suntem in cautarea unor tehnici care:
pot genera curbe de o varietate cat mai mare
utilizatorul poate transmite usor calculatorului intentiile sale
sa permita verificarea rapida a apartenentei unui punct la curba
sa faciliteze gasirea intersectiei cu alta curba
ex
f(x,y)=x2+ y2- r2=0 . (1)
nu sunt convenabile in forma respectiva pentru trasare . De exemplu, avand coordonata curenta, x0, obtinem
(2)
In plus, pentru ca exista o foarte mare varietate de curbe posibile, vom avea nevoie de un numar imans de reprezentari (ecuatii) diferite .
ex .
x=rcos(u), (3)
y=rsin(u),
sunt mai convenabile pentru trasare . Mai mult, permit calculul derivatelor locale de o maniera mai directa si mai intuitiva . Derivata intai exprima viteza de variatie pe directia de crestere a parametrului, adica de-a lungul curbei:
(4)
De exemplu, pentru u=0 avem valorile (0, r), ceea ce indica faptul ca pentru moment x este constant si y se schimba, deci curba merge intr-o directie verticala . Prin comparatie, pentru forma implicita, avem
(5)
In punctul (r,0), corespunzator lui u=0, avem derivata , o valoare cu tratarea careia calculatoarele au unele dificultati .
Forma de reprezentare implicita, desi neadecvata pentru trasare, are proprietatea dezirabila de a permite verificarea facila a apartenetei unui punct oarecare la curba sau calculul intersectiei curbelor . Reprezentarea parametrica are insa o serie de avantaje ce precumpanesc . Curbele de forme complexe sunt reprezentate in grafica de calculator ca o colectie de segmente de curba de complexitate moderata . Fiecare segment este reprezentat cu ajutorul unui polinom . Ansamblul este o curba polinomiala pe portiuni . Uzual gradul polinomului de aproximare nu depaseste valoarea 3 . Un polinom de gradul trei este o forma suficient de generala pentru putea asigura cu usurinta doua cerinte fundamentale: continuitatea de ordinul zero (punctele de capat, in care se imbina segmentele coincid) si continuitatea de ordinul intai (tangentele in punctele de imbinare coincid) . Conditia a doua nu este intotdeauna necesara, dar este dorita de cele mai multe ori, astfel incat utilizatorul sa nu perceapa imbinarile dintre segmente . De exemplu, poligonul permite o reprezentare a curbei liniara pe portiuni, corespunzatoare unui poligon de ordinul intai si nu asigura continuitatea de ordinul doi .
Ecuatiile parametrice ale unei curbe sunt de forma:
(6)
In cazul particular al reprezentarii prin polinoame de ordinul trei, ecuatiile iau forma:
(7)
Mai concis, folosind notatiile vectoriale:
(8)
si
(9)
putem rescrie ecuatiile (7) in forma concisa
. (10)
Orice polinom de grad n poate fi scris in forma din ecuatiile (7) . Polinomul este definit unic de coeficientii sai, pi . Polinoamele de gradul n (ordinul n+1) formeaza un spatiu vectorial, de dimensiunea n+1, in care
u , u1, u2, . , un
reprezinta o baza (baza de putere) . Functiile bi(u)=ui reprezinta functiile de baza, ce pot fi definite cu ajutorul veectorilor de baza . Pentru cazul particular de interes n=3, acestia sunt:
Se poate vedea usor ca sunt liniar independenti .
Cu toate ca baza de putere ofera cea mai simpla, directa si intuitiva modalitate de reprezentare a unui polinom, ea nu este unica baza pe care o putem folosi si nici macar cea mai convenabila pentru grafica de calculator . Impedimentul principal consta in faptul ca, pentru a se genera o curba de forma dorita, este relativ dificil de anticipat valorile necesare ale coeficientilor pi . Pentru o baza oarecare, ecuatia (10) se poate rescrie in forma:
.
Majoritatea bazelor utilizate curent in grafica de calculator poseda doua proprietati importante:
Ecuatia (11) poate fi interpretata in felul urmator: fiecare punct de pe curba reprezinta o medie ponderata a punctelor pi, pe care le vom denumi puncte de control . Invelisul convex al punctelor de control este poligonul convex de arie minima ce cuprinde toate punctele de control in interiorul sau pe conturul sau . Este poligonul care s-ar obtine plasind o bada elastica in jurul punctelor de control . Acesta include poligonul de control, al carui interior este redat umbrit in (fig . 1) .
fig . 1
Proprietatea invelisului convex consa in faptul ca forma generata se afla in interiorul invelisului convex daca:
(12)
adica, functiile de baza au suma identic egala cu 1 si sunt nenegative pe intervalul de definitie (uzual u apartine intervalului [0,1]) .
Transformarile afine includ translatia, rotatia si scalarea .
Prprietatea invariantei la transformarile afine consta in faptul ca figura generata de punctele de control care au suferit o transformare afina corespunde transformarii afine a figurii corespunzatoare punctelor initiale . Notand transformarea afina cu Φ(), proprietatea enuntata presupune ca
. (13)
Proprietatea este deoasebit de utila in manipularea curbelor (de exemplu in animatie), deoarece nu este necesar sa efectuam transformarea pentru fiecare punct al curbei ci numai pentru punctele de control, utilizand apoi rutinele obisnuite de trasare a curbei .
O curba reprezentata parametric prin punctele ei de control poate fi redata cu o rezolutie oricat de mare este necesara . Daca aceeasi curba ar fi reprezentata ca o mini-imagine, rezolutia ar fi limitata de formatul imaginii . Desigur exista si pentru imagini posibilitatea de crestere a rezolutiei prin tehnici ce folosesc interpolarea, dar rezultatele pentru curbe nu sunt totdeauna cele asteptate . Astfel, prin cresterea rezolutiei, o linie cu grosime de un pixel poate deveni o linie cu grosime mai mare de un pixel .
Functiile de baza ale unei curbe Bézier de gradul n sunt:
(14)
Pentru gradul 3, utilizat cel mai frecvent in grafica de calculator, functiile de baza Bézier (fig . 2) sunt:
. (15)
O curba Bézier de gradul trei se scrie:
(16)
(0<u<1) .
In primul rand, observam ca
r(0)=p0, (17)
r(1)=p3, (18)
deci curba Bézier trece prin primul si prin ultimul punct de control .
Pentru a vedea semnificatiile celorlalte doua puncte de control, derivam curba in raport cu u:
.(19)
Rezulta ca:
r'(0)=3(p1─ p0), (20)
r'(1)=3(p3─ p2) . (21)
Dezvoltarea functiei in serie Taylor in jurul punctului u=t se scrie:
r (t+h)= r(t)+hr'(t), (22)
ceea ce arata ca r'(t) este directia tangentei in punctul u=t . Prin urmare, directia tangentei in punctul initial este 3(p1─ p0), adica directia dreptei ce uneste primele doua puncte de control (multiplicarea vectorului cu factorul 3 nu schimba directia) . Ecuatia (22) mai sugereaza faptul ca, pe masura ce punctul de control p1 este mai indepartat de p0, curba inainteaza mai mult pe directia tangentei in origine . O interpretare similara exista si pentru tangenta in punctul final .
Functiile Bézier respecta conditiile (12), pentru ca functiile de baza sunt de fapt termenii dezvoltarii binomului ((1-u)+u)n . Prin urmare, ele poseda si proprietatea invelisului convex .
In concluzie, punctele de control pot fi utilizate de o maniera simpla pentru asigurarea continuitatii de ordinul zero si unu ale unei curbe compuse din segmente Bézier de ordinul trei . Ordinul trei este suficient de ridicat pentru a permite o mare varietate de curbe, in general nesimetrice . Totodata, curbele generate sunt netede, o proprietate dorita de cele mai multe ori .
Functiile de baza Bézier de un anumit ordin se pot obtine prin interpolarea liniara a functiilor de rang inferior, conform ecuatiei:
, (23)
ceea ce se poate verifica usor, folosind ecuatia (14) .
In consecinta, un punct de pe curba, situat la coordonata u, poate fi generat recursiv, folosind urmatorul algoritm:
,
i=0,1,,n - r,
r=0 . // semnifica iteratia
u se initializeaza cu valoarea dorita, in intervalul 0-1 .
. (24)
Se observa ca:
fiecare punct nou se obtine prin interpolarea liniara a doua puncte consecutive din iteratia precedenta
le fiecare iteratie, numarul punctelor calculate se reduce cu unul
Interesant este faptul ca ultimul punct care se obtine, este =r(u) si este pe curba!
Cititorul este invitat sa verifice afirmatia pentru n=3, folosind calculul recursiv indicat de algoritm . O ilustrare grafica a algoritmului Casteljau pentru u=1/2 se da in figura 3 .
Se poate demonstra ca punctul final obtinut divide curba Bézier in doua curbe Bézier (subdiviziune) ale caror puncte de control sunt chiar , respectiv , ce au fost deja calculate . In consecinta, este posibila trasarea curbei folosind subdiviziunea recursiva . Costul de calcul pentru fiecare punct nou este de numai patru medii ponderate . Daca se alege u=1/2, multiplicarile pot fi evitate: impartirea cu doi se poate implementa ca o operatie de deplasare la dreapta cu o unitate( operatorul >>1 in limbajul C) . Noile puncte de control ale celor doua segmente se reduc la:
Solutia este extrem de convenabila si pentru o eventuala implementare hardware . Algoritmul se termina cand invelisul convex al poligonului de control Bézier este suficient de plat pentru a se putea aproxima segmentul curent de curba cu o dreapta, care se traseaza .
Algoritmul Casteljau este un punct forte major al reprezentarii Bézier a curbelor . El are insa si o importanta teoretica . Pentru ca interpolarea liniara este invarianta la transfomrarea afina, algoritmul demonstreaza faptul ca reprezentarea Bézier are proprietatea invariantei la transformari afine .
O conventie alternativa pentru a specifica o curba Bézier este cu ajutorul matricii Bézier si a vectorilor bazei de putere:
. (25)
De precizatat, ca vectorii r si p sunt vectori-linie in formularea de mai sus . Functiile de baza Bézier cubice se obtin din produsul primelor doua matrici in ecuatia (25) .
Formularea matriciala a curbelor Bézier este utila in urmatoarele doua situatii:
implementarea hardware la reprezentarea in alta baza
conversia intre baze
De ce sa folosim si alte baze?
la reprezentarea Bézier modificarea unui singur punct de control afecteaza alura intregii curbe
reprezentarea Bézier nu are flexibilitatea necesara in unele aplicatii, de exemplu nu permite sinteza operativa a unor curbe cu colturi (ca in figura 4)
Tema
P1 .
Triunghiul cu varfurile Vi(x,y)=
Se roteste cu 30o in jurul lui V1 . Calculati centroidul triunghiului rezultant .
P2 .
Gasiti directia tangentei in punctul (4,1) la curba Bézier definita de punctele de control .
P3 . Folosind algoritmul Casteliau, aflati coordonatele punctului corespunzator parametrului u = 0,4 .
P4 . Gasiti rezultatul filtrului median 3x3 in centrul imaginii I .
P5 . Gasiti rezultatul filtrului binomial 3x3 in centrul imaginii I .
P6 . Gasiti histograma nivelurilor de gri pentru imaginea I . Pe baza histogramei, calculati nivelul mediu de gri .
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |