0% au considerat acest document util (0 voturi)
7 vizualizări23 pagini

SPG Lab13

Documentul prezintă curbe parametrice, în special curbele Coons (Hermite). Sunt descrise ecuațiile curbelor Coons și modul în care sunt definite prin puncte și tangente extreme, precum și funcțiile de ponderare. De asemenea, sunt prezentate compunerea și trasarea grafică a acestor curbe.

Încărcat de

Marius Paun
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
7 vizualizări23 pagini

SPG Lab13

Documentul prezintă curbe parametrice, în special curbele Coons (Hermite). Sunt descrise ecuațiile curbelor Coons și modul în care sunt definite prin puncte și tangente extreme, precum și funcțiile de ponderare. De asemenea, sunt prezentate compunerea și trasarea grafică a acestor curbe.

Încărcat de

Marius Paun
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Sisteme de prelucrare grafica Lucrarea 12

Modelarea şi redarea curbelor parametrice

1. Curbe de formă liberă


Curbele de formă liberă sunt curbe cunoscute nu prin ecuaţii ci prin formele lor. Sunt
folosite în proiectare, arhitectură, animaţie, reprezentarea formei caracterelor de text, în
recunoaşterea formelor din imagini, etc.
Curbele de formă liberă sunt de două tipuri:
- curbe de interpolare – curba trece prin toate punctele date;
- curbe de aproximare – curba căutată nu trece prin toate punctele. Acestea au rolul de a
caracteriza forma şi poziţia curbei şi se numesc puncte caracteristice sau puncte de
control.
În activităţile de concepţie sunt folosite mai ales curbele de aproximare, deoarece ele nu
impun cunoaşterea exactă a formei obiectului conceput. Sistemele de proiectare a curbelor de
formă liberă (şi a suprafeţelor de formă liberă) permit controlul interactiv al formei unei curbe
prin deplasări fine ale punctelor de control.

2. Curbe Coons (Hermite)


O curbă Coons este definită analitic printr-un polinom de interpolare Hermite (deci este o
curbă de interpolare). De aceea mai este numită şi curbă Hermite. Ecuaţia vectorială este:
p(u )  a3u 3  a2u 2  a1u  a0 (7)
unde coeficienţii algebrici a0 , a1 , a2 , a3 se determină pe baza următoarelor condiţii geometrice:
- punctele extreme ale curbei;
- tangentele în punctele extreme.
În figura 2 este redată o curbă Coons.

P1u
P0u P1

P0

Figura 2.1 Curbă Coons

O notaţie mai simplă decât cea vectorială se obţine prin folosirea matricelor. Ecuaţia (7) poate fi
scrisă sub forma:

1
Sisteme de prelucrare grafica Lucrarea 12


p(u )  u 3 u 2 u 1  a3  a2 a1 a0 T (8)

Se notează cu:

U  u3 u 2 u 1 
A  a3 a2 a1 a0 T

şi se obţine forma algebrică în notaţia matricială:

p(u )  U  A . (9)

Forma geometrică
Condiţiile geometrice implică:

 p(u  0)  P0  a0 a0  P0
 p(u  1)  P  a  a  a  a 
a1  P0
u
 1 3 2 1 0
 u   
 p (u  0)  P0  a1
u
a3  a2  P0  P0  P1
u

 p u (u  1)  P u  3a  2a  a 
3a3  2a2  P0  P1
u u
 1 3 2 1

a0  P0

a1  P0
u

 (10)
a2  3P0  3P1  2 P0  P1
u u


a3  2 P0  2 P1  P0  P1
u u

Introducem a0 , a1 , a2 , a3 în forma algebrică și grupăm termenii după P0 , P1 , P0u , P1u . Se


obţine

       
p(u )  2u 3  3u 2  1 P0   2u 3  3u 2 P1  u 3  2u 2  u P0u  u 3  u 2 P1u

Introducem notaţiile:

2
Sisteme de prelucrare grafica Lucrarea 12

 F1(u )  2u 3  3u 2  1

 F2 (u )  2u 3  3u 2
 (11)
 F3 (u )  u  2u  u
3 2


 F4 (u )  u  u
3 2

Rezultă

p(u )  F1 (u ) F2 (u ) F3 (u ) F4 (u )  P0 P1 P0u P1u 
T
(12)
Funcţiile F1 , F2 , F3 , F4 se numesc funcţii de ponderare sau funcţii de amestec (blending
functions) pentru curbele Coons. Funcţiile de amestec determină contribuţia condiţiilor
geometrice în producerea punctelor intermediare de pe curbă.
Graficele funcţiilor de amestec pentru curbele Coons sunt prezentate în figura 3.

f (u )

F1 F2
1

F3
u
F4
Figura 2.2 Funcţiile de amestec pentru curbele Coons

Notăm cu:
FH  F1 (u ) F2 (u ) F3 (u ) F4 (u ) - vectorul funcţiilor de amestec


GH  P0 P1 P0u P1u T
- matricea coeficienţilor geometrici

Se obţine forma geometrică în notaţie matricială pentru o curbă Coons:

p (u )  FH  GH (13)

3
Sisteme de prelucrare grafica Lucrarea 12

Pentru a determina transformarea de la forma geometrică la cea algebrică şi inversa sa,


extragem din vectorul FH vectorul U :


FH  2u 3  3u 2  1  2u 3  3u 2 u 3  2u 2  u u 3  u 2  

 2 2 1 1
 3 3  2  1

FH  u 3 u 2 u 1  
       0
 0 1 0
U  MH (14)
U  
 1  0  0 0
  
MH

unde M H este matricea de transformare pentru curbele Coons sau matricea de bază Hermite.
Matricea M H permite trecerea de la forma geometrică la cea algebrică pentru orice curbă Coons.
Din relaţiile (13) și (14) rezultă:

p(u )  U  M H  GH (15)

ceea ce implică:
A  M H  GH
(16)
GH  M H1  A

În figura 3 se prezintă o familie de curbe în care variem doar vectorul tangent în primul punct.

P0u

P1
P0

P1u
Fig. 2.3 Curbe Coons cu aceleaşi puncte P0 , P1 , acelaşi vector tangent P1u în al
doilea punct, dar cu vectorul tangent P0u în primul punct cu diferite cu mărimi

4
Sisteme de prelucrare grafica Lucrarea 12

Compunerea curbelor Coons


Două curbe Coons G1H  P0  P1 P0u P1u 
T

și G 2 H  Q0 Q1 Q0u Q1u 
T
pot fi compuse
dacă:
- P1 coincide cu Q0

- în punctul comun curbele au vectorii tangenţi coliniari P1u  k Q0u (figura 4) 

P0
P1  Q1
Q1

Q1u
P0u
P1u  Q1u

Figura 2.4 Compunerea curbelor Coons

Trasarea curbelor definite parametric

Se foloseşte forma geometrică:

p(u )  F1 (u ) P0  F2 (u ) P1  F3 (u ) P0u  F4 (u ) P1u

Condiţiile geometrice P0 , P1 , P0u , P1u sunt:


x0 , y0 , z0  , x1, y1, z1  , dx0 , dy0 , dz0  , dx1, dy1, dz1  

x(u )  F1 (u ) x0  F2 (u ) x1  F3 (u )dx0  F4 (u )dx1


y (u )  F1 (u ) y0  F2 (u ) y1  F3 (u )dy0  F4 (u )dy1 (17)
z (u )  F1 (u ) z0  F2 (u ) z1  F3 (u )dz0  F4 (u )dz1

Curba poate fi aproximată prin afişarea punctelor calculate cu relaţia (17) sau prin afişarea
segmentelor de dreaptă care unesc punctele respective.
În continuare se prezintă o funcţie C care poate fi folosită pentru afişarea unei curbe plane
oarecare. Condiţiile de frontieră (geometrice) le considerăm în spaţiul ecran (altfel trebuie
efectuată transformarea fereastră-poartă) şi deci sunt exprimate prin coordonate întregi.

5
Sisteme de prelucrare grafica Lucrarea 12

void curba(double umin, double umax, double pas,


void (*f)(double, int *, int *))
{ //aproximam curba prin segmente de dreapta
double u;
int x1, x2, y1, y2;
(*f)(umin,&x1,&y1);
moveto(x1, y1);
for (u=umin+pas; u<umax; u+=pas)
{
(*f)(umin,&x2,&y2);
if(x1 != x2 || y1 != y2)
{
lineto(x2,y2);
x1=x2;
y1=y2;
}
}
(*f)(umax,&x2,&y2);
if(x1 != x2 || y1 != y2)
lineto(x2,y2);
}

Pentru a trasa o curbă Coons trebuie creată, de exemplu, funcţia Coons:

int x0, y0, x1, y1, dx0, dy0, dx1, dy1;


void Coons(double u, int *x, int *y)
{
double u2, u3, f1, f2, f3, f4;
u2 = u*u;
u3=u*u2
f1=2*u3 – 3*u2 + 1;
f2=-2*u3 +3*u2;
f3=u3 – 2*u2 + u;
f4=u3 – u2;
*x=f1*x0 + f2*x1 + f3*dx0 + f4*dx1;
*y=f1*y0 + f2*y1 + f3*dy0 + f4*dy1;
}

6
Sisteme de prelucrare grafica Lucrarea 12

3. Curbe Bezier

Cea mai cunoscută formă de reprezentare parametrică a curbelor şi suprafeţelor este cea
dezvoltată de Pierre Bezier pentru proiectarea caroseriei maşinilor Renault.

Curbele Bezier sunt curbe de aproximare pentru care un segment de curbă este determinat
exclusiv de un set de puncte, deci, orice punct de pe curbă poate fi obţinut prin evaluarea unui
polinom de forma:

n
Q(u )   Pi fi (u ) , 0  u 1, (1)
i 0

unde: Pi sunt punctele date, numite şi puncte de control ale curbei.


Funcţiile de amestec f i (u ) au fost alese astfel încât să îndeplinească următoarele condiţii
geometrice:
1) Curba să treacă prin primul şi ultimul punct de control ( P0 şi Pn );
2) Vectorul tangent la curbă în primul punct să fie dat de segmentul P1P0 , iar în ultimul
punct de segmentul Pn Pn 1 ;
3) Cerinţa (2) să fie îndeplinită şi pentru derivatele de ordin superior, deci derivata de ordin
2 în P0 să fie determinată de punctele P0 , P1 , P2 , iar în Pn de punctele Pn  2 , Pn 1 , Pn .
În general, derivata de ordin m într-unul din punctele extreme să fie determinată de m  1
puncte consecutive.
4) Funcţiile f i (u ) să fie simetrice în raport cu u şi (1  u ) , adică secvenţa punctelor să poată
fi inversată fără ca forma curbei să fie afectată.

Drept funcţii de amestec pentru curbele Bézier au fost alese polinoamele Bernstein. Deci
expresia polinomială a curbelor Bézier este următoarea (expresie vectorială):

n
Q(u )   Pi Bi,n(u ) , 0  u 1, (2)
i 0
unde
u i 1  u n i  Cni u i 1  u n i .
n!
Bi,n(u )  (3)
i!n  i !

În relaţiile anterioare n reprezintă gradul curbei, respectiv gradul polinoamelor Bernstein.


Se observă că pentru funcţii de bază de grad n este nevoie de n  1 puncte de control. De
asemenea, din relaţia (1) rezultă că în cazul în care cele n  1 puncte de control coincid, funcţiile
de amestec trebuie să îndeplinească relaţia:

7
Sisteme de prelucrare grafica Lucrarea 12

n
 f i (u )  1 . (4)
i 0

Curbe Bézier cubice

Curbele Bézier cubice sunt curbe parametrice de grad 3 în care se folosesc patru puncte
de control P0 , P1 , P2 , P3 . Curba trece prin primul şi ultimul punct şi este tangentă la primul şi
ultimul segment de control (fig.1).

Fig. 3.1 Curbă Bézier cubică

Funcţiile de bază folosite pentru determinarea curbei (funcţiile de amestec) au expresiile (vezi
relaţiile (3)):

B0,3 (u )  (1  u ) 3 ,
B1,3 (u )  3u(1  u ) 2 ,
u  [0,1] (5)
B2,3 (u )  3u (1  u ),
2

B3,3 (u )  u 3 .

Expresia polinomială a curbelor Bézier este următoarea (expresie vectorială):

p(u )  P0 (1  u ) 3  3P1u (1  u ) 2  3P2 u 2 (1  u )  P3u 3 . (6)

8
Sisteme de prelucrare grafica Lucrarea 12

Reamintim că P0 , P1 , P2 şi P3 se numesc puncte de control, deoarece poziţia lor în spaţiu


influenţează forma curbei. Poligonul obţinut prin unirea punctelor succesive se numeşte poligon
de control sau poligon caracteristic.
În figura 2 se reprezintă curbele Bézier modificând punctul de control P1 , iar în figura 3
funcţiile de amestec Bézier.

Fig. 3.2 Curbe Bézier şi poligoanele caracteristice

Din figura 2 se observă că modificând un punct de control ( P1 în figură) se modifică toată


curba (acesta este principalul dezavantaj).

Fig. 3.3 Funcţiile de amestec Bézier cubice

9
Sisteme de prelucrare grafica Lucrarea 12

Forma geometrică
În relaţiile anteriore s-a folosit forma vectorială pentru curbele Bézier cubice. Forma
geometrică matricială se obţine în mod similar ca la curbele Coons, extrăgând vectorul U din
vectorul funcţiilor de amestec. În acest scop relaţia (6) o rescriem:

p(u )  B0 ,3 P0  B1,3 P1  B2 ,3 P2  B3,3 P3 . (7)

Notăm vectorul determinat de funcţiile de amestec Bézier cu FB (u ) şi deci:

FB (u )  B0,3 (u ) B1,3 (u ) B2,3 (u ) B3,3 (u ) . (8)

În relaţia (11) înlocuim funcţiile de amestec şi obţinem:


FB (u )  1  u 3 3u1  u 2 3u 2 1  u  u 3 
  u 3
 3u 2  3u  1 3u 3  6u 2  3u  3u 3  3u 2 u3  

1 3  3 1
 3 6 3 0

FB (u )  u 3 u 2 u 1 
        3 3
 0 0
U MB, (9)
U  
 1  0  0 0

MB
unde
 1 3  3 1
 3 6 3 0
MB    (10)
 3 3 0 0
 
1 0 0 0

este matricea de bază Bézier.


Deci forma matricială geometrică pentru segmentul de curbă Bézier cubică este:

p(u )  U  M B  G B , (11)
în care
GB  P0 P1 P2 P3 T (12)

reprezintă vectorul condiţiilor geometrice (polinomul de control).

Compunerea curbelor Bézier


În practică nu se folosesc curbe definite prin polinoame de aproximare de grad mai mare
ca 3, evitându-se creşterea timpului de calcul al punctelor de pe curbă şi apariţia instabilităţilor

10
Sisteme de prelucrare grafica Lucrarea 12

numerice. Se poate obţine o curbă determinată de mai multe puncte de control prin compunerea
mai multor curbe Bézier cubice asigurând continuitatea de ordin 0 şi de ordin 1 la joncţiunea a
două curbe. De exemplu, două curbe determinate de condiţiile geometrice
G1B  P0 P1 P2 P3 T şi G 2 B  Q0 Q1 Q2 Q3 T se pot compune dacă:
- Q0 coincide cu P3 ;
- segmentele P2 P3 şi Q0 Q1 sunt coliniare.

Trasarea curbelor Bézier


Se calculează diferite puncte de pe curbă folosind expresiile lui x (u ) , y (u ) , z (u ) . De
exemplu pentru 4 puncte de control avem:

x(u )  B0,3 (u ) x0  B1,3 (u ) x1  B2,3 (u ) x 2  B3,3 (u ) x3


y (u )  B0,3 (u ) y 0  B1,3 (u ) y1  B2,3 (u ) y 2  B3,3 (u ) y3 (16)
z (u )  B0,3 (u ) z 0  B1,3 (u ) z1  B2,3 (u ) z 2  B3,3 (u ) z 3

Pentru reducerea timpului de lucru, (când n este mare) se poate folosi relaţia de recurenţă:

n  i 1 u
Bi,n (u )  Bi 1,n (u ) (17)
i 1 u

Avantajele şi dezavantajele utilizării curbelor Bézier


Avantajele folosirii curbelor Bézier în proiectarea asistată de calculator sunt:
a) poligonul de control permite stabilirea formei iniţiale a curbei şi apoi modificarea curbei
acţionând asupra vârfurilor poligonului;
b) curba are extremităţile în primul şi ultimul punct de control;
c) tangentele în punctele extreme sunt chiar primul şi ultimul segment al poligonului de
control;
d) curba este cuprinsă în întregime în figura convexă determinată de vârfurile poligonului de
control (proprietatea „convex hull”) şi în general are forma poligonului;
e) proiectantul nu trebuie să specifice tangentele la curbă ci numai punctele din plan sau
spaţiu;
f) curbele mai complexe se pot obţine prin alipirea mai multor segmente folosind
continuitatea poziţională (de ordin 0) şi continuitatea tangenţială (de ordin 1).

Dezavantajele rezultă din folosirea polinoamelor Bernstein ca funcţii de amestec:


a) pentru n puncte de control gradul curbei este n  1 , ceea ce implică un timp de execuţie
mare;
b) polinoamele Bernstein sunt diferite de zero pe întreg intervalul de definiţie al curbei
( u  [0,1] ), deci fiecare punct de pe curbă depinde de toate punctele de control, de aceea
deplasarea unui vârf influenţează întreaga curbă (se spune că nu are proprietatea de
control local). Acest efect poate fi observat examinând figura 2.

11
Sisteme de prelucrare grafica Lucrarea 12

4. Curbe B-spline

Curbele B-spline sunt, ca şi curbele Bézier, curbe de aproximare. Spre deosebire de


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

n
p(u )   Pi  Bi, k (u ) , (19)
i 0

unde Pi , i  0, n sunt puncte de control, în total n  1 puncte de control, k este ordinul curbei şi
Bi , k (u ) sunt funcţii de amestec B-spline de grad k  1 şi ordin de continuitate k  2 .
Funcţiile B-spline se definesc recursiv astfel:

1 pentru ui  u  ui 1
Bi ,1 (u)   (20)
0 în rest
u  ui u u
Bi,k (u )  Bi,k1 (u )  i k Bi 1,k 1 (u ) . (21)
ui k 1  ui ui k  ui 1

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

ui  0 pentru i  k ,

ui  i  k  1 pentru k  i  n, (22)
u  n  k  2 pentru i  n,
 i

unde 0ink.

12
Sisteme de prelucrare grafica Lucrarea 12

Deci în cazul curbelor B-spline uniforme Bi , k (u ) de grad k  1 avem n  k  1 valori nodale.


Din relaţiile (22) rezultă că domeniul de definiţie al variabilei parametrice (variabilă nenormată)
este:

0  u  n k  2. (23)

Curbe B-spline cubice uniforme

În cazul curbelor B-spline cubice uniforme avem k  4 ( k  1  3 – gradul curbei) şi


ordinul de continuitate este k  2  2 . Din relaţiile de definiţie a funcţiilor de amestec (relaţiile
(20)) şi (21)) rezultă că pentru k  4 obţinem 4 funcţii B-spline, care vor fi diferite de zero pe 4
intervale. Aceste funcţii vor constitui o bază cu care se construieşte fiecare segment al curbei,
respectiv toată curba.
Pentru o secvenţă de puncte de control Pi , ecuaţia segmentului pi (u ) al unei curbe B-
spline este (ecuaţie vectorială):

3
pi (u )   Pi 3 j Bic3 j (u) , (24)
j 0

unde: - i reprezintă numărul segmentului de curbă, i  3 ;


- j este indexul punctului de control local, adică este indexul pentru segmentul i ;
- u  0,1 în cazul segmentului dat (variabila u este normată).
Funcţiile cubice B-spline Bic3 j se obţin din relaţiile (20) şi (21). Considerăm variabila u
normată pe intervalul de definiţie şi atunci expresiile funcţiilor B-spline cubice sunt:

Bic 3 (u ) 
1
1  u 3 ,
6
1

Bic 2 (u)  3u 3  6u 2  4 ,
6
 u  0,1 , (25)
1

Bic1 (u)   3u 3  3u 2  3u  1 ,
6

1
Bic (u )  u 3 .
6

Reprezentarea grafică a acestor funcţii pe intervalul [0,1] este dată în figura 5.

13
Sisteme de prelucrare grafica Lucrarea 12

0.7
Bic 2 Bic1
0.6

0.5

0.4

0.3

0.2
Bic 3 Bic
0.1

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

Fig. 4.5 Funcţiile de amestec B-spline cubice

În continuare deducem forma geometrică a unui segment de curbă cubică B-spline.


Segmentul de curbă pi (u ) al unei curbe B-spline poate fi scris şi sub forma matricială. Din
relaţia (24) rezultă:

 Pi 3 
P 
 c c c

pi (u )  Bi 3 (u ), Bi  2 (u ), Bi 1 (u ), Bi (u )  
c i 2 
 Pi 1 
(26)
 
 Pi 

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


 Pi 3 
 
1
6
 2 3 2 3 2 3 3  Pi  2 
pi (u )  1-3u  3u -u , 4  6u  3u , 1  3u  3u -3u , u 
 Pi 1 
 
 
 Pi 
  1 3  3 1  Pi 3 
   
 3 2

1  3  6 3 0  Pi  2 
pi (u )  u , u , u, 1  
6  3 0

3 0  Pi 1 
(27)
   
1 4 1 0  Pi 

Deci forma geometrică matricială este:

14
Sisteme de prelucrare grafica Lucrarea 12

pi (u )  U  M S  GS , (28)

în care
1 3  3 1
 0
1 3 6 3
MS    (29)
6  3 0 3 0
 
1 4 1 0

este matricea de bază B-spline şi

GS  Pi  3 Pi  2 Pi 1 Pi  T (30)

reprezintă vectorul condiţiilor geometrice.


O curbă B-spline cubică este compusă din n  2 segmente, notate p3 , p4 , ..., pn ,
controlate de n  1 puncte de control P0 , P1 , ..., Pn ( n  3 ). Fiecare segment al curbei este
definit de 4 puncte de control, iar fiecare punct de control influenţează numai 4 segmente de
curbă. Aceasta este proprietatea de control local al curbelor B-spline.
Un segment de curbă B-spline prezintă continuitate de ordin 0, 1 şi 2. Curba totală, care
este compusă din cele n  2 segmente, are ecuaţia (vezi relaţia (19)):

n
p(u )   Pi Bi,4 (u ) . (31)
i 0
În relaţia anterioară i este numărul unui punct de control, deci i  0, n .
Funcţia B-spline Bi ,4 (u ) este diferită de zero pe 4 subintervale şi are expresia:

 c 1 3
 Bi (u )  6 u , 0  u 1

 
 B c (u  1)  1  3u  13  3u  12  3u  1  1 , 1  u  2
 i 1 6
Bi,4 (u )   (32)

 i 2 6

 B c (u  2)  1 3u  23  6u  2 2  4 ,  2u3

 Bic3 (u  3)  1  u  33 .
1
3u  4
 6

În această relaţie s-a considerat cazul funcţiilor B-spline uniforme şi s-au notat cele patru
intervale ui  u  ui 1 , ui 1  u  ui  2 , ui  2  u  ui  3 , ui  3  u  ui  4 prin 0  u  1 ,
1  u  2 , 2  u  3 , 3  u  4 . Graficul pentru funcţia Bi , 4 este reprezentat în figura 6.

15
Sisteme de prelucrare grafica Lucrarea 12

Bi , 4

2
3
1 Bic1 Bic 2
2
1
3
1
6 Bic Bic 3
0
ui u i 1 ui2 u i 3 ui4 u
0 1 2 3 4
Fig. 4.6 Funcţia B-spline Bi ,4 (u )
Din relaţiile de definiţie (20), (21) şi din relaţiile (32) se observă că, în cazul unor funcţii
B-spline uniforme, fiecare funcţie este o copie translată a unei funcţii de bază. De exemplu:
Bi 1,4 (u )  Bi ,4 (u  1) ,
Bi  2,4 (u )  Bi ,4 (u  2) ,
Bi 3,4 (u )  Bi,4 (u  3) , etc.
În figura 7 este reprezentat un singur segment de curbă B-spline, uniformă, definit de 4
puncte de control şi de 4 funcţii de bază B0,4 (u ) , B1, 4 (u ) , B2, 4 (u ) , B3,4 (u ) .

Fig. 4.7 Segment de curbă B-spline

16
Sisteme de prelucrare grafica Lucrarea 12

În figura 8 este reprezentată o curbă B-spline uniformă, compusă din trei segmente.

Fig. 4.8 Curbă B-spline uniformă compusă din 3 segmente

Se observă că, spre deosebire de curbele Bezier, curbele B-spline unifome nu interpolează
punctele de control de la capete.
În cazul unui segment, avem numai 4 puncte de control P0 , P1 , P2 şi P3 . Numărul de noduri
(valori nodale) este n  k  1  n  5  8 . Reprezentăm aceste 8 noduri şi analizăm intervalele pe
care sunt active funcţiile de bază B0,4 , B1,4 , B2,4 , B3,4 (fig. 13).

B0,4 (u ) B1,4 (u ) B2,4 (u ) B3,4 (u )

0 1 2 3 4 5 6 7
u

Fig. 4.13 Funcţiile de bază B-spline uniforme pentru un segment

În intervalul de definiţie ui , ui 1  (intervalul corespunzător lui 3,4 din fig. 13) al unui segment
de curbă sunt active patru funcţii de bază iar suma lor este egală cu 1, celelalte funcţii nu mai
contribuie la obţinerea segmentului respectiv (fig. 13). Curba B-spline din figura 7 (compusa
dintr-un singur segment p3 ) are expresia:

p(u )  P0 B0 ,4 (u )  P1 B1,4 (u )  P2 B2 ,4 (u )  P3 B3,4 (u ) . (36)

17
Sisteme de prelucrare grafica Lucrarea 12

De asemenea, putem scrie:


3
p3 (u )   Pj Bcj (u)  P0 B0c  P1B1c  P2 B2c  P3B3c  p(u)
j 0
Curba din figura 8, dată prin 6 puncte de control ( n  5 ), este compusă din 3 segmente şi
are ecuaţia:

5
p(u )   Pi Bi,4 (u ) . (37)
i 0

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


p3 este determinat de punctele P0 , P1, P2 , P3 şi funcţiile B0c , B1c , B2c , B3c ;
p4 este determinat de punctele P1, P2 , P3 , P4 şi funcţiile B1c , B2c , B3c , B4c ;
p5 este determinat de punctele P2 , P3 , P4 , P5 şi funcţiile B2c , B3c , B4c , B5c .
Faptul că segmentele de curbă adiacente au trei puncte de control comune asigură continuitatea
de ordin 0,1 şi 2. Funcţiile de amestec B-spline sunt diferite de zero pe 4 intervale succesive ui ,
ui 1 , ui  2 , ui  3 .
Deoarece n  5 , numărul valorilor nodale este n  k  1  n  5  10 . Funcţiile de bază B-
spline uniforme pentru o curbă compusă din trei segmente sunt reprezentate în figura 14.

B0,4 (u ) B1,4 (u ) B2,4 (u ) B3,4 (u ) B4,4 (u ) B5,4 (u )

0 1 2 3 4 5 6 7 8 9
u
Fig. 4.14 Funcţiile de bază B-spline uniforme pentru o curbă formată din 3 segmente

Din cele prezentate anterior deducem că punctele nodale ui sunt puncte de adiacenţă între
funcţiile de bază Bi ,4 . Ele specifică valoarea parametrului u de la care o funcţie devine inactivă
şi alta activă. Pentru un segment se folosesc 4 funcţii de bază, fiecare funcţie fiind activă pe 4

18
Sisteme de prelucrare grafica Lucrarea 12

intervale ale parametrului u . Un segment este definit peste 8 noduri. Pentru o curbă ce conţine
n  2 segmente, avem n  5 noduri.
Principalul dezavantaj al curbelor B-spline uniforme este că nu interpolează punctele de
control de la capete.

Curbe B-spline cubice neuniforme

Din definiţie rezultă că forma funcţiilor de bază Bi , k este determinată numai de spaţiul
relativ între noduri u0 , u1, , un  k  . Scalarea sau translaţia vectorului nodurilor nu are efect
asupra formei funcţiilor de bază. În general, vectorul valorilor nodale poate fi: uniform, uniform
deschis sau neuniform. Vectorul uniform este vectorul pentru care ui 1  ui  const , de exemplu
{0, 1, 2, 3, 4, 5, 6, 7} (k  4, n  3) . Vectorul uniform deschis este vectorul uniform care are k
valori egale la început şi la sfârşit, de exemplu {0, 0, 0, 0, 1, 2, 3, 3, 3, 3} (k  4, n  5) . Vectorul
neuniform este vectorul pentru care se impune numai cerinţa ui  ui 1 .
O curbă B-spline neuniformă este o curbă în care intervalele parametrice (ale lui u ) între
două noduri succesive nu sunt neapărat egale. Acest lucru înseamnă că funcţiile de amestec nu
mai sunt translate una faţă de cealaltă, ci variază de la un interval la altul. Forma obişnuită a
curbelor B-spline neuniforme este aceea în care unele intervale între noduri sunt nule, adică
nodurile sunt multiple. Faptul acesta permite interpolarea tuturor punctelor de control (capete sau
intermediare).
Curbele din figurile 7 şi 8 sunt curbe B-spline uniforme, deoarece nodurile sunt dispuse
uniform pe axa parametrului u , valorile lor fiind: {0, 1, 2, 3, 4, 5, 6, 7} pentru un segment şi {0,
1, 2, 3, 4, 5, 6,7, 8, 9} pentru o curbă formată din trei segmente. Putem modifica poziţia nodurilor
pe axa lui u , astfel încât să interpolăm, de exemplu, punctele de control de la capete.
Interpolarea este asigurată prin multiplicitatea nodurilor. Pentru curba din figura 15a valorile
nodale sunt {0, 0, 0, 0, 1, 1, 1, 1}, iar pentru cea din figura 15b valorile nodale sunt {0, 0, 0, 0, 1,
2, 3, 3, 3, 3}.

a) b)

Fig. 4.15 Curbe B-spline neuniforme: a) cu 4 puncte de control; b) cu 6 puncte de control

19
Sisteme de prelucrare grafica Lucrarea 12

Curba din fig. 15a este de fapt o curbă Bezier. În cazul curbei din figura 15a, în care avem 4
puncte de control, reprezentarea funcţiilor de bază pentru acest segment este dată în figura 16.
Deci curbele Bezier sunt cazuri particulare ale curbelor B-spline.

Figura 4.16.

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

Figura 4.17
Observaţie. Dacă valorile nodale ui , ui 1 , ui  2 , ui  3 sunt identice curba trece prin punctul i
(pentru curbe de grad 3). În general, pentru o curbă de grad m , dacă valorile nodale ui , ui 1 ,
ui  2 , ..., ui  m sunt identice, curba trece prin punctul i .

Proprietăţi ale curbelor B-spline

1. Puncte de control multiple.

20
Sisteme de prelucrare grafica Lucrarea 12

O curbă B-spline de grad m trece întotdeauna printr-un punct de control de multiplicitate


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

1.1.6 Extinderea controlului parametric: curbele NURBS

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

Pi  wi xi , wi yi , wi zi , wi  (38)

O curbă B-spline raţională este definită prin ecuaţia vectorială:

n
 Pi wi Bi,k (u) n
p(u )  i 0
n
  Pi Ri,k (u ) , (39)
 wi Bi,k (u) i 0
i 0
unde
wi Bi,k (u )
Ri,k  n
. (40)
 wi Bi,k (u)
i 0

21
Sisteme de prelucrare grafica Lucrarea 12

n
Se observă că pentru wi  1 , deoarece  Bi,k (u)  1 , se obţine o curbă B-spline neraţională.
i 0

Aplicaţii
1. Realizaţi o aplicaţie OpenGL care să traseze curba Coons din figura 1.

Indicatii:
- trasarea curbei va fi realizata prin generarea coordonatelor unui numar LOD de puncte de
pe curba si unirea acestora prin linii
unsigned int LOD=20; // nivelul de detaliu

- definiti conditile geometrice ale curbei:

float Geometry[4][3] = {
{ 10,10,0 }, // P0
{-10,5,-2 }, // P1
{ 5,-5,0 }, // Tangenta in P0
{ 5,10,0 } // Tangenta in P1
};

- generati un VBO si un VAO pe care il desenati folosind functia

glDrawArrays(GLenum mode, GLint first, GLsizei count);

Generarea vectorului de puncte ce apartin curbei si care vor fi adaugate in VBO:


for(int i=0;i<LOD;i++) {

float u = (float)i/(LOD-1);

// calcularea functiilor de amestec


float f0 = ...;
float f1 = ...;
float f2 = ...;
float f3 = ...;

// calcularea coordonatelor x,y,z ale punctului curent de pe curba


float x = ...
float y = ...
float z = ...

// specificarea punctului pe pozitia i in VBO


points[i*3] = x;
points[i*3 + 1] = y;
points[i*3 + 2] = z;
}

22
Sisteme de prelucrare grafica Lucrarea 12

3. Să se traseze curbele din figura următoare (rotirea primului vector cu 45).

Toţi vectorii tangenţi au aceeaşi mărime, dar direcţia vectorului tangent din primul punct
variază (este rotită cu câte 450)

4. Modificati Aplicatia 1 pentru a desena curbe Bezier cubice si desenati curba din figura 3.1.

5. Utilizati exemplele de la adresa [Link] si


interactionati cu punctele de control, respectiv valorile nodale pentru a interpola unul sau mai
multe puncte de control ale curbelor B-Spline uniforme si neuniforme.

23

S-ar putea să vă placă și