65
CURS 3 – CURS 4 Reprezentarea prin suprafeţe de frontieră

CURS3_Curbe Si Supf Parametrice2

Embed Size (px)

DESCRIPTION

CURS3_Curbe Si Supf Parametrice, opengl

Citation preview

Page 1: CURS3_Curbe Si Supf Parametrice2

CURS 3 – CURS 4

Reprezentarea prin suprafeţe de frontieră

Page 2: CURS3_Curbe Si Supf Parametrice2

A. Prin suprafeţe de frontieră

• Reprezentarea poligonală

• Reprezentarea liniilor şi a suprafeţelor curbe folosind ecuaţii parametrice

• Reprezentarea obiectelor cu simetrie de rotaţie sau de translaţie prin baleiere spaţială

• Reprezentarea suprafeţelor cvadrice

• Reprezentarea suprafeţelor utilizând funcţii de douã variabile

Page 3: CURS3_Curbe Si Supf Parametrice2

Reprezentarea liniilor şi a suprafeţelor curbe folosind ecuaţii parametrice

• O curbă tridimensională poate fi reprezentată prin perechea de funcţii:

y = f (x)z = g (x)

• Dezavantajele metodei

Ecuaţiile clasice ale unei curbe 3D

Page 4: CURS3_Curbe Si Supf Parametrice2

Ecuaţiile parametrice

• P (u) = ( x(u), y(u), z(u) )unde u ia valori în domeniul [0 ÷1]

Exemplu (ecuatia parametrica a cercului):

unde u ia valori de la 0 la 1.

),2cos()( urux π⋅=

),2sin()( uruy π⋅=z(u) = 0

Page 5: CURS3_Curbe Si Supf Parametrice2

Continuitatea în punctele de contact

Continuitate

geometrică

de ordinul 0

G0

Continuitate

geometrică

de ordinul 1

G1

V1=k.V2

Pantele vectorlortangenţi sunt egale

Continuitate

parametrică

de ordinul 1

C1

V1=V2

Vectori tangenţi egali

Derivate de ordinul I egale

Continuitate

parametrică

de ordinul 2

C2

Derivate de ordinul II egale

Page 6: CURS3_Curbe Si Supf Parametrice2

Ecuaţiile parametrice pentrusuprafeţe

• P(u, v)=(x(u, v), y(u, v), z(u,v))• Exemplu (ecuaţia parametrică a sferei):

),2cos()sin(),( vurvux ππ ⋅⋅=

),2sin()sin(),( vurvuy ππ ⋅⋅=

),cos(),( urvuz π⋅=

v

u

xy

z

Page 7: CURS3_Curbe Si Supf Parametrice2

• s-au interpolat punctele de control

• ecuaţiile aproximează suprafeţele sau curbele

Page 8: CURS3_Curbe Si Supf Parametrice2

Curbe parametrice polinomiale

x = x(u)P(u) y = y(u)

z = z(u)

Exemplu: curbe parametrice cubice (grad 3 în u)

zzzz

yyyy

xxxx

ducubuauz

ducubuauyducubuaux

+⋅+⋅+⋅=

+⋅+⋅+⋅=

+⋅+⋅+⋅=

23

23

23

)(

)()(

unde 0 ≤ u ≤ 1

Page 9: CURS3_Curbe Si Supf Parametrice2

Forma matriceală a ecuaţiilor curbelor parametrice cubice

P(u) = [x(u) y(u) z(u)] = U . C

U = [u3 u2 u 1]

=

zyx

zyx

zyx

zyx

dddcccbbbaaa

C

Page 10: CURS3_Curbe Si Supf Parametrice2

continuareC = M . G

=

44434241

34333231

24232221

14131211

mmmmmmmmmmmmmmmm

M

[ ]zyx GGGG=

C = M . [Gx Gy Gz]

Gx, Gy, Gz - vectori de geometrieG - matrice de geometrie

x(u) = U . M . Gx

y(u) = U . M . Gy

z(u) = U . M . Gz

Page 11: CURS3_Curbe Si Supf Parametrice2

xx

xx

gmummumugmummumu

gmummumugmummumuux

44434242

143

34333232

133

24232222

123

14131212

113

)()(

)()()(

+++++++

++++++++=

Polinoamele de amestec: B = U . M

zz

zz

gmummumugmummumugmummumugmummumuuz

44434242

143

34333232

133

24232222

123

14131212

113

)()()()()(

+++++++

++++++++=

yy

yy

gmummumugmummumu

gmummumugmummumuuy

44434242

143

34333232

133

24232222

123

14131212

113

)()(

)()()(

+++++++

++++++++=

Page 12: CURS3_Curbe Si Supf Parametrice2

Metode de reprezentare a curbelor• Reprezentarea curbelor prin segmente

de dreaptă

• Metodă recursivă de reprezentare a curbelor prin înjumătăţirea intervalelorde reprezentat

e

Page 13: CURS3_Curbe Si Supf Parametrice2

Reprezentarea curbelor prin segmente de dreaptă

typedef float VECT_C [4];void moveto_3D (float, float, float);// poziţionează punctul de început al unui segment de dreaptă

void lineto_3D (float, float, float);// desenează un segment de dreaptă între punctul anterior şi cel curent

/*procedura de desenare a unei curbe definite parametricprin matricea C şi care este aproximată prin n segmente de dreaptă*/

void traseaza_curba_3D (VECT_C cx, VECT_C cy, VECT_C cz, int n){int n;double u2, u3, u=0;double pas = 1/(double)n;moveto_3D (cx[3], cy[3], cz[3]); //la inceputul curbeifor (i=1; i<=n; i++)

{u += pas; u2 = u*u; u3 = u2*u;x = cx[0]*u3 + cx[1]*u2 + cx[2]*u + cx[3];y = cy[0]*u3 + cy[1]*u2 + cy[2]*u + cy[3];z = cz[0]*u3 + cz[1]*u2 + cz[2]*u + cz[3];lineto_3D (x, y, z);}

}

Page 14: CURS3_Curbe Si Supf Parametrice2

Metodă recursivă de reprezentare a curbelorprin înjumătăţirea intervalelor de reprezentat

procedura Deseneaza_Curba ( curba, e)dacă test (curba, e) atunci

desenează_dreapta (curba)

altfeldivide_curba (curba, curba_stanga, curba_dreapta)Deseneaza_Curba (curba_stanga, e)Deseneaza_Curba (curba_dreapta, e)

Page 15: CURS3_Curbe Si Supf Parametrice2

Familii de curbe

P(u) = [x(u) y(u) z(u)] = U . C= U . M . G

M - defineşte familia de curbeG - defineşte geometria curbei în cadrul

aceleiaşi familii

HermiteCurbe Bézier

spline

Page 16: CURS3_Curbe Si Supf Parametrice2

Curbe cubice Hermite

=

x

x

x

x

Hx

RRPP

G

4

1

4

1

HxH

HxHxxxx

GMuuu

GMUducubuaux

⋅⋅=

=⋅⋅=+⋅+⋅+⋅=

]1[

)(23

23

HxHx

HxHx

GMPxGMPx

⋅⋅==⋅⋅==

]1111[)1(]1000[)0(

4

1

HxH GMuuux ⋅⋅= ]0123[)(' 2

HxHx

HxHx

GMRxGMRx⋅⋅==⋅⋅==

]0123[)1(']0100[)0('

4

1

HxH

x

x

x

x

Hx GM

RRPP

G ⋅⋅

=

=

0123010011111000

4

1

4

1

Page 17: CURS3_Curbe Si Supf Parametrice2

−−−

=

=

000101001233

1122

0123010011111000 1

HM

[ ]

423

123

423

123

)()2(

)32()132(

)()()()(

RuuRuuu

PuuPuu

GBGMUuzuyuxuP HHHH

−++−+

++−++−=

=⋅=⋅⋅==

Curbe cubice Hermite

Page 18: CURS3_Curbe Si Supf Parametrice2

Continuitatea în punctele de contact

7

4

7

4

4

1

4

1

;

RkRPP

RRPPContinuitate geometrică de ordinul I – G1

P7P4

P1

Continuitate parametrică de ordinul I – C1

7

4

7

4

4

1

4

1

;

RRPP

RRPP

R1

R4kR4

R7

Page 19: CURS3_Curbe Si Supf Parametrice2

Curbe Bézier

pk = (xk, yk, zk)k=0, 1, 2, ...n

∑=

⋅=n

knkk uBpuP

0, )()(

knknk uuknCuB −−⋅⋅= )1(),()(,

)!(!!),(

knknknC−⋅

=

∑=

⋅=n

knkk uBxux

0, )()(

∑=

⋅=n

knkk uByuy

0, )()(

∑=

⋅=n

knkk uBzuz

0, )()(

P(u)

Page 20: CURS3_Curbe Si Supf Parametrice2

221

20

22,2

2,1

22,0

)1(2)1()(

)(

)1(2)()1()(

upuupupuP

uuB

uuuBuuB

⋅+−⋅⋅⋅+−⋅=

=

−⋅⋅=

−=

221

20

221

20

221

20

)1(2)1()(

)1(2)1()(

)1(2)1()(

uzuuzuzuz

uyuuyuyuy

uxuuxuxux

⋅+−⋅⋅⋅+−⋅=

⋅+−⋅⋅⋅+−⋅=

⋅+−⋅⋅⋅+−⋅=

Pentru n = 2, deci pentru 3 puncte de control.

şi explicit

Exemplu

33

22

12

03 )1(3)1(3)1()( PuPuuPuuPuuP ⋅+⋅−⋅⋅+⋅−⋅⋅+⋅−=

Pentru n = 3, deci pentru 4 puncte de control.

Page 21: CURS3_Curbe Si Supf Parametrice2

Funcţiile de amestec pentru o curbă Bezier cu 4 puncte de control (n=3)

0 00 01 1

1 11 1

1 1u uu u

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

33

22

12

03 )1(3)1(3)1()( PuPuuPuuPuuP ⋅+⋅−⋅⋅+⋅−⋅⋅+⋅−=

Page 22: CURS3_Curbe Si Supf Parametrice2

Curbe cubice Bezier

33,3

23,2

23,1

33,0

)(

)1(3)(

)1(3)(

)1()(

uuB

uuuB

uuuB

uuB

=

−⋅⋅=

−⋅⋅=

−=

33

22

12

03 )1(3)1(3)1()( PuPuuPuuPuuP ⋅+⋅−⋅⋅+⋅−⋅⋅+⋅−=

[ ]

−−

−−

•=

3

2

1

0

23

0001003303631331

1)(

PPPP

uuuuP

Page 23: CURS3_Curbe Si Supf Parametrice2

1. Curbele Bézier trec prin punctele de control extreme care definesccurba (p0, p3)

03,00)( pBpuP =⋅= în u=0

3)( puP = în u=1

33

22

12

03 )1(3)1(3)1()( PuPuuPuuPuuP ⋅+⋅−⋅⋅+⋅−⋅⋅+⋅−=

Page 24: CURS3_Curbe Si Supf Parametrice2

2. Primele şi ultimele două puncte de control aparţin tangentelor în extremităţi

P0P0

P2

P2P3

P3

P1

P1

P0P2

P1

P0

P2

P3

P1

Page 25: CURS3_Curbe Si Supf Parametrice2

P0

P2

P3

P1

P0

P2

P3

P1

P0P2

P1

P0

P2

P3

P1

3. Curbele Bézier se aşează în interiorul conturului poligonal convex definit de punctele de control

Page 26: CURS3_Curbe Si Supf Parametrice2

4. Curbe închisePunctele extreme -P0 şi P3- au aceleaşi coordonate

P0, P3

P1

P2

Page 27: CURS3_Curbe Si Supf Parametrice2

5. Curba este atrasă spre zona cu mai multe puncte de control

P0

P1, P2

P3

P4

Page 28: CURS3_Curbe Si Supf Parametrice2

Caracteristicile curbelor Bezier

1. Curbele Bézier trec prin punctele de control extreme care definesc curba (p0, p3)

2. Primele şi ultimele două puncte de control aparţin tangentelor în extremităţi

3. Curbele Bézier se aşează în interiorul conturuluipoligonal convex definit de punctele de control

4. Curbe închise: Punctele extreme -P0 şi P3- au aceleaşi coordonate

5. Un punct în vecinătatea căruia se definesc mai multepuncte de control va “atrage” curba spre el.

Page 29: CURS3_Curbe Si Supf Parametrice2

uu

kknBB

uu

kknB

uu

uu

knCknC

BB

uuknCB

uuknCB

nknk

nk

kn

kn

k

k

nknk

knknk

knknk

−⋅

+−⋅=

−⋅

+−⋅=

=−

−⋅⋅

−⋅=

−⋅⋅=

−⋅⋅−=

+−

−−

+−−−

11

11

)1()1(

)1,(),(

)1(),(

)1()1,(

,1,

,1

11,1,

,

11,1

Reprezentarea curbelor Bezier

Page 30: CURS3_Curbe Si Supf Parametrice2

// procedura de determinare a coordonatelor x şi y pentru o curbă Bézier, // în punctul de parametru uvoid Bezier (double u, int *x, int *y){double B;int k;if (u==0) { *x= P[0].x; *y= P[0].y; return; }

//curba Bézier trece prin punctele extremeif (u==1) { *x= P[n].x; *y= P[n].y; return; }B = pow (1-u, n);*x= B*P[0].x; *y=B*P[0].y; //primul termen se calculează nerecursiv

//relaţia recursivă de determinare a lui Bfor (k=1; k<=n; k++){B =B*(n-k+1) * u / k / (1-u);

*x = *x + B*P[k].x;*y = *y + B*P[k].y;}

}

Reprezentarea curbelor Bezier

Page 31: CURS3_Curbe Si Supf Parametrice2

typedef struct {int x, y;} PUNCT;PUNCT P[20];int n;// procedura de desenare a unei curbe definite parametric prin funcţia Bezier, pe//porţiunea definită de u=umin şi u=umax şi cu o variaţie a lui u definită de pasvoid traseaza_curba_bidim (double umin, double umax, double pas,

void (*Bezier)(double, int *x, int *y)){double u;int incep_x, incep_y, x, y;(* Bezier) (umin, &incep_x, &incep_y);moveto(incep_x, incep_y);for(u=umin+pas; u<umax; u+=pas){(*Bezier)(u, &x, &y);if ( incep_x != x || incep_y != y)

{ lineto(x, y);incep_x=x;incep_y=y; }

}(*Bezier) (umax, &x, &y);// coordonatele curbei corespunzătoare lui umax

if (incep_x!=x || incep_y!=y)lineto(x, y);

}

Reprezentarea curbelor Bezier

Page 32: CURS3_Curbe Si Supf Parametrice2

Curbe spline∑=

⋅=n

k

tkk uNpuP0

, )()(

Funcţiile de amestec Nk,t sunt polinoame de gradul (t-1), independent de numărul punctelor de control.

u variază în intervalul: 0 ÷ (n-t+2)

Numărul total al segmentelor de curbă: (n-t+2). Fiecare din aceste curbe va fi controlată (ca şi formă) de t puncte de

control Numărul punctelor de control: (n+1).

<≤

= +

altfelrur

uN kkk ,0

,1)( 1

1,

)()()( 1,11

1,1

, uNrr

uruN

rrru

uN tkktk

tktk

ktk

ktk −+

++

+−

−+⋅

−−

+⋅−

−=

rj - valori nodale, punctele corespunzătoare lor pe o curbă B-spline sunt numite noduri

Page 33: CURS3_Curbe Si Supf Parametrice2

Exemplu: n = 6 şi t = 4

n + t = 10numărul subintervalelor0, 0, 0, 0, 1, 2, 3, 4, 4, 4, 4valorile nodale

5numărul nodurilor

[0, 4]intervalul de variaţie al lui u

n - t + 2 = 4numărul segmentelor de curbă

t -1 = 3gradul polinoamelor de amestec

n + 1 = 7numărul punctelor de control:

Page 34: CURS3_Curbe Si Supf Parametrice2

Valorile nodale pentru curbele B-spline uniforme

• pentru valori ale lui j în domeniul 0 ÷ (n+t)

>>++−≤≤+−<

=njtnpentrutn

njtpentrutjtjpentru

rj

21

0

Page 35: CURS3_Curbe Si Supf Parametrice2

Exemplu pentru (t = 3) şi (n = 4)

5 puncte de control: P0, P1, P2, P3, P4

grad în u: 2

j∈[0,7], u∈[0,3]

r0 = 0; r1 = 0; r2 = 0; r3 = 1; r4 = 2; r5 = 3; r6 = 3; r7 = 3;

3 segmentelor de curbă: Q1, Q2, Q3.

Curba Q1 va fi controlată de punctele P0, P1, P2.

Curba Q2 va fi controlată de punctele P1, P2, P3.

Curba Q3 va fi controlată de punctele P2, P3, P4.

Page 36: CURS3_Curbe Si Supf Parametrice2

Schema de calcul recursiv a polinoamelor (pentru exemplu (t = 3) şi (n = 4))

N0,1 N0,2 N0,3 N0,4

N1,1 N1,2 N1,3 N1,4

N2,1 N2,2 N2,3 N2,4

N3,1 N3,2 N3,3 N3,4

N4,1 N4,2 N4,3 N4,4

N5,1 N5,2 N5,3 N5,4

<≤

= +

altfelrur

uN kkk ,0

,1)( 1

1, )()()( 1,11

1,1

, uNrr

uruN

rrru

uN tkktk

tktk

ktk

ktk −+

++

+−

−+⋅

−−

+⋅−

−=

Page 37: CURS3_Curbe Si Supf Parametrice2

Calculul polinoamelor (pentru exemplu)

Polinoamele de grad 0:

=

=

=

=

=

=

=

altfelu

uN

altfelu

uN

altfelu

uN

altfelu

uN

altfelu

uN

0)3,2[1

)(

0)2,1[1

)(

0)1,0[1

)(

001

)(

001

)(

1,4

1,3

1,2

1,1

1,0

)()2()()()(

)()3()()1()()()(

)()2()()()()(

)()1()()()(

0)()()(

1,41,556

61,4

45

42,4

1,41,31,445

51,3

34

32,3

1,31,21,334

41,2

23

22,2

1,21,223

31,1

12

12,1

1,112

21,0

01

02,0

uNuuNrrur

uNrrru

uN

uNuuNuuNrrur

uNrrru

uN

uNuuNuuNrrur

uNrrru

uN

uNuuNrrur

uNrrru

uN

uNrrur

uNrrru

uN

⋅−=⋅−−

+⋅−−

=

⋅−+⋅−=⋅−−

+⋅−−

=

⋅−+⋅=⋅−−

+⋅−−

=

⋅−=⋅−−

+⋅−−

=

=⋅−−

+⋅−−

=

Polinoamele de grad 1:

<≤

= +

altfelrur

uN kkk ,0

,1)( 1

1, )()()( 1,11

1,1

, uNrr

uruN

rrru

uN tkktk

tktk

ktk

ktk −+

++

+−

−+⋅

−−

+⋅−

−=

Page 38: CURS3_Curbe Si Supf Parametrice2

Polinoamele de grad 2:

)()3(5,0

)()362(5,0

)(5,0)()()(

0)2,1[)2(5,0)1,0[)34(5,0

)(

)()2(5,0

)34(5,0)()()(

0)1,0[)1(

)(

)()1()()()(

1,42

1,32

1,22

2,335

52,2

24

23,2

23,1

1,32

1,22,224

42,1

13

13,1

2

3,0

1,22

2,113

32,0

02

03,0

uNu

uNuu

uNuuNrruruN

rrruuN

altfeluuuuu

uN

uNu

NuuuNrruruN

rrruuN

altfeluu

uN

uNuuNrruruN

rrruuN

⋅−⋅

+⋅−+−⋅+

+⋅⋅=⋅−−

+⋅−−

=

∈−⋅∈−⋅⋅

=

⋅−⋅+

+⋅−⋅⋅=⋅−−

+⋅−−

=

∈−

=

⋅−=⋅−−

+⋅−−

=

∈−

=

⋅−=⋅−−

+⋅−−

=

∈−+−⋅∈−⋅

=

⋅−+−⋅+

+⋅−⋅=⋅−−

+⋅−−

=

∈−⋅∈−+−⋅∈⋅

=

altfeluu

uN

uNuuNrruruN

rrruuN

altfeluuuuu

uN

uNuu

uNuuNrruruN

rrruuN

altfeluuuuuuu

uN

0)3,2[)2(

)(

)()2()()()(

0)3,2[)15143(5,0)2,1[)1(5,0

)(

)()15143(5,0

)()1(5,0)()()(

0)3,2[)3(5,0)2,1[)362(5,0)1,0[5,0

)(

2

3,4

1,42

2,557

72,4

46

43,4

2

2

3,3

1,42

1,32

2,446

62,3

35

33,3

2

2

2

3,2

<≤

= +

altfelrur

uN kkk ,0

,1)( 1

1, )()()( 1,11

1,1

, uNrr

uruN

rrru

uN tkktk

tktk

ktk

ktk −+

++

+−

−+⋅

−−

+⋅−

−=

Page 39: CURS3_Curbe Si Supf Parametrice2

Funcţiile de amestec pentru exemplu (o curbã B-spline cu 5 puncte de control (n=4) şi grad 2 (t=3) )

0

1

1 2 3 u

N4,3(u)

0 1

1

2 3 u

N0,3 (u)

0

1

1 2 3 u

N1,3(u)

0

1

1 2 3 u

N3,3(u)

0

1

1 2 3 u

N2,3(u)

Page 40: CURS3_Curbe Si Supf Parametrice2

Segmentele de curbă pentru exemplu

P2P3P4

P1P2P3

P0P1P2

Punctele care controlează forma curbei

N2,3N3,3N4,3

N1,3N2,3N3,3

N0,3N1,3N2,3

Polinoamele care controlează forma curbei

Q3Q2Q1Curba

2 31 20 1u

Page 41: CURS3_Curbe Si Supf Parametrice2

Curbele spline trec prin punctele extreme

∈∀===∈∀===

]3,0[,0)0(1)0(,1]4,1[,0)0(1)0(,0

3,3,4

3,3,0

iNsiNuiNsiNu

i

i

Modificarea coordonatele punctelor extreme va aveainfluenţă doar pentru u∈[0,1) respectiv pentru u∈(2,3]

Deoarece coordonatele punctelor extreme intervin doar în calitate de coeficienţiai funcţiilor de amestec N0,3 şi N4,3

Page 42: CURS3_Curbe Si Supf Parametrice2

Caracteristicile curbelor splineNumărul punctelor de control nu modifică gradulpolinoamelor de amestec.În noduri (între segmentele de curbă) există continuitate de ordinul 2.Se poate creşte numărul punctelor de control pentru a controla forma curbei.Curbele spline trec prin punctele extreme.Modificarea coordonatelor punctelor extreme va aveainfluenţă doar pentru u∈[0,1) respectiv pentru u∈(2,3].Specificarea mai multor puncte de control în poziţii apropiate va conduce la “atragerea” curbei spre poziţia respectivă . Pentru obţinerea unei curbe închise trebuie să se specifice primul şi ultimul punct de control având aceleaşi coordonate. Curbele spline se aşează în interiorul poligonului convexdefinit de punctele de control.

Page 43: CURS3_Curbe Si Supf Parametrice2

Curbele cubice B-spline• P0, P1 , ... , Pn, n ≥ 3

• n-2 (n-4+2) segmente de curbă polinomiale cubice: Q3, Q4, ... , Qn

• Curba Qi: u variază în intervalul ri ≤ u ≤ ri+1

unde i poate lua valori în intervalul 3 ≤ i ≤ n

• Nodurile sunt definite de parametrul ri, i ≥ 4 şi suntpunctele de contact între curbele Qi-1 şi Qi

• Numărul total de noduri: n-1 ((n-t+2)-1)

• Fiecare segment de curbă (Qi) este definit de 4(t)puncte de control

• Qi este definită de punctele de control Pi-3, Pi-2 , Pi-1 , Pi

Page 44: CURS3_Curbe Si Supf Parametrice2

Vectorul de geometrie pentru segmentul de curbă Qi

=−

i

i

i

i

Bsi

PPPP

G1

2

3

3≤ i ≤ n

rn=n-3, rn+1=n-2

u [n-3,n-2]

Pn-3,Pn-2,Pn-1,Pn

Qn

ri=i-3, ri+1=i-2

u [i-3, i-2]

Pi-3,Pi-2,Pi-1,Pi

Qi

r4=1, r5=2

u [1, 2]

P1,P2,P3,P4

Q4

r3=0, r4=1

u [0, 1]

P0,P1,P2,P3

Q3

Page 45: CURS3_Curbe Si Supf Parametrice2

Ecuaţia matriceală pentru un segment de curbă cubică B-spline

iBsBsii GMUuQ ⋅⋅=)(

[ ]

−−

−−

⋅⋅−−−=−

i

i

i

i

iiii

PPPP

rururuuQ1

2

3

23

0141030303631331

611)()()()(

ui ≤ u ≤ ui+1unde

Page 46: CURS3_Curbe Si Supf Parametrice2

Curbele Beta-spline

• Parametrii beta-1 şi beta-2

• Cei doi parametrii sunt folosiţi pentru a ajusta forma curbei relativ la apropierea sa faţă de poligonul convex definit de punctele de control.

• Pentru anumite valori ale parametrilor beta-1 şi beta-2, curbele Beta-spline se reduc la curbele B-spline.

Page 47: CURS3_Curbe Si Supf Parametrice2

Conversia între reprezentările curbelor

SSBB GMUGMU ⋅⋅=⋅⋅

SSBB GMGM ⋅=⋅

SBSSSBB GMGMMG ⋅=⋅= −,

1

SB GG ⋅

⋅=

1410042002400141

61

BS GG ⋅

−−

−−

=

6720021001200276

Page 48: CURS3_Curbe Si Supf Parametrice2

Suprafeţe parametrice bicubice

• curbă parametrică: P(u) = U. M. G • P(s) = S. M. G.

⋅⋅⋅⋅

(u)G(u)G(u)G(u)G

M S = G(u) M S = u) P(s,

4

3

2

1

Gi(u) = U. M. Gi unde i = 1, 2, 3, 4

=

4

3

2

1

i

i

i

i

i

gggg

G puncte de control

Page 49: CURS3_Curbe Si Supf Parametrice2

Gi(u) = GiT. MT . U T =[ gi1 gi2 gi3 gi4] . MT . U T

UM M S = u) P(s, TT

44434241

34333231

24232221

14131211

⋅⋅

⋅⋅

gggggggggggggggg

UMM S = u) P(s, TT ⋅⋅⋅⋅ G cu 0 ≤ s, u ≤1

UM G M S = u) z(s,

UM G M S = u) y(s,

UM G M S = u) x(s,

TTz

TTy

TTx

⋅⋅⋅⋅

⋅⋅⋅⋅

⋅⋅⋅⋅

Page 50: CURS3_Curbe Si Supf Parametrice2

Suprafeţe Hermite bicubiceGH = ?

HxH GMSuPx ⋅⋅=)(

x

⋅⋅⋅⋅

(u)R(u)R(u)P(u)P

M S = (u)G M S = u) Px(s,

4

1

4

1

HHxH

s

u

u=0.0

u=0.2

u=0.4

u = 0 .6

u=0.8

u=1

P4(u)P1(u)

Page 51: CURS3_Curbe Si Supf Parametrice2

x

Hx

gggg

MUuP

⋅⋅=

14

13

12

11

1 )(

x

Hx

gggg

MUuP

⋅⋅=

24

23

22

21

4 )(

x

Hx

gggg

MUuR

⋅⋅=

34

33

32

31

1 )(

x

Hx

gggg

MUuR

⋅⋅=

44

43

42

41

4 )(

[ ] THxH GMUuRuRuPuP ⋅⋅=)()()()( 4141

=

44434241

34333231

24232221

14131211

gggggggggggggggg

GHx

Page 52: CURS3_Curbe Si Supf Parametrice2

TTHHx UMG

uRuRuPuP

⋅⋅=

)()()()(

4

1

4

1

TxH UG ⋅⋅⋅⋅ T

HH M M S = u) Px(s,

TzH UG ⋅⋅⋅⋅ T

HH M M S = u) Pz(s,

TyH UG ⋅⋅⋅⋅ T

HH M M S = u) Py(s,La fel se pot obţine:

Page 53: CURS3_Curbe Si Supf Parametrice2

Semnificaţia valorilor din matricea de geometrie a suprafeţei Hermite

=

)1,1()0,1()1,1()0,1(

)1,0()0,0()1,0()0,0(

)1,1()0,1()1,1()0,1(

)1,0()0,0()1,0()0,0(

22

22

usx

usx

sx

sx

usx

usx

sx

sx

ux

uxxx

ux

uxxx

GHx

∂∂∂

∂∂∂

∂∂

∂∂

∂∂∂

∂∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

GHx (1,1)

GHx (1,2) GHx (2,2)

GHx (2,1)GHx(3,1)

GHx (3,2)

GHx (4,2)

GHx(4,3)GHx (1,3)

GHx (1,4) GHx (4,4)

GHx(2,3)

GHx (3,3)

GHx (3,4)

GHx (2,4)

GHx (4,1)u

s

Page 54: CURS3_Curbe Si Supf Parametrice2

Asigurarea continuităţii între două suprafeţe Hermite

44434241

34333231

24232221

14131211

gggggggggggggggg

−−−−

−−−−

44434241

24232221

kgkgkgkg

gggg• Continuitate G1

s

u

suprafaţa 2

suprafaţa 1

u=1

u=1

u=0

u=0

s=1s=1

s=0

s=0

Page 55: CURS3_Curbe Si Supf Parametrice2

Suprafeţe Bézier∑∑= =

⋅⋅=m

i

n

k

nkmiki vBuBpvuP0 0

,,, )()(),(

Două suprafeţe Bézier construite pentrua) m=2 n=3 b) m=3 n=4

a) b)

(m+1)x(n+1) puncte de control

Page 56: CURS3_Curbe Si Supf Parametrice2

Continuitate geometrică de ordinul 1 între două suprafeţe Bezier

a

b

Curba de contact

P9

P8P7P10

P11P12

P6P5

P4P3

P2

P1

k = a/b: (P1, P2, P3)(P4, P5, P6)(P7, P8, P9)(P10, P11, P12)

Page 57: CURS3_Curbe Si Supf Parametrice2

Suprafeţe spline

∑∑= =

⋅⋅=m

j

n

k

tksjkj vNuNpvuP0 0

,,, )()(),(

(m+1).(n+1) puncte de control

Page 58: CURS3_Curbe Si Supf Parametrice2

Afişarea suprafeţelor bicubice (reprezentarewireframe) - Procedură iterativă

void Desenează_Suprafaţa (MAT_COEF coef, int ns, int nu, int n){double s, u, d, ds, du;d = 1/(double)n;ds = 1/(double)(ns-1);du = 1/(double)(nu-1);// procedurile X, Y şi Z determină coordonatele unui punct de pe suprafaţă//pe baza parametrului coeffor (s=0; s<=1; s += ds) // desenează curbele cu parametru s constant

{ moveto_3D ( X(s, 0), Y(s,0), Z(s, 0) );for (u = 0; u<=1; u += d)lineto_3D (X(s, u), Y(s, u), Z(s, u));}

for (u=0; u<=1; u += du) // desenează curbele cu parametru u constant{ moveto_3D ( X(0, u), Y(0, u), Z(0, u) );for (s = 0; u<=1; u += d)lineto_3D (X(s, u), Y(s, u), Z(s, u));}

}

typedef float MAT_COEF [4][ 4][ 3];

Page 59: CURS3_Curbe Si Supf Parametrice2

Procedură recursivă (echivalentul algoritmului de înjumătăţirea intervalelor )

procedura Deseneaza_Suprafaţa ( suprafata, e)dacă test (suprafata, e) atunci desenează_patrulater (suprafata)altfel

divide_suprafata_in_patru_suprafeţe (suprafata, supf_st_st,supf_st_dr, supf_dr_st, supf_dr_dr,)

Deseneaza_Suprafaţa (supf_st_st, e) Deseneaza_Suprafaţa (supf_st_dr, e) Deseneaza_Suprafaţa (supf_dr_st, e) Deseneaza_Suprafaţa (supf_dr_dr, e)

Test (suprafata, e) <=> este suprafata aproximativ plană şi marginile ei aproximativ drepte?

Page 60: CURS3_Curbe Si Supf Parametrice2

st_dr

dr_dr

st_st

dr_st

s

uu=0,5

s = 0,5

(1, 0)

(1, 1)(0, 1)

(s, u)=(0, 0)

Stabilirea suprafeţelor de reprezentat în varianta recursivă

Page 61: CURS3_Curbe Si Supf Parametrice2

Normalele la o suprafaţă bicubică

TT2

TTTT

UMM 0]12s3s[=

=UMM (S)s

=)UMM (Ss

= u) P(s,s

⋅⋅⋅⋅

⋅⋅⋅⋅⋅⋅⋅⋅=

G

GGVs ∂∂

∂∂

∂∂r

T

u

G

GGu

V

0]12u3u[MM S=

=)(Uu

MM S =)UMM (Su

= u) P(s,

2T

TTTT

⋅⋅⋅⋅

⋅⋅⋅⋅⋅⋅⋅⋅=∂∂

∂∂

∂∂r

[ ]suussuussuusus yxyxxzxzzyzyVVN ⋅−⋅⋅−⋅⋅−⋅=×=rrr

Page 62: CURS3_Curbe Si Supf Parametrice2
Page 63: CURS3_Curbe Si Supf Parametrice2

Suprafeţe cvadrice

0222222),,( 222

=++++++++++=

kjzhygxfxzeyzdxyczbyaxzyxf

[ ]

1

1= z) y, f(x,zyx

kjhgjcefhebdgfda

zyx

dzdf

dydf

dxdf

11)(' −− ⋅⋅= MQMQ T

Normala la o suprafaţă cvadrică

Q

Matricea transformării geometrice

Page 64: CURS3_Curbe Si Supf Parametrice2

Reprezentarea suprafeţelor utilizând funcţii de douã variabile

b)

a)

y = f(x, z)

Page 65: CURS3_Curbe Si Supf Parametrice2

Memorarea valorilor funcţiei y = F(x, z)

→→

↓↓↓

nnn

n

n

n

n

yyy

yyyyyy

z

zz

xxx

221

22221

11211

2

1

21

.

.

........

.....