SPG Lab13
SPG Lab13
P1u
P0u P1
P0
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
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
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
p (u ) FH GH (13)
3
Sisteme de prelucrare grafica Lucrarea 12
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 H1 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
P0
P1 Q1
Q1
Q1u
P0u
P1u Q1u
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
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
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 !
7
Sisteme de prelucrare grafica Lucrarea 12
n
f i (u ) 1 . (4)
i 0
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).
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 .
8
Sisteme de prelucrare grafica Lucrarea 12
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:
FB (u ) 1 u 3 3u1 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
p(u ) U M B G B , (11)
în care
GB P0 P1 P2 P3 T (12)
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.
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
11
Sisteme de prelucrare grafica Lucrarea 12
4. Curbe B-spline
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,k1 (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 0ink.
12
Sisteme de prelucrare grafica Lucrarea 12
0 u n k 2. (23)
3
pi (u ) Pi 3 j Bic3 j (u) , (24)
j 0
Bic 3 (u )
1
1 u 3 ,
6
1
Bic 2 (u) 3u 3 6u 2 4 ,
6
u 0,1 , (25)
1
Bic1 (u) 3u 3 3u 2 3u 1 ,
6
1
Bic (u ) u 3 .
6
13
Sisteme de prelucrare grafica Lucrarea 12
0.7
Bic 2 Bic1
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
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
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
GS Pi 3 Pi 2 Pi 1 Pi T (30)
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 3u 13 3u 12 3u 1 1 , 1 u 2
i 1 6
Bi,4 (u ) (32)
i 2 6
B c (u 2) 1 3u 23 6u 2 2 4 , 2u3
Bic3 (u 3) 1 u 33 .
1
3u 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 Bic1 Bic 2
2
1
3
1
6 Bic Bic 3
0
ui u i 1 ui2 u i 3 ui4 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 ) .
16
Sisteme de prelucrare grafica Lucrarea 12
În figura 8 este reprezentată o curbă B-spline uniformă, compusă din trei 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).
0 1 2 3 4 5 6 7
u
Î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:
17
Sisteme de prelucrare grafica Lucrarea 12
5
p(u ) Pi Bi,4 (u ) . (37)
i 0
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.
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)
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 .
20
Sisteme de prelucrare grafica Lucrarea 12
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)
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
float Geometry[4][3] = {
{ 10,10,0 }, // P0
{-10,5,-2 }, // P1
{ 5,-5,0 }, // Tangenta in P0
{ 5,10,0 } // Tangenta in P1
};
float u = (float)i/(LOD-1);
22
Sisteme de prelucrare grafica Lucrarea 12
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.
23