20.04.2013 Views

Krivulje in ploskve v računalniško podprtem geometrijskem ...

Krivulje in ploskve v računalniško podprtem geometrijskem ...

Krivulje in ploskve v računalniško podprtem geometrijskem ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Krivulje</strong> <strong>in</strong> <strong>ploskve</strong> v računalniˇsko <strong>podprtem</strong><br />

<strong>geometrijskem</strong> oblikovanju<br />

Gaˇsper Jaklič<br />

28. februar 2011


Kazalo<br />

1 Uvod 7<br />

2 Oznake <strong>in</strong> osnovna orodja 9<br />

2.1 Točke <strong>in</strong> vektorji . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

2.2 Af<strong>in</strong>e preslikave . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2.3 L<strong>in</strong>earna <strong>in</strong>terpolacija . . . . . . . . . . . . . . . . . . . . . . . 12<br />

2.4 Odsekoma l<strong>in</strong>earna <strong>in</strong>terpolacija . . . . . . . . . . . . . . . . . 13<br />

2.5 Menelajev izrek . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

3 Bézierove krivulje 17<br />

3.1 Bernste<strong>in</strong>ovi pol<strong>in</strong>omi . . . . . . . . . . . . . . . . . . . . . . . 17<br />

3.2 De Casteljauov algoritem . . . . . . . . . . . . . . . . . . . . . 19<br />

3.3 Lastnosti Bézierovih krivulj . . . . . . . . . . . . . . . . . . . 21<br />

3.4 Odvod Bézierove krivulje . . . . . . . . . . . . . . . . . . . . . 24<br />

3.5 De Casteljauov algoritem <strong>in</strong> odvajanje . . . . . . . . . . . . . 26<br />

3.6 Razcvet Bézierove krivulje . . . . . . . . . . . . . . . . . . . . 27<br />

3.7 Delitev (subdivizija) . . . . . . . . . . . . . . . . . . . . . . . 28<br />

3.8 Razcvet <strong>in</strong> polara . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

3.9 Matrična oblika Bézierove krivulje . . . . . . . . . . . . . . . . 31<br />

3.10 Viˇsanje stopnje . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

3.11 Manjˇsanje variacije . . . . . . . . . . . . . . . . . . . . . . . . 36<br />

3.12 Niˇzanje stopnje . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

3.13 Ravn<strong>in</strong>ske Bézierove krivulje v neparametrični obliki . . . . . 38<br />

3.14 Integrali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

3.15 Baricentrična oblika Bézierove krivulje . . . . . . . . . . . . . 39<br />

3.16 Racionalne Bézierove krivulje . . . . . . . . . . . . . . . . . . 41<br />

3.17 De Casteljauov algoritem za racionalne Bézierove krivulje . . . 43<br />

3.17.1 Odvodi racionalne Bézierove krivulje . . . . . . . . . . 44<br />

3.18 Sestavljene Bézierove krivulje . . . . . . . . . . . . . . . . . . 45<br />

3.18.1 Lokalni <strong>in</strong> globalni parametri . . . . . . . . . . . . . . 45<br />

3.18.2 Pogoji gladkosti . . . . . . . . . . . . . . . . . . . . . . 46<br />

3


4 KAZALO<br />

4 Bézierove <strong>ploskve</strong> 49<br />

4.1 Bézierove <strong>ploskve</strong> iz tenzorskega produkta . . . . . . . . . . . 49<br />

4.1.1 Bil<strong>in</strong>earna <strong>in</strong>terpolacija . . . . . . . . . . . . . . . . . . 49<br />

4.1.2 De Casteljauov algoritem . . . . . . . . . . . . . . . . . 51<br />

4.1.3 Tenzorski produkt Bézierovih krivulj . . . . . . . . . . 51<br />

4.1.4 Lastnosti tenzorskih Bézierovih ploskev . . . . . . . . . 53<br />

4.1.5 Viˇsanje stopnje . . . . . . . . . . . . . . . . . . . . . . 54<br />

4.1.6 Odvajanje . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

4.1.7 Pogoji gladkosti . . . . . . . . . . . . . . . . . . . . . . 56<br />

4.1.8 Delitev (subdivizija) tenzorskih ploskev . . . . . . . . . 57<br />

5 Trikotne Bézierove krpe 59<br />

5.1 Baricentrične koord<strong>in</strong>ate <strong>in</strong> l<strong>in</strong>earna <strong>in</strong>terpolacija . . . . . . . 59<br />

5.2 De Casteljauov algoritem . . . . . . . . . . . . . . . . . . . . . 60<br />

5.3 Trikotniˇski razcvet . . . . . . . . . . . . . . . . . . . . . . . . 63<br />

5.4 Bernste<strong>in</strong>ovi pol<strong>in</strong>omi <strong>in</strong> trikotne Bézierove krpe . . . . . . . . 63<br />

5.5 Odvodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />

5.6 ˇ Siritev <strong>in</strong> delitev . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

5.7 Odvedljivost . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

5.8 Viˇsanje stopnje trikotne Bézierove krpe . . . . . . . . . . . . . 70<br />

5.9 Neparametrične krpe . . . . . . . . . . . . . . . . . . . . . . . 71<br />

5.10 Racionalne Bézierove trikotne krpe . . . . . . . . . . . . . . . 72<br />

6 Posploˇsitev Bézierovih krivulj <strong>in</strong> razcvet v sploˇsnem 75<br />

6.1 Zapis pol<strong>in</strong>oma v razcvetni obliki . . . . . . . . . . . . . . . . 76<br />

6.2 Pogoji gladkosti v razcvetni obliki . . . . . . . . . . . . . . . . 80<br />

Literatura 89


Skripta, ki je pred vami, je pripomoček pri predavanjih iz osnov računalniˇsko<br />

podprtega geometrijskega oblikovanja. Zajema predvsem Bézierove krivulje,<br />

<strong>ploskve</strong> iz tenzorskega produkta <strong>in</strong> trikotne Bézierove <strong>ploskve</strong>.<br />

Hvala Seleni, Tadeju <strong>in</strong> ˇ Zigi za pripombe na predavanjih, ki so izboljˇsale<br />

izpeljave, <strong>in</strong> odpravile nekaj napak.<br />

Rad bi se zahvalil Jolandi za zelo pozorno branje rokopisa <strong>in</strong>ˇstevilne dobre<br />

pripombe. ˇ Se posebej pa za model letala, ki je postal slika na naslovnici.<br />

Ljubljana, 28. februar 2011<br />

5


6 KAZALO


Poglavje 1<br />

Uvod<br />

V poznih 50. letih se je z razvojem tehnologije <strong>in</strong> računalnikov pojavila<br />

potreba po čimbolj natančnem prenosu oblik <strong>in</strong> idej oblikovalcev v proizvodnjo.<br />

Začetne korake so naredili v avtomobilski <strong>in</strong>dustriji, <strong>in</strong>ˇzenirja P. de<br />

Casteljau pri Citroënu <strong>in</strong> P. Bézier pri Renaultu sta neodvisno razvila tip<br />

parametričnih pol<strong>in</strong>omskih krivulj <strong>in</strong> ploskev, baziranih na Bernste<strong>in</strong>ovih<br />

pol<strong>in</strong>omih. Ker so bile raziskave de Casteljaua tretirane kot poslovna skrivnost,<br />

Bézierove paobjavljene, sedanesza tarazredkrivulj <strong>in</strong>ploskev uporablja<br />

Bézierovo ime. Raziskovanje parametričnih krivulj <strong>in</strong> ploskev v povezavi<br />

z diferencialno geometrijo <strong>in</strong> CAD (oblikovanje s pomočjo računalnika) sta<br />

vodili v novo smer - CAGD (Computer Aided Geometric Design - geometrijsko<br />

oblikovanje s pomočjo računalnika). Na podlagi raziskav Coxa, de Boora<br />

<strong>in</strong> Mansfielda o krivuljah B-zlepkov, se le-te vedno bolj uporablja v CAGD;<br />

Coons <strong>in</strong> Gordon pa sta razvila metode <strong>in</strong>terpolacije podanih točk za oblikovanje<br />

ploskev.<br />

Bézierove krivulje pr<strong>in</strong>aˇsajo enostaven opis krivulje z malo podatki (kontrolne<br />

točke), enostavno sprem<strong>in</strong>janje oblike ter uporabne lastnosti za računalniˇskopredstavitev,<br />

racionalneBézierovekrivuljepazdodatnimiparametri<br />

omogočajo ˇse boljˇse <strong>in</strong>teraktivno oblikovanje. Zahtevnejˇse oblike opiˇsemo s<br />

sestavljenimi Bézierovimi krivuljami, ki z lokalno niˇzjimi stopnjami omogočajo<br />

večjo numerično stabilnost. Ta je poleg enostavne geometrijske <strong>in</strong>terpretacije<br />

tudi ena od bistvenih prednosti Bézierovega zapisa krivulje pred<br />

monomsko obliko.<br />

<strong>Krivulje</strong> B-zlepkov so nadgradnja Bézierovih krivulj, ki ponujajo boljˇsi<br />

lokalni nadzor nad krivuljo <strong>in</strong> enostavnejˇse pogoje zvezne odvedljivosti, pr<strong>in</strong>aˇsajo<br />

pa tudi zahtevnejˇso implementacijo <strong>in</strong> večjo računsko zahtevnost.<br />

Danes se kot standard poleg Bézierovih krivulj uporabljajo neekvidistantni<br />

racionalni B-zlepki (NURBS). NURBS temeljijo na ideji racionalnih krivulj<br />

(kot bomo videli v primeru racionalnih Bézierovih krivulj), le da imajo za<br />

7


8 Uvod<br />

bazo B-zlepke namesto Bernste<strong>in</strong>ovih pol<strong>in</strong>omov pri Bézierovih krivuljah.<br />

NURBS kot posebne primere vsebujejo krivulje B-zlepkov, racionalne ter neracionalne<br />

Bézierove krivulje.<br />

Iz <strong>in</strong>tuitivne def<strong>in</strong>icije <strong>ploskve</strong> kot sled krivulje, ki se giblje po drugi<br />

krivulji, so nastale <strong>ploskve</strong> kot tenzorski produkt krivulj. Tako sta ˇze de<br />

Casteljau <strong>in</strong> Bézier razvila tenzorske Bézierove <strong>ploskve</strong>, kjer sta obe prej<br />

omenjeni krivulji Bézierovi. Tenzorske krivulje aproksimirajo ˇstirikotno kontrolno<br />

mreˇzo, <strong>in</strong> so ˇse posebno primerne za oblikovanje ploskev z velikimi<br />

ˇstirikotnimi povrˇs<strong>in</strong>ami, zato so jih precej uporabljali v avtomobilski <strong>in</strong>dustriji.<br />

S ˇstirikotnimi krpami (izraz za manjˇsi del <strong>ploskve</strong>) je teˇzko oblikovati<br />

zahtevnejˇse <strong>ploskve</strong>, za kar so bolj pripravne trikotniˇske krpe, ki omogočajo<br />

bolj natančno <strong>in</strong>terpolacijo, <strong>in</strong> opiˇsejo precej ˇsirˇsi razred ploskev kot tenzorske<br />

<strong>ploskve</strong>. ˇ Ze de Casteljau je razvil trikotne Bézierove krpe kot naravno<br />

posploˇsitev teorije Bézierovih krivulj na <strong>ploskve</strong>. S pomočjo baricentričnih<br />

koord<strong>in</strong>at lahko osnovno teorijo Bézierovih krivulj prenesemo na Bézierove<br />

<strong>ploskve</strong> v n razseˇznem prostoru z def<strong>in</strong>icijskim območjem v n−1 razseˇznem<br />

simpleksu.<br />

Danes se Bézierove krivulje <strong>in</strong> <strong>ploskve</strong> uporabljajo kot osnovna implementacija<br />

krivulj <strong>in</strong> ploskev na računalnikih na področju geometrijskega <strong>in</strong><br />

<strong>in</strong>dustrijskega oblikovanja, znanstvenih raziskovanj <strong>in</strong> modeliranj ter v <strong>in</strong>dustriji<br />

zabave (film, 3D računalniˇske igre).


Poglavje 2<br />

Oznake <strong>in</strong> osnovna orodja<br />

2.1 Točke <strong>in</strong> vektorji<br />

Objekti, ki jih bomo obravnavali, bodo leˇzali v af<strong>in</strong>em prostoru.<br />

Def<strong>in</strong>icija: Af<strong>in</strong>i prostor nad vektorskim prostorom P je mnoˇzica X z<br />

zunanjima operacijama:<br />

X ×X → P (x,y) → y −x<br />

X ×P → X (x,a) → x+a.<br />

Elementom x ∈ X rečemo točke, elementom a ∈ P pa vektorji.<br />

Več<strong>in</strong>oma bomo uporabljali vektorski prostor R3 , saj si objektov v prostorih<br />

viˇsjih dimenzij ne znamo predstavljati. Obravnavane metode <strong>in</strong> objekti<br />

se dajo posploˇsiti na n-dimenzionalni primer (C. de Boor: B-form basics; [5],<br />

str. 131-148), mi pa se bomo ukvarjali s praktično uporabnimi krivuljami <strong>in</strong><br />

ploskvami.<br />

Metode na objektih bodo neodvisne od izbire koord<strong>in</strong>atnega sistema. Pri<br />

tem moramo strogo ločiti točke <strong>in</strong> vektorje. Točke določajo lokacijo, pogosto<br />

relativno glede na nek objekt; označevali jih bomo s krepkimi črkami, npr.<br />

a,b. Isto notacijo bomo uporabljali tudi za vektorje.<br />

Če bomo točke <strong>in</strong><br />

vektorje zapisali s koord<strong>in</strong>atami, relativno na nek koord<strong>in</strong>atni sistem, jih<br />

bomo zapisali v obliki koord<strong>in</strong>atnih stolpcev.<br />

Čeprav točke <strong>in</strong> vektorje zapiˇsemo enako (kot trojico realnih ˇstevil), je<br />

med njimi pomembna razlika: za poljubni točki a <strong>in</strong> b obstaja enolično<br />

določen vektor med njima v = b − a. Po drugi strani, za dani vektor v<br />

obstaja neskončno parov točk a, b, tako, da je v = b − a. Na primer,<br />

če je a,b tak par, <strong>in</strong> w poljuben vektor, je a + w, b + w nov par, saj je<br />

v = (b+w)−(a+w). Torej so vektorji <strong>in</strong>variantni za translacije, točke pa<br />

ne.<br />

9


10 Oznake <strong>in</strong> osnovna orodja<br />

Elemente prostoratočklahko samo odˇstevamo (dobimovektor), operacija<br />

seˇstevanja pa zanje ni def<strong>in</strong>irana. Kjub temu so za točke def<strong>in</strong>irane operacije,<br />

podobne seˇstevanju, imenujemo jih baricentrične (af<strong>in</strong>e) komb<strong>in</strong>acije.<br />

Def<strong>in</strong>irane so kot uteˇzena vsota točk, kjer se uteˇzi seˇstejejo v 1:<br />

b =<br />

n<br />

αjbj,<br />

j=0<br />

n<br />

αj = 1, bj ∈ R 3 . (2.1)<br />

j=0<br />

Na prvi pogled je to nedef<strong>in</strong>irano seˇstevanje točk, vendar lahko zapiˇsemo<br />

(2.1) kot:<br />

n<br />

b = b0 + αj(bj −b0),<br />

j=1<br />

kar je vsota točke <strong>in</strong> vektorja.<br />

Primer baricentrične komb<strong>in</strong>acije jeteˇziˇsčna točka g trikotnika s točkami a,b<br />

<strong>in</strong> c:<br />

g = 1<br />

3<br />

1 1<br />

a+ b+<br />

3 3 c.<br />

Izraz “baricentrična komb<strong>in</strong>acija” izhaja iz angleˇskega izraza “barycenter”,<br />

kar pomeni “center gravitacije”. To izvira iz fizike: če so bj teˇziˇsča objektov<br />

z masami mj, je njihovo teˇziˇsče v točki b = mjbj/ mj. Pri tem lahko<br />

normaliziramo mase s pomočjo mj = 1.<br />

Pomembenposebniprimerbaricentričnihkomb<strong>in</strong>acijsokonveksne komb<strong>in</strong>acije.<br />

To so baricentrične komb<strong>in</strong>acije, kjer so koeficienti αj nenegativni.<br />

Konveksna komb<strong>in</strong>acija točk vedno leˇzi “znotraj” le-teh točk, kar pripelje<br />

do def<strong>in</strong>icije konveksne ovojnice. Konveksna ovojnica mnoˇzice točk je<br />

mnoˇzica točk, ki jih tvorijo vse konveksne komb<strong>in</strong>acije teh točk. Konveksna<br />

ovojnica je konveksna mnoˇzica.<br />

Slika 2.1: Poligon <strong>in</strong> njegova konveksna ovojnica.<br />

Vrnimo se k baricentričnim komb<strong>in</strong>acijam, ki iz točk generirajo točke. Če


2.2 Af<strong>in</strong>e preslikave 11<br />

je vsota koeficientov n j=0αj = 0, baricentrična komb<strong>in</strong>acija generira vektor:<br />

n<br />

v = αjbj.<br />

Dokaz: Zapiˇsemo lahko α0 = −α1 −α2 −···−αn. Potem je<br />

n<br />

αjbj = (−α1 −α2 −···−αn)b0 +α1b1 +···+αnbn<br />

j=0<br />

j=0<br />

= α1(b1 −b0)+α2(b2 −b0)+···+αn(bn −b0)<br />

To pa je vsota vektorjev <strong>in</strong> zato vektor.<br />

Povezava med točkami <strong>in</strong> vektorji z baricentričnimi komb<strong>in</strong>acijami je teoretično<br />

<strong>in</strong> praktično zelo pomembna. Omogoča na primer hitro preverjanje<br />

tipa rezultata pri izpeljavi formul na osnovi vsote koeficientov-uteˇzi.<br />

2.2 Af<strong>in</strong>e preslikave<br />

Več<strong>in</strong>a transformacij za premikanje ter sprem<strong>in</strong>janje velikosti objektov v<br />

računalniˇski grafiki ter CAD okolju je af<strong>in</strong>ih preslikav. Izraz af<strong>in</strong>a preslikava<br />

je vpeljal L. Euler, prvi pa jih je sistematično preučeval F. Moebius.<br />

Osnovna operacija na točkah je baricentrična komb<strong>in</strong>acija, zato bomo<br />

uporabili def<strong>in</strong>icijo af<strong>in</strong>e preslikave za baricentrične komb<strong>in</strong>acije.<br />

Def<strong>in</strong>icija: Preslikavo Φ : R 3 → R 3 imenujemo af<strong>in</strong>a, če ohranja baricentrične<br />

komb<strong>in</strong>acije <strong>in</strong>variantne.<br />

Torej, če je<br />

<strong>in</strong> je Φ af<strong>in</strong>a preslikava, velja<br />

x = αjaj; x,aj ∈ R 3 , <br />

αj = 1,<br />

Φx = αjΦaj; Φx,Φaj ∈ R 3 .<br />

Def<strong>in</strong>icijajeprecejabstraktna, vendar imaenostavno <strong>in</strong>terpretacijo. Izraz<br />

x = αjaj določa, kakˇsne uteˇzi moramo določiti točkam aj, da bo x njihovo<br />

uteˇzeno povprečje. Če x ter vse točke aj preslikamo z af<strong>in</strong>o preslikavo Φ,<br />

relacijamedtočkamiostanenespremenjena. Takosenaprimersred<strong>in</strong>adaljice<br />

preslika v sred<strong>in</strong>o af<strong>in</strong>e slike daljice, teˇziˇsče točk pa se preslika v teˇziˇsče<br />

preslikanih točk.<br />

V danem koord<strong>in</strong>atnem sistemu točko x predstavlja trojica koord<strong>in</strong>at, ki<br />

jo prav tako označimo z x. Af<strong>in</strong>a preslikava dobi znano obliko:<br />

j<br />

Φx = Ax+v, (2.2)


12 Oznake <strong>in</strong> osnovna orodja<br />

kjer je A ∈ R 3,3 matrika, v pa je vektor v R 3 .<br />

Pokaˇzimo, da preslikave oblike (2.2) ohranjajo baricentrične komb<strong>in</strong>acije.<br />

Dokaz: Upoˇstevamo, da je αj = 1, <strong>in</strong> izrazimo:<br />

<br />

Φ αjaj<br />

<br />

= A αjaj +v<br />

= αjAaj + αjv<br />

= αj(Aaj +v)<br />

= αjΦaj<br />

Primeri af<strong>in</strong>ih preslikav so identiteta (v = 0,A = I), translacija (A = I,<br />

v je translacijski vektor), razteg (v = 0, A-diagonalna matrika faktorjev<br />

raztega), rotacija (v = 0, A-rotacijska matrika), strig (v = 0, A je zgornje<br />

trikotna matrika z enicami na diagonali), paralelna projekcija,...Pomemben<br />

posebni primer af<strong>in</strong>ih preslikav so enačbe gibanja togega telesa.<br />

Af<strong>in</strong>e preslikave lahko zdruˇzujemo ter razbijamo na enostavnejˇse preslikave;<br />

vsakoaf<strong>in</strong>opreslikavo lahkozapiˇsemokotzaporedjetranslacij, rotacij, strigov<br />

ter raztegov.<br />

2.3 L<strong>in</strong>earna <strong>in</strong>terpolacija<br />

Naj bosta a <strong>in</strong> b različni točki v R 3 . Mnoˇzica točk x, oblike<br />

x = x(t) = (1−t)a+tb, t ∈ R (2.3)<br />

tvori premico skozi točki a <strong>in</strong> b. Torej je x baricentrična komb<strong>in</strong>acija dveh<br />

točk iz R 3 . Ista baricentrična komb<strong>in</strong>acija velja tudi za točke 0,t,1 v R:<br />

t = (1−t)·0+t·1. Po def<strong>in</strong>iciji af<strong>in</strong>e preslikave so točke a,x,b ∈ R 3 af<strong>in</strong>e<br />

slike točk 0,t,1 ∈ R.<br />

Izrek 1. L<strong>in</strong>earna <strong>in</strong>terpolacija je af<strong>in</strong>a preslikava <strong>in</strong>tervala [0,1] na premico<br />

v R 3 .<br />

Enostavno je preveriti, da so l<strong>in</strong>earne <strong>in</strong>terpolacije af<strong>in</strong>o <strong>in</strong>variantne. Naj<br />

bo Φ : R 3 → R 3 af<strong>in</strong>a preslikava <strong>in</strong> naj velja enačba (2.3). Potem je<br />

Φx = Φ((1−t)a+tb) = (1−t)Φa+tΦb.


2.4 Odsekoma l<strong>in</strong>earna <strong>in</strong>terpolacija 13<br />

Z l<strong>in</strong>earno <strong>in</strong>terpolacijo je tesno povezan pojem baricentričnih koord<strong>in</strong>at.<br />

Naj bodo a,x,b kol<strong>in</strong>earne točke v R 3 <strong>in</strong> a = b. Tedaj je<br />

x = αa+βb, α+β = 1, (2.4)<br />

kjer α <strong>in</strong> β imenujemo baricentrični koord<strong>in</strong>ati točke x glede na točki a<br />

<strong>in</strong> b. Po drugi strani je x baricentrična komb<strong>in</strong>acija točk a <strong>in</strong> b.<br />

Povezava med l<strong>in</strong>earno <strong>in</strong>terpolacijo <strong>in</strong> baricentričnimi koord<strong>in</strong>atami je<br />

očitna: α = 1−t, β = t. Baricentrične koord<strong>in</strong>ate točke x glede na a <strong>in</strong> b<br />

so izraˇzene z:<br />

α = dist(x,b)<br />

dist(a,b) ,<br />

β = dist(a,x)<br />

dist(a,b) ,<br />

kjerdistoznačujepredznačenoevklidsko razdaljomedtočkama(baricentrične<br />

koord<strong>in</strong>ate so lahko negativne - če točke a,x,b niso urejene).<br />

Pomemben jetudi pr<strong>in</strong>ciprazmerij (ratio). Razmerje trehkol<strong>in</strong>earnih<br />

točk a,x,b, kjer je a = b, def<strong>in</strong>iramo z<br />

ratio(a,x,b) = dist(a,x)<br />

. (2.5)<br />

dist(x,b)<br />

Za x = b je ratio(a,x,b) = ∞.<br />

Če sta α <strong>in</strong> β baricentrični koord<strong>in</strong>ati x glede na a ter b, velja:<br />

ratio(a,x,b) = β<br />

. (2.6)<br />

α<br />

Baricentrične koord<strong>in</strong>ate točke se po preslikavi z af<strong>in</strong>o preslikavo ne spremenijo,<br />

zato je tudi razmerje (ratio) treh kol<strong>in</strong>earnih točk <strong>in</strong>variantno za<br />

af<strong>in</strong>e preslikave:<br />

ratio(Φa,Φx,Φb) = β<br />

. (2.7)<br />

α<br />

To lastnost lahko uporabimo za def<strong>in</strong>icijo af<strong>in</strong>ih preslikav. Preslikava, ki slika<br />

premice v premice, <strong>in</strong> ohranja razmerja (ratio), je af<strong>in</strong>a preslikava.<br />

2.4 Odsekoma l<strong>in</strong>earna <strong>in</strong>terpolacija<br />

Točkeb0,b1,...,bn najtvorijopoligon B.Poligonsestavljazaporedjedaljic,<br />

ki <strong>in</strong>terpolirajo ustrezne pare točk bi,bi+1, zato ga imenujemo odsekoma


14 Oznake <strong>in</strong> osnovna orodja<br />

l<strong>in</strong>earna <strong>in</strong>terpolacija PL točk bi. Če točke bi leˇzijo na krivulji c, je B<br />

odsekoma l<strong>in</strong>earna <strong>in</strong>terpolacija za krivuljo c:<br />

B = PLc. (2.8)<br />

Pomembna lastnost odsekoma l<strong>in</strong>earne <strong>in</strong>terpolacije je <strong>in</strong>variantnost za<br />

af<strong>in</strong>e transformacije. Če krivuljo c z af<strong>in</strong>o preslikavo Φ preslikamo v krivuljo<br />

Φc, je odsekoma l<strong>in</strong>earna <strong>in</strong>terpolacija za preslikane točke Φbi af<strong>in</strong>a slika<br />

orig<strong>in</strong>alnega <strong>in</strong>terpolacijskega poligona:<br />

PLΦc = ΦPLc. (2.9)<br />

Druga pomembna lastnost je lastnost manjˇsanja variacije. Oglejmo<br />

si primer zvezne krivulje c, odsekoma l<strong>in</strong>earne <strong>in</strong>terpolacije PLc <strong>in</strong><br />

poljubneravn<strong>in</strong>e E. Naj crossc označujeˇstevilo presečiˇsč krivulje czravn<strong>in</strong>o<br />

E, crossPLc pa ˇstevilo presečiˇsč <strong>in</strong>terpolacijskega poligona z isto ravn<strong>in</strong>o.<br />

Velja:<br />

crossPLc ≤ crossc. (2.10)<br />

Dokaz je preprost: vzemimo točki bi,bi+1. Daljica med njima seka dano<br />

ravn<strong>in</strong>o kvečjemu v eni točki (razen v primeru, ko daljica leˇzi na ravn<strong>in</strong>i),<br />

odsek krivulje med točkama bi ter bi+1 pa lahko ravn<strong>in</strong>o seka v poljubno<br />

mnogotočkah(zaradipogojazveznosti pavsajenkrat). Vprimeru, kodaljica<br />

med točkama leˇzi na dani ravn<strong>in</strong>i, za presečiˇsči z ravn<strong>in</strong>o ˇstejemo le robni<br />

točki daljice.<br />

b0<br />

b1<br />

b2<br />

ravn<strong>in</strong>a<br />

Slika 2.2: Lastnost manjˇsanja variacije<br />

c<br />

b3


2.5 Menelajev izrek 15<br />

2.5 Menelajev izrek<br />

Pr<strong>in</strong>cipodsekomal<strong>in</strong>earne<strong>in</strong>terpolacijeuporabimozadokazeneganajpomembnejˇsih<br />

geometrijskih izrekov v CAGD, Menelajevega izreka.<br />

p1<br />

at<br />

as<br />

p2<br />

c<br />

bt<br />

0 t s 1<br />

Slika 2.3: Menelajev izrek<br />

Izrek 2 (Menelajev izrek). Naj bodo p1,p2,p3 ∈ E 3 nekol<strong>in</strong>earne točke, <strong>in</strong>:<br />

at = (1−t)p1 +tp2,<br />

as = (1−s)p1 +sp2,<br />

bt = (1−t)p2 +tp3,<br />

bs = (1−s)p2 +sp3.<br />

Točka c naj bo presečiˇsče daljic atbt <strong>in</strong> asbs.<br />

Potem velja:<br />

s<br />

ratio(at,c,bt) = , (2.11)<br />

1−s<br />

t<br />

ratio(as,c,bs) = . (2.12)<br />

1−t<br />

Opomba 1. Menelajev izrek trdi, da lahko točko c dobimo z l<strong>in</strong>earno <strong>in</strong>terpolacijo<br />

najprej pri s, potem pa pri t, ali pa v obratnem vrstnem redu. To bo<br />

pomembno pri konstrukciji Bézierovih krivulj.<br />

Dokaz: Enostavno je preveriti, da velja c = (1 − s)at + sbt ter c =<br />

(1 − t)as + tbs. Opazimo ˇse, da so kol<strong>in</strong>earne točke p1,at,as,p2 ter tudi<br />

p2,bt,bs,p3 af<strong>in</strong>e slike točk 0,t,s,1 ∈ R.<br />

bs<br />

p3


16 Oznake <strong>in</strong> osnovna orodja<br />

Opomba: Enačbi (2.11) ter (2.12) sta CAGD različici orig<strong>in</strong>alnega Menelajevega<br />

izreka:<br />

ratio(bs,bt,p2)·ratio(p2,at,as)·ratio(as,c,bs) = −1. (2.13)


Poglavje 3<br />

Bézierove krivulje<br />

3.1 Bernste<strong>in</strong>ovi pol<strong>in</strong>omi<br />

i-ti Bernste<strong>in</strong>ov bazni pol<strong>in</strong>om stopnje n je def<strong>in</strong>iran z<br />

B n <br />

n<br />

i (t) = t<br />

i<br />

i (1−t) n−i , t ∈ [0,1]. (3.1)<br />

Izrek 3. Bernste<strong>in</strong>ovi bazni pol<strong>in</strong>omi zadoˇsčajo naslednji rekurzivni zvezi:<br />

kjer je<br />

<strong>in</strong><br />

B n i (t) = (1−t)B n−1<br />

i (t)+tB n−1<br />

i−1<br />

B n j<br />

(t), (3.2)<br />

B 0 0 (t) = 1 (3.3)<br />

(t) = 0, za j /∈ {0,1,...,n}. (3.4)<br />

Dokaz: Uporabimo razcep b<strong>in</strong>omskega simbola:<br />

B n <br />

n<br />

i (t) = t<br />

i<br />

i (1−t) n−i<br />

<br />

n−1<br />

= t<br />

i<br />

i (1−t) n−i <br />

n−1<br />

+ t<br />

i−1<br />

i (1−t) n−i<br />

= (1−t)B n−1<br />

i (t)+tB n−1<br />

i−1 (t).<br />

Izrek 4. Bernste<strong>in</strong>ovi bazni pol<strong>in</strong>omi tvorijo particijo enote:<br />

n<br />

(t) ≥ 0. (3.5)<br />

j=0<br />

B n j (t) ≡ 1, Bn j<br />

17


18 Bézierove krivulje<br />

Dokaz: Uporabimo b<strong>in</strong>omski izrek<br />

1 = (t+(1−t)) n =<br />

n<br />

j=0<br />

<br />

n<br />

t<br />

j<br />

j (1−t) n−j =<br />

Nenegativnost Bernste<strong>in</strong>ovih pol<strong>in</strong>omov je očitna.<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

B 0 4<br />

B 1 4<br />

B 2 4 B 3 4<br />

n<br />

j=0<br />

B n j (t).<br />

0.2 0.4 0.6 0.8 1<br />

Slika 3.1: Bernste<strong>in</strong>ovi bazni pol<strong>in</strong>omi pri n = 4.<br />

Bernste<strong>in</strong>ovi pol<strong>in</strong>omisobiliprvičuporabljeniprikonstruktivnem dokazu<br />

Weierstrassovega aproksimacijskega izreka.<br />

Def<strong>in</strong>icija: Naj bodo podane točke bi ∈ R 3 , i = 0,1,...,n. Krivulji<br />

b n (t) =<br />

n<br />

j=0<br />

bjB n j<br />

B 4 4<br />

(t) (3.6)<br />

rečemo Bézierova krivulja. Točke bj imenujemo Bézierove kontrolne<br />

točke, poligon, ki jih povezuje, pa Bézierov kontrolni poligon. Krivulja<br />

b n je Bernste<strong>in</strong>-Bézierova aproksimacija kontrolnega pol<strong>in</strong>oma.<br />

Do geometrijske konstrukcije Bézierovih krivulj pridemo s pomočjo de<br />

Casteljauovega algoritma. Ta algoritem je verjetno eden najosnovnejˇsih<br />

napodročjuoblikovanja krivulj <strong>in</strong>ploskev; <strong>in</strong>tuitivno jasna geometrijska konstrukcija<br />

vodi k močni teoriji.


3.2 De Casteljauov algoritem 19<br />

-5<br />

7.5<br />

5<br />

2.5<br />

0<br />

-2.5<br />

5<br />

2.5<br />

0<br />

-2.5<br />

-5<br />

0<br />

5<br />

10<br />

Slika 3.2: Kubična Bézierova krivulja s kontrolnim poligonom.<br />

3.2 De Casteljauov algoritem<br />

De Casteljauov algoritem<br />

Podane so točke b0,b1,...,bn ∈ E 3 <strong>in</strong> t ∈ R,<br />

izračunaj:<br />

b r i (t) = (1−t)br−1 i (t)+tb r−1<br />

i+1 (t),<br />

r = 1,2,...,n ;<br />

i = 0,1,...,n−r<br />

, (3.7)<br />

kjer je b0 i (t) = bi.<br />

Potem je bn 0(t) točka na Bézierovi krivulji bn pri vrednosti parametra t.<br />

Geometrijski potek algoritma si lahko ogledamo na sliki 3.3.<br />

Vmesne koeficiente br i(t)običajnozapiˇsemo vtrikotnoshemo, kijirečemo<br />

de Casteljauova shema. De Casteljauova shema v kubičnem primeru:<br />

b0<br />

b1 b 1 0<br />

b2 b 1 1 b 2 0<br />

b3 b 1 2 b2 1 b3 0


20 Bézierove krivulje<br />

Pri programiranju de Casteljauovega algoritma zadostuje uporaba ene same<br />

tabele velikosti n+1, če le ustrezno prepisujemo elemente. Geometrijsko je<br />

de Casteljauov algoritem ponavljanje l<strong>in</strong>earnih <strong>in</strong>terpolacij.<br />

b0<br />

b 0 1<br />

b1<br />

b 0 2<br />

b 1 1<br />

b2<br />

0 t 1<br />

Slika 3.3: DeCasteljauov algoritemza kubično krivuljo n = 3,t = 0.7. Točko<br />

b 3 0(t) na krivulji dobimo s ponavljanjem l<strong>in</strong>earnih <strong>in</strong>terpolacij.<br />

Izrek 5. Vmesne de Casteljauove točke b r i(t) lahko izrazimo s pomočjoBernste<strong>in</strong>ovih<br />

pol<strong>in</strong>omov stopnje r:<br />

b r i (t) =<br />

r<br />

j=0<br />

bi+jB r j (t),<br />

b 0 3<br />

b 1 2<br />

b 2 1<br />

r = 0,1,...,n ;<br />

i = 0,1,...,n−r<br />

b3<br />

. (3.8)<br />

Glavni pomen gornje enačbe je v primeru r = n. Ustrezna de Casteljauova<br />

točka leˇzi na krivulji:<br />

b n (t) = b n n<br />

0(t) = bjB n j(t). (3.9)<br />

Dokaz: Uporabimo <strong>in</strong>dukcijo. Za r = 0 enačba (3.8) velja po def<strong>in</strong>iciji.<br />

Predpostavimo, da velja tudi za r − 1, ter uporabimo rekurzivno def<strong>in</strong>icijo<br />

(3.7) za b r i <strong>in</strong> rekurzivno zvezo za Bernste<strong>in</strong>ove pol<strong>in</strong>ome (3.2):<br />

b r i<br />

j=0<br />

(t) = (1−t)br−1 i (t)+tb r−1<br />

i+1 (t)<br />

i+r−1 <br />

= (1−t)<br />

j=i<br />

bjB r−1<br />

j−i (t)+t<br />

i+r<br />

j=i+1<br />

bjB r−1<br />

j−i−1 (t).


3.3 Lastnosti Bézierovih krivulj 21<br />

Po (3.3) lahko <strong>in</strong>dekse v obeh vrstah ˇstejemo od i do i+r:<br />

obliki:<br />

b r i<br />

i+r<br />

(t) = (1−t)<br />

=<br />

=<br />

=<br />

i+r<br />

j=i<br />

j=i<br />

<br />

bjB r−1<br />

j−i (t)+t<br />

i+r<br />

j=i<br />

bjB r−1<br />

j−i−1 (t)<br />

bj[(1−t)B r−1<br />

j−i (t)+tBr−1<br />

j−i−1 (t)]<br />

i+r<br />

bjB r j−i(t)<br />

j=i<br />

r<br />

j=0<br />

bi+jB r j (t).<br />

Opomba: Z vmesnimi točkami b r i<br />

b n (t) =<br />

r<br />

i=0<br />

lahko zapiˇsemo Bézierovo krivuljo v<br />

b n−r<br />

i (t)B r i(t). (3.10)<br />

To lahko <strong>in</strong>terpretiramo takole: najprej izračunamo n−r korakov de Castel-<br />

jauovega algoritma glede na t <strong>in</strong> vzamemo izračunane točke b n−r<br />

i (t) za kontrolne<br />

točke Bézierove krivulje r-te stopnje ter izračunamo točko s parametrom<br />

t.<br />

3.3 Lastnosti Bézierovih krivulj<br />

Af<strong>in</strong>a <strong>in</strong>varianca<br />

Bézierove krivulje so <strong>in</strong>variantne za af<strong>in</strong>e preslikave, v smislu, da naslednja<br />

postopka privedeta do istega rezultata:<br />

(1) izračunamo točko bn (t), nato na njej izvedemo af<strong>in</strong>o preslikavo,<br />

(2) uporabimo af<strong>in</strong>o preslikavo na kontrolnem poligonu, nato pa izračunamo<br />

točko na Bézierovi krivulji glede na preslikani kontrolni poligon.<br />

V določenih primerih je drugi postopek računsko precej manj zahteven kot<br />

prvi.<br />

Čemoramonaprimeraf<strong>in</strong>otransformirativelikoˇstevilo točk, zuporabo<br />

drugega postopka uporabimo af<strong>in</strong>o transformacijo samo na malem ˇstevilu<br />

kontrolnih točk, namesto na vseh ˇzeljenih točkah (ˇstevilo izvajanj de Casteljauovega<br />

algoritma ostaja enako).<br />

Af<strong>in</strong>a <strong>in</strong>varianca Bézierovih krivulj sledi iz <strong>in</strong>variance baricentričnih komb<strong>in</strong>acij<br />

za af<strong>in</strong>e preslikave <strong>in</strong> uporabe lastnosti particije enote (3.5).


22 Bézierove krivulje<br />

Bézierove krivulje pa niso projektivno <strong>in</strong>variantne, kar pomeni, da pri<br />

projiciranjukrivuljenesmemoprojiciratisamokontrolnihtočk<strong>in</strong>natogenerirati<br />

krivulje, temveč moramo projicirati točke ˇze generirane krivulje. Postopek<br />

projiciranja tridimenzionalnih objektov na ravn<strong>in</strong>o je eden najpogosteje<br />

uporabljanih postopkov, saj se uporablja pri vsakem izrisu tridimenzionalnih<br />

objektov na računalniˇski monitor <strong>in</strong> papir.<br />

Lastnost konveksne ovojnice<br />

Bézierova krivulja bn (t) leˇzi v konveksni ovojnici svojega kontrolnega pol<strong>in</strong>oma.<br />

Dokaz je preprost. Za t ∈ [0,1] so Bernste<strong>in</strong>ovi pol<strong>in</strong>omi nenegativni, <strong>in</strong> po<br />

enačbi (3.5) se seˇstejejo v 1. Torej je n i=0biB n i (t) konveksna komb<strong>in</strong>acija<br />

kontrolnih točk za vsak t z <strong>in</strong>tervala [0,1]. Če t /∈ [0,1], lastnost konveksne<br />

ovojnice ne velja.<br />

Posledica: Planarni kontrolni poligon generira planarno krivuljo.<br />

Interpolacija v robnih točkah<br />

Bézierova krivulja poteka skozi točki b0 = b n (0) <strong>in</strong> bn = b n (1). To je<br />

posledica enačb:<br />

B n i (0) = δi,0<br />

B n i (1) = δi,n.<br />

Invarianca za af<strong>in</strong>e transformacije parametra<br />

Pogosto se za def<strong>in</strong>icijsko območje parametra Bézierove krivulje vzame <strong>in</strong>terval<br />

[0,1]. Za Bézierovo krivuljo nad poljubnim <strong>in</strong>tervalom a ≤ u ≤ b<br />

vpeljemo lokalno parametrizacijo t = (u − a)/(b − a) <strong>in</strong> nadaljujemo z de<br />

Casteljauovim algoritmom. Ustrezni korak algoritma (3.7) je oblike:<br />

b r b−u<br />

i (u) =<br />

b−a br−1 i (u)+ u−a<br />

b−a br−1 i+1<br />

(u). (3.11)<br />

Ker je preslikava t af<strong>in</strong>a, pravimo, da so Bézierove krivulje <strong>in</strong>variantne za<br />

af<strong>in</strong>e transformacije parametra.<br />

Omenjeno lokalno parametrizacijo imenujemo l<strong>in</strong>earna reparametrizacija,<br />

<strong>in</strong> jo pogosto uporabljamo v algoritmih za delo z Bézierovimi krivuljami, ker<br />

se lastnosti krivulje ohranijo.<br />

Simetrija<br />

Bézierovi krivulji glede na zaporedji kontrolnih točk b0,b1,...,bn ter bn,<br />

bn−1,...,b0 sta enaki, razlikujeta se samo v smeri parametrizacije:<br />

n n<br />

(t) = (1−t) . (3.12)<br />

j=0<br />

bjB n j<br />

j=0<br />

bn−jB n j


3.3 Lastnosti Bézierovih krivulj 23<br />

To sledi iz lastnosti Bernste<strong>in</strong>ovih baznih pol<strong>in</strong>omov<br />

Invariantnost za baricentrične komb<strong>in</strong>acije<br />

Za α+β = 1 velja:<br />

n<br />

n<br />

(t) = α<br />

j=0<br />

(αbj +βcj)B n j<br />

B n j (t) = Bn n−j (1−t) . (3.13)<br />

j=0<br />

bjB n j (t)+β<br />

n<br />

j=0<br />

cjB n j<br />

(t) . (3.14)<br />

Uteˇzeno povprečje dveh Bézierovih krivulj lahko izračunamo kot uteˇzeno<br />

povprečje ustreznih točk na krivulji (desni izraz), ali pa vzamemo uteˇzeno<br />

povprečje ustreznih kontrolnih točk (levo), ter nato izračunamo krivuljo.<br />

Ohranjanje premic<br />

Če imamo kontrolne točke j<br />

, j = 0,1,...,n, je Bézierova krivulja premica.<br />

n<br />

Velja enakost:<br />

n j<br />

n Bn j(t) = t . (3.15)<br />

j=0<br />

Dokaz: Bernste<strong>in</strong>ov pol<strong>in</strong>om B n j izrazimo s pomočjo pol<strong>in</strong>omov B n−1<br />

k ter<br />

uporabimo enačbo (3.5):<br />

n j<br />

n Bn j =<br />

n<br />

<br />

j n<br />

t<br />

n j<br />

j (1−t) n−j = t<br />

j=0<br />

j=0<br />

n<br />

j=0<br />

<br />

n−1<br />

t<br />

j −1<br />

j−1 (1−t) n−1−(j−1) = t.<br />

Posledica: Če so kontrolne točke kol<strong>in</strong>earne <strong>in</strong> enakomerno porazdeljene,<br />

potem je pripadajoča Bézierova krivulja daljica [b0,bn], ki poteka skozi kontrolne<br />

točke. Če pa so kontrolne točke porazdeljene neenakomerno, spet<br />

dobimo daljico, ki pa ni l<strong>in</strong>earno parametrizirana (<strong>in</strong>terval [0,1] lahko parametriziramo<br />

na več nač<strong>in</strong>ov, npr. z f1(t) = t,f2(t) = t2 ,t ∈ [0,1]).<br />

Psevdo-lokalni nadzor<br />

Poiˇsčimo ekstreme Bernste<strong>in</strong>ovega baznega pol<strong>in</strong>oma B n i . Odvajamo:<br />

d<br />

dt Bn i (t) =<br />

=<br />

<br />

n<br />

it<br />

i<br />

i−1 (1−t) n−i <br />

n<br />

+ t<br />

i<br />

i (n−i)(1−t) n−i−1 (−1)<br />

<br />

n<br />

t<br />

i<br />

i−1 (1−t) n−i−1 (i−nt).<br />

Reˇsitve enačbe d dt Bn i (t) = 0 so t1 = 0,t2 = 1,t3 = i<br />

. Ker so Bernste<strong>in</strong>ovi<br />

n<br />

pol<strong>in</strong>omi nenegativni, doseˇze Bn i<br />

i (t) maksimum na [0,1] pri t = . To ima<br />

n


24 Bézierove krivulje<br />

praktičenpomenpriuporabiBézierovih krivulj voblikovanju. Prispremembi<br />

ene od kontrolnih točk bi je sprememba krivulje največja v okolici točke z<br />

, čeprav sprememba vpliva na celotno krivuljo.<br />

vrednostjo parametra i<br />

n<br />

3.4 Odvod Bézierove krivulje<br />

Najprej izračunajmo odvod Bernste<strong>in</strong>ovega baznega pol<strong>in</strong>oma B n i :<br />

d<br />

dt Bn d<br />

i (t) =<br />

dt<br />

=<br />

<br />

n<br />

t<br />

i<br />

i (1−t) n−i<br />

<strong>in</strong>!<br />

i!(n−i)! ti−1 (1−t) n−i − (n−i)n!<br />

i!(n−i)! ti (1−t) n−i−1<br />

n(n−1)!<br />

=<br />

(i−1)!(n−i)! ti−1 (1−t) n−i − n(n−1)!<br />

i!(n−i−1)! ti (1−t) n−i−1<br />

= n[B n−1<br />

i−1 (t)−Bn−1 i (t)].<br />

Odvod Bézierove krivulje b n je:<br />

d<br />

dt bn (t) = n<br />

= n<br />

n<br />

j=0<br />

n<br />

j=1<br />

[B n−1<br />

j−1 (t)−Bn−1<br />

j (t)]bj<br />

<br />

B n−1<br />

j−1 (t)bj<br />

n−1<br />

−n<br />

V prvi vsoti premaknemo <strong>in</strong>deks <strong>in</strong> zdruˇzimo:<br />

d<br />

dt bn n−1<br />

(t) = n<br />

j=0<br />

n−1<br />

= n<br />

j=0<br />

j=0<br />

<br />

B n−1<br />

n−1<br />

j (t)bj+1 −n<br />

j=0<br />

(bj+1 −bj)B n−1<br />

j (t).<br />

B n−1<br />

j (t)bj.<br />

B n−1<br />

j (t)bj<br />

Z uporabo premih končnih diferenc △bj = bj+1 −bj lahko zapiˇsemo gornjo<br />

formulo v obliki:<br />

d<br />

dt bn n−1<br />

(t) = n<br />

j=0<br />

△bjB n−1<br />

j (t), △bj ∈ R 3 . (3.16)<br />

Odvod Bézierove krivulje je spet Bézierova krivulja, dobljena s kontrolnim<br />

poligonom iz diferenc točk prvotnega kontrolnega poligona. Opazimo, da v


3.4 Odvod Bézierove krivulje 25<br />

b0<br />

15<br />

10<br />

5<br />

-5<br />

-10<br />

b1<br />

∆b0+ 0<br />

∆b1+ 0<br />

b2<br />

5 10 15 20 25<br />

∆b2+ 0<br />

Slika 3.4: Kubična Bézierova krivulja <strong>in</strong> njen odvod (pomnoˇzen s faktorjem<br />

1<br />

3 ).<br />

formuli odvedene krivulje namesto kontrolnih točk nastopajo vektorji. Za<br />

predstavitev odvedene krivulje konstruiramo poligon iz točk a + △b0,a +<br />

△b1,...,a+△bn−1. Tu je a poljubna točka, običajno vzamemo a = 0.<br />

Z večkratno uporabo zgornjega postopka pridemo do viˇsjih odvodov Bézierove<br />

krivulje,<br />

d r<br />

dt rbn (t) =<br />

Tu je △ r prema končna diferenca,<br />

n! n−r<br />

(n−r)!<br />

j=0<br />

△ r bj = △ r−1 bj+1 −△ r−1 bj =<br />

b3<br />

△ r bjB n−r<br />

j (t). (3.17)<br />

r<br />

i=0<br />

Oglejmo si dva posebna primera: t = 0 <strong>in</strong> t = 1:<br />

d r<br />

dtrbn (0) =<br />

d r<br />

dt rbn (1) =<br />

<br />

r<br />

(−1)<br />

i<br />

r−i bj+i. (3.18)<br />

n!<br />

(n−r)! △rb0, (3.19)<br />

n!<br />

(n−r)! △rbn−r. (3.20)<br />

Torejjer-tiodvodBézierovekrivuljevrobnitočkiodvisenleodb0,b1,...,br<br />

oziroma kontrolnih točk bn,bn−1,...,bn−r. To je pomembno pri pogojih<br />

gladkosti za konstrukcijo zlepkov Bézierovih krivulj. Pri r = 0 dobimo lastnost<br />

<strong>in</strong>terpolacije v robnih točkah. V primeru r = 1 sledi, da je za b0 = b1


26 Bézierove krivulje<br />

vektor b1−b0 tangentni vektor na Bézierovo krivuljo v točki b0, oziroma pri<br />

parametru t = 0. Podobno, bn−1 <strong>in</strong> bn določata tangento v točki na krivulji<br />

z vrednostjo parametra t = 1.<br />

3.5 De Casteljauov algoritem <strong>in</strong> odvajanje<br />

Izrek 6. Odvode Bézierove krivulje lahko izrazimo z vmesnimi točkami, dobljenimi<br />

pri de Casteljauovem algoritmu,<br />

d r<br />

dt rbn (t) =<br />

i=0<br />

n!<br />

(n−r)! △r b n−r<br />

0 (t). (3.21)<br />

Dokaz: Dovolj je dokazati n−r j=0 △rbjB n−r<br />

j (t) = △rb n−r<br />

0 (t). Spomnimo<br />

se enačbe (3.18), <strong>in</strong> rezultat uporabimo za vmesne kontrolne točke,<br />

△ r b k r<br />

<br />

r<br />

j (t) = (−1)<br />

i<br />

r−i b k i+j (t).<br />

Torej velja:<br />

△ r b n−r<br />

0 (t) =<br />

r<br />

<br />

r<br />

(−1)<br />

i<br />

i=0<br />

r−i b n−r<br />

i (t)<br />

r<br />

<br />

r<br />

= (−1)<br />

i<br />

i=0<br />

r−i<br />

n−r<br />

j=0<br />

n−r<br />

r<br />

<br />

r<br />

= (−1)<br />

i<br />

r−i bi+jB n−r<br />

j (t)<br />

j=0<br />

n−r<br />

=<br />

j=0<br />

i=0<br />

△ r bjB n−r<br />

j (t).<br />

bi+jB n−r<br />

j (t)<br />

V izpeljavi smo uporabili (3.18) <strong>in</strong> (3.8).<br />

Gornji rezultat nudi dva nač<strong>in</strong>a izračuna r-tega odvoda Bézierove krivulje:<br />

(1) izračunaj vse r-te preme končne diference kontrolnih točk <strong>in</strong> jih uporabi<br />

kot nov Bézierov kontrolni poligon stopnje n−r, ter izračunaj vrednost pri<br />

parametru t.<br />

(2) izračunaj r-ti odvod Bézierove krivulje kot vmesni rezultat de Castel-<br />

jauovega algoritma. Točke b n−r<br />

i tvorijo stolpec v ustrezni de Casteljauovi<br />

shemi. Izračunamo r-te preme diference teh točk <strong>in</strong> jih pomnoˇzimo s konstanto<br />

n!<br />

(n−r)! .


3.6 Razcvet Bézierove krivulje 27<br />

V primeru r = 1 je<br />

d<br />

dt bn (t) = n[b n−1<br />

1 (t)−b n−1<br />

0 (t)].<br />

Vmesni točki b n−1<br />

0 (t) <strong>in</strong> b n−1<br />

1 (t) torej določata tangentni vektor v točki<br />

b n (t).<br />

3.6 Razcvet Bézierove krivulje<br />

Posploˇsimo de Casteljauov algoritem <strong>in</strong> izračunajmo n stolpcev de Casteljauove<br />

sheme tako, da v r-tem stolpcu v nasprotju z orig<strong>in</strong>alnim algoritmom<br />

ne računamo vrednosti pri začetni vrednosti parametra t, temveč pri neki<br />

novi vrednosti tr. V kubičnem primeru tako dobimo shemo:<br />

b0<br />

b1 b 1 0[t1]<br />

b2 b 1 1 [t1] b 2 0 [t1,t2]<br />

b3 b 1 2[t1] b 2 1[t1,t2] b 3 0[t1,t2,t3]<br />

Rezultat je točka b 3 0 [t1,t2,t3], ki je po drugi strani funkcija treh neodvisnih<br />

spremenljivk z def<strong>in</strong>icijskim območjem D ∈ R 3 .<br />

Def<strong>in</strong>icija: Funkcijo b[·,·,·] imenujemo razcvet Bézierove krivulje b 3 (t)<br />

(ang. blossom).<br />

VsploˇsnemjerazcvetzaBézierovokrivuljostopnjenpol<strong>in</strong>omnspremenljivk,<br />

ki slika R n → E 3 . Def<strong>in</strong>irajmo oznako t za r-kratno pojavitev t kot argument.<br />

Na primer: b[0 ,t ,1 ] = b[0,t,t].<br />

Izrek 7. Bézierove kontrolne točke lahko izrazimo kot vrednosti razcveta:<br />

br = b[0 ,1 ]. (3.22)<br />

Dokaz: Najprej izračunamo n−r korakov de Casteljauovega algoritma s<br />

parametrom 0, nato vzamemo trenutne vmesne točke b n−r<br />

i (0) za kontrolne<br />

točke Bézierove krivulje r-te stopnje, ter izračunamo točko na krivulji pri<br />

vrednosti parametra 1. Dobimo enačbo:<br />

r<br />

i=0<br />

b n−r<br />

i (0)B r i (1) = b[0 ,1 ] = br.


28 Bézierove krivulje<br />

Pri izračunu smo upoˇstevali, da se pri t = 0 kontrolne točke v de Casteljauovem<br />

algoritmu ohranjajo, le da je v vsakem koraku ena manj.<br />

De Casteljauov algoritem (3.7) lahko izrazimo v obliki razcveta:<br />

b[0 ,t ,1 ] = (1−t)b[0 ,t ,1 ]+<br />

+ tb[0 ,t ,1 ]. (3.23)<br />

Točko na Bézierovi krivulji dobimo pri b[t ], čemur pravimo tudi diagonalna<br />

lastnost. Razcvet je simetrična funkcija svojih argumentov, kar sledi iz<br />

Menelajevega izreka ((2.11),(2.12)). Razcvet je af<strong>in</strong>a funkcija glede na prvi<br />

argument. Za α+β = 1 je<br />

b[αr +βs,t2,...,tn] = αb[r,t2,...,tn]+βb[s,t2,...,tn]. (3.24)<br />

Ker je razcvet simetrična funkcija svojih argumentov, <strong>in</strong> z upoˇstevanjem<br />

dejstva, da so koraki de Casteljauovega algoritma ponavljanje l<strong>in</strong>earnih <strong>in</strong>terpolacij,<br />

je razcvet af<strong>in</strong>a preslikava v vseh svojih argumentih.<br />

Za razcvet Bézierove krivulje, def<strong>in</strong>irane nad <strong>in</strong>tervalom [a,b] dobimo preko<br />

posploˇsenega de Casteljauovega algoritma Bézierove točke bi kot vrednosti<br />

razcveta:<br />

bi = b[a ,b ]. (3.25)<br />

3.7 Delitev (subdivizija)<br />

Bézierovo krivuljo običajno def<strong>in</strong>iramo na <strong>in</strong>tervalu [0,1]. ˇ Zelimo najti Bézierov<br />

kontrolni poligon, ki bo določal prvotno krivuljo na <strong>in</strong>tervalu [0,c], c ≤<br />

1.<br />

Neznane Bézierove kontrolne točke ci dobimo s pomočjo pr<strong>in</strong>cipa razcveta.<br />

Zanima nas <strong>in</strong>terval [0,c], torej dobimo:<br />

ci = b[0 ,c ].<br />

Tako dobimo vsak cj z izvajanjem j korakov de Casteljauovega algoritma<br />

glede na c:<br />

To je formula delitve za Bézierove krivulje.<br />

cj = b j<br />

0 (c). (3.26)<br />

Zaradi simetrije so kontrolne točke glede na <strong>in</strong>terval [c,1] podane z b n−j<br />

j (c).<br />

Če izvedemo delitev pri vrednosti parametra t = 1/2, dobimo dva kontrolna<br />

poligona, ki opisujeta vsak en del orig<strong>in</strong>alne Bézierove krivulje. Nato<br />

izvedemo enakpostopeknaobehdelih, <strong>in</strong>takonadaljujemo. Pokkorakihdobimo<br />

2 k Bézierovih poligonov, ki odsekoma opisujejo prvotno krivuljo. Lane


3.8 Razcvet <strong>in</strong> polara 29<br />

b0<br />

c0<br />

c1<br />

b1<br />

c2<br />

c3=d0<br />

b2<br />

0 c 1<br />

Slika3.5: DelitevBézierovekrivulje: kontrolnapoligona{ci}<strong>in</strong>{di}določata<br />

odseka krivulje na <strong>in</strong>tervalih [0,c] ter [c,1].<br />

<strong>in</strong> Riesenfeld sta v [9] dokazala, da ti poligoni z naraˇsčanjem k konvergirajo<br />

po točkah proti orig<strong>in</strong>alni Bézierovi krivulji.<br />

Idejo delitve pa lahko uporabimo tudi za ekstrapolacijo Bézierove krivulje<br />

na <strong>in</strong>terval [1,d]. Naj bodo nove kontrolne točke glede na <strong>in</strong>terval [1,d]<br />

označene z dj. Potem je<br />

3.8 Razcvet <strong>in</strong> polara<br />

d1<br />

d2<br />

dj = b[1 ,d ] = b j<br />

n−j (d).<br />

Izvedimo en korak de Casteljauovega algoritma pri t = t1. Dobljene točke<br />

b 1 0 (t1),b 1 1 (t1), ...,b 1 n−1 (t1) lahko vzamemo za kontrolne točke krivulje p1(t),<br />

stopnje n−1. To lahko zapiˇsemo z razcvetom kot<br />

p1(t) = b[t1,t ].<br />

To lahko izrazimo tudi s pomočjo odvoda Bezierove krivulje b n (t):<br />

p1(t) =<br />

=<br />

n−1<br />

[(1−t1)bi +t1bi+1]B<br />

i=0<br />

n−1<br />

i (t)<br />

n−1<br />

[(1−t1)bi +t1bi+1 −b<br />

i=0<br />

1 i (t)]Bn−1<br />

n−1<br />

i (t)+ b<br />

i=0<br />

1 i (t)Bn−1 i (t)<br />

d3<br />

b3


30 Bézierove krivulje<br />

Dobimo:<br />

n−1<br />

= (t1 −t)<br />

i=0<br />

[bi+1 −bi]B n−1<br />

i (t)+<br />

p1(t) = b n (t)+ t1 −t<br />

n<br />

n−1<br />

i=0<br />

b 1 i(t)B n−1<br />

i (t).<br />

d<br />

dt bn (t). (3.27)<br />

Pol<strong>in</strong>omp1 imenujemo prva polara Bezierove krivuljeb n (t)gledenat1. Geometrijsko<br />

to pomeni naslednje: tangenta na Bezierovo krivuljo b n v točki<br />

b n (t) seka polaro p1 v točki p1(t). To velja v prostoru, ne le na ravn<strong>in</strong>i.<br />

V posebnem primeru, za kubično neravn<strong>in</strong>sko Bezierovo krivuljo to pomeni,<br />

da polara p1 leˇzi v pritisnjeni ravn<strong>in</strong>i na krivuljo v točki bn (t1). Če sekamo<br />

vse tangente na krivuljo s to pritisnjeno ravn<strong>in</strong>o, dobimo polaro. Torej je za<br />

tri različne parametre t1,t2,t3, vrednost razcveta b[t1,t2,t3] enaka preseku<br />

ustreznih pritisnjenih ravn<strong>in</strong>.<br />

V primeru t1 = 0 dobimo: b[0,t ] je Bezierova krivulja s kontrolnim<br />

poligonom b0,b1,...,bn−1. Podobno je b[1,t ] Bezierova krivulja,<br />

določena s kontrolnimi točkami b1,b2,...,bn.<br />

b n<br />

Slika 3.6: Polara p1 Bézierove krivulje b n pri t1 = 0.4, skupaj s tangentami<br />

na krivuljo.<br />

Čeponovimoprocestvorjenjapolare,pridemododruge polare: p1,2(t) =<br />

b[t1,t2,t ]. Z nadaljevanjem postopka pridemo do viˇsjih polar; n-ta polara<br />

Bezierove krivulje b n (t) je njen razcvet b[t1,t2,...,tn]. Za razcvet se<br />

uporablja tudi izraz polarna forma.<br />

p1


3.9 Matrična oblika Bézierove krivulje 31<br />

V razdelku 3.6 je prikazana rekurzivna tvorba razcveta. Za razcvet pa<br />

lahko poiˇsčemo tudi eksplicitne formule. Oglejmo si kubični primer:<br />

b[t1,t2,t3] = (1−t1)b[0,t2,t3]+t1b[1,t2,t3]<br />

= (1−t1)[(1−t2)b[0,0,t3]+t2b[0,1,t3]]+t1[(1−t2)b[0,1,t3]<br />

+t2b[1,1,t3]]<br />

= b[0,0,0](1−t1)(1−t2)(1−t3)+b[0,0,1][(1−t1)(1−t2)t3<br />

+(1−t1)t2(1−t3)+t1(1−t2)(1−t3)]+b[0,1,1]·<br />

·[t1t2(1−t3)+t1(1−t2)t3 +(1−t1)t2t3]+b[1,1,1]t1t2t3.<br />

Opazimo, da za t1 = t2 = t3 dobimo za koeficiente pri kontrolnih točkah<br />

kubične Bernste<strong>in</strong>ove bazne pol<strong>in</strong>ome. Vsake pol<strong>in</strong>omske funkcije več spremenljivk<br />

se ne da predstaviti kot razcvet neke Bezierove krivulje, saj mora<br />

biti simetrična ter multiaf<strong>in</strong>a funkcija svojih parametrov.<br />

3.9 Matrična oblika Bézierove krivulje<br />

Bézierove <strong>in</strong> druge pol<strong>in</strong>omske krivulje se da zapisati tudi v matrični obliki.<br />

Krivuljo oblike<br />

n<br />

x(t) = ciCi(t)<br />

lahko gledamo kot “skalarni produkt”:<br />

i=0<br />

x(t) = [c0 ... cn]<br />

Podobno lahko zapiˇsemo tudi:<br />

⎡ ⎤ ⎡<br />

C0(t)<br />

⎢ ⎥ ⎢<br />

⎣ . ⎦ = ⎣ .<br />

Cn(t)<br />

⎡ ⎤<br />

C0(t)<br />

⎢ ⎥<br />

⎣ . ⎦.<br />

Cn(t)<br />

m00 ... m0n<br />

mn0 ... mnn<br />

.<br />

⎤⎡<br />

t<br />

⎥⎢<br />

⎦⎣<br />

0<br />

.<br />

tn ⎤<br />

⎥<br />

⎦. (3.28)<br />

Matrika M = {mij} je transformacija med baznimi pol<strong>in</strong>omi Ci(t) ter standardno<br />

bazo prostora pol<strong>in</strong>omov t i .<br />

Izrek 8. Če so Ci Bernste<strong>in</strong>ovi pol<strong>in</strong>omi Bn i , potem ima matrika M elemente<br />

mij = (−1) j−i<br />

<br />

n j<br />

. (3.29)<br />

j i


32 Bézierove krivulje<br />

Dokaz: Razvijmo Bernste<strong>in</strong>ov bazni pol<strong>in</strong>om B n i po monomih tj ,<br />

B n i (t) =<br />

<br />

n<br />

t<br />

i<br />

i (1−t) n−i<br />

<br />

n<br />

= t<br />

i<br />

i<br />

n−i<br />

<br />

n−i<br />

(−1)<br />

k<br />

k=0<br />

n−i−k t n−i−k<br />

n−i<br />

<br />

n n−i<br />

= (−1)<br />

i k<br />

k=0<br />

n−i−k t n−k<br />

n<br />

<br />

n n−i<br />

= (−1)<br />

i n−j<br />

j=i<br />

j−i t j<br />

n<br />

<br />

n j<br />

= (−1)<br />

j i<br />

j=i<br />

j−i t j<br />

n<br />

<br />

n j<br />

= (−1)<br />

j i<br />

j−i t j .<br />

j=0<br />

Koeficienti v vsoti pri t j so koeficienti i-te vrstice matrike M.<br />

MatričnaoblikaBézierovekrivuljejematematičnoekvivalentnaBernste<strong>in</strong>-<br />

Bézierovi, pomembne razlike nastopijo pri implementaciji Bézierove krivulje<br />

na računalniku. Matrična oblika je primerna na sistemih, optimiziranih za<br />

hitro matrično multiplikacijo. Glavna prednost monomske oblike Bézierove<br />

krivulje pred Bernste<strong>in</strong>-Bézierovo je hitrost, saj je izračun krivulje s Hornerjevim<br />

algoritmomhitrejˇsi odde Casteljauovega algoritma. Po drugi strani pa<br />

je oblika Bézierove krivulje, zapisane v Bernste<strong>in</strong>ovi bazi, bolj geometrična<br />

ter numerično bolj stabilna od monomske oblike. Z vidika stabilnosti tako<br />

ni priporočljivo uporabljati pretvorbe med oblikama, monomska oblika pa<br />

zaradi numerične nestabilnosti ni posebno primerna za reprezentacijo krivulj<br />

<strong>in</strong> ploskev viˇsjih stopenj.<br />

3.10 Viˇsanje stopnje<br />

Pri oblikovanju s pomočjo Bézierovih krivulj se lahko zgodi, da s sprem<strong>in</strong>janjem<br />

kontrolnega poligona ne moremo dobiti ˇzeljene oblike. Ena od moˇznosti,<br />

ki je na voljo, je viˇsanje stopnje Bézierove krivulje. To pomeni dodajanje<br />

nove kontrolne točke tako, da ostane oblika krivulje nespremenjena, <strong>in</strong> da pri<br />

temohranimo parametrizacijo. Pri tem postopkubomo dobili nove kontrolne<br />

točke, ki opisujejo prvotno krivuljo, vendar pa se z večjim ˇstevilom kontrolnih<br />

točk ponuja tudi več svobode pri sprem<strong>in</strong>janju njene oblike. Postopek


3.10 Viˇsanje stopnje 33<br />

lahko nato nadaljujemo <strong>in</strong> tako postopoma povečujemo ˇstevilo kontrolnih<br />

točk krivulje.<br />

Poviˇsajmo stopnjoorig<strong>in</strong>alneBézierovekrivuljeb n za1. Označimoorig<strong>in</strong>alne<br />

kontrolne točke z bj, nove pa z b (1)<br />

j . Veljati mora:<br />

n<br />

j=0<br />

bj<br />

<br />

n<br />

t<br />

j<br />

j (1−t) n−j n+1<br />

=<br />

j=0<br />

b (1)<br />

j<br />

n+1<br />

Levo stran enačbe pomnoˇzimo z 1 = (1−t)+t,<br />

n<br />

j=0<br />

bj<br />

<br />

n<br />

[t<br />

j<br />

j (1−t) n−j+1 +t j+1 (1−t) n−j n+1<br />

] =<br />

<strong>in</strong> primerjamo koeficiente pri t j (1−t) n−j+1 :<br />

b (1)<br />

j<br />

Izraz poenostavimo <strong>in</strong> dobimo:<br />

<br />

n+1 n<br />

= bj<br />

j j<br />

j<br />

j=0<br />

+bj−1<br />

<br />

t j (1−t) n+1−j . (3.30)<br />

b (1)<br />

j<br />

n+1<br />

j<br />

<br />

n<br />

.<br />

j −1<br />

<br />

t j (1−t) n+1−j ,<br />

b (1)<br />

j = 1− j <br />

bj +<br />

n+1<br />

j<br />

n+1 bj−1, j = 0,1,...,n+1 . (3.31)<br />

( 1)<br />

b0=b 0<br />

( 1)<br />

b1 ( ) b3=b4 1<br />

b1<br />

Slika 3.7: Viˇsanje stopnje Bézierove krivulje.<br />

Nove kontrolne točke dobimo z odsekoma l<strong>in</strong>earno <strong>in</strong>terpolacijo pri vred-<br />

. Torej leˇzi novi kontrolni poligon v konveksni ovojnici<br />

nostih parametrov j<br />

n+1<br />

( 1)<br />

b2 ( 1)<br />

b3 b2


34 Bézierove krivulje<br />

orig<strong>in</strong>alnega kontrolnega poligona. Viˇsanje stopnje ima pomembno vlogo<br />

pri oblikovanju krivulj <strong>in</strong> prenosu podatkov med različnimi CAD sistemi.<br />

Pogosto algoritmi zahtevajo vnos več krivulj enakih stopenj, ali pa so optimizirani<br />

za točno določeno stopnjo. To lahko doseˇzemo z viˇsanjem stopnje.<br />

Naj P označuje kontrolni poligon Bézierove krivulje bn , EP pa kontrolni<br />

poligon po viˇsanju stopnje. Če izvedemo r korakov viˇsanja stopnje, dobimo<br />

zaporedje poligonov P,EP,...,E rP. Izrek 9. Kontrolni poligon E r P ima kontrolne točke<br />

b (r)<br />

i =<br />

n<br />

j=0<br />

bj<br />

n<br />

j<br />

r<br />

<br />

i−j<br />

n+r i<br />

, i = 0,1,...,n+r . (3.32)<br />

Opomba: Koeficient v vsoti (3.32) pri bj ima obliko hipergeometrijske<br />

porazdelitve s parametri (n,r,i).<br />

Dokaz: Dokazujemo z <strong>in</strong>dukcijo na r:<br />

za r = 1:<br />

b (1)<br />

i =<br />

n<br />

j=0<br />

bj<br />

Ostaneta le člena pri j = i <strong>in</strong> j = i−1:<br />

b (1)<br />

i = bi<br />

<br />

n 1<br />

i<br />

n+1<br />

i<br />

n<br />

j<br />

1<br />

+bi−1<br />

<br />

i−j<br />

n+1 i<br />

<br />

<br />

n 1<br />

i−1<br />

= (1− i<br />

n+1 )bi + i<br />

n+1 bi−1,<br />

<strong>in</strong> za r = 1 izrek velja. Za r = k naj velja:<br />

b (r)<br />

i =<br />

n<br />

j=0<br />

bj<br />

n<br />

j<br />

r<br />

i−j<br />

.<br />

n+r<br />

i<br />

n+1<br />

i


3.10 Viˇsanje stopnje 35<br />

Pri r = k +1 z uporabo enačbe (3.31) za b (k+1)<br />

i viˇsamo stopnjo krivulje<br />

b (k+1)<br />

i<br />

i<br />

=<br />

n+k +1 b(k) i−1 + i (k)<br />

1− b i<br />

n+k +1<br />

n<br />

<br />

i n<br />

= bj<br />

n+k +1 j<br />

j=0<br />

k<br />

i−1−j i<br />

+(1− n+k n+k +1<br />

i−1<br />

)<br />

n<br />

<br />

n<br />

bj<br />

j<br />

j=0<br />

k<br />

i−j<br />

n+k<br />

i<br />

n<br />

<br />

n<br />

<br />

i k!(i−1)!(n+k −i+1)!<br />

= bj<br />

j n+k +1 (i−j −1)!(k −i+j +1)!(n+k)!<br />

j=0<br />

+<br />

+ n+k +1−i k!i!(n+k −i)!<br />

<br />

n+k +1 (i−j)!(k−i+j)!(n+k)!<br />

n<br />

<br />

n<br />

= bj<br />

j<br />

k+1<br />

i−j<br />

.<br />

j=0<br />

n+k+1<br />

i<br />

Naj BP označuje Bézierovo krivuljo, ki jo določa kontrolni poligon P.<br />

Izrek 10. Poligoni ErP z naraˇsčajočimr konvergirajo po točkah proti krivulji<br />

BP, ki jo določajo:<br />

lim<br />

r→∞ ErP = BP. (3.33)<br />

Dokaz: Fiksirajmo vrednost parametra t. Za vsak r poiˇsčemo tak <strong>in</strong>deks<br />

i i, da je n+r najbliˇzje t. i glejmo kot parameter kontrolnega pol<strong>in</strong>oma<br />

n+r<br />

ErP. Ker s postopkom viˇsanja stopnje Bezierove krivulje naraˇsča tudiˇstevilo<br />

kontrolnih točk poligona Er i<br />

P, z naraˇsčajočim r izraz konvergira proti t.<br />

n+r<br />

Dokaˇzimo, da velja<br />

<br />

lim<br />

i<br />

n+r →t<br />

r<br />

i−j<br />

r+n i<br />

= t j (1−t) n−j . (3.34)<br />

Z uporabo Stirl<strong>in</strong>gove formule n! ≈ <br />

n n√<br />

2πn aproksimiramo izraz<br />

e<br />

r<br />

i−j<br />

r+n i<br />

<br />

≈<br />

<br />

ri(r +n−i)<br />

(i−j)(r−i+j)(r+n)<br />

Dobljeni izraz preoblikujemo v:<br />

<br />

ri(1− i<br />

r+n )<br />

(i−j)(1− i−j<br />

r )r<br />

r r i i (r +n−i) r+n−i<br />

(i−j) i−j (r −i+j) r−i+j (r +n) r+n.<br />

(1− i<br />

r+n )r+n−i ( i<br />

r+n )i<br />

( i−j<br />

r )r ( r .<br />

−1)r−i+j<br />

i−j


36 Bézierove krivulje<br />

Upoˇstevamo, da j <strong>in</strong> n v izrazu v limiti nastopata kot konstanti, ter poˇsljemo<br />

i<br />

n+r → t. Izraz pod korenom konvergira proti 1, ostanek pa proti tj (1−t) n−j .<br />

Sedaj izračunajmo limito:<br />

lim<br />

i<br />

n+r→t b (r)<br />

i<br />

= lim<br />

i<br />

n+r →t<br />

n<br />

j=0<br />

bj<br />

n<br />

j<br />

r<br />

<br />

i−j<br />

n+r i<br />

Zamenjamo vrstni red sumacije <strong>in</strong> limitiranja, ter upoˇstevamo enačbo (3.34):<br />

lim<br />

i<br />

n+r→t b (r)<br />

i =<br />

.<br />

n<br />

bjB n j(t) = [BP](t).<br />

j=0<br />

Slika 3.8: S ponavljanjem postopka viˇsanja stopnje kontrolni poligoni po<br />

točkah konvergirajo k Bézierovi krivulji, ki jo določajo.<br />

Poligoni E r P konvergirajo proti krivulji zelo počasi, zato konvergenca ni<br />

praktično uporabna, vendar pa pomaga pri teoretični raziskavi lastnosti Bezierovih<br />

krivulj.<br />

3.11 Manjˇsanje variacije<br />

Izrek 11. Naj bo R ravn<strong>in</strong>a v R 3 . Bézierova krivulja BP seka ravn<strong>in</strong>o R v<br />

kvečjemu toliko točkah, kot jo seka kontrolni poligon P.


3.12 Niˇzanje stopnje 37<br />

Dokaz: NajboRpoljubnaravn<strong>in</strong>a. Postopekviˇsanjastopnjejesestavljen<br />

iz odsekoma l<strong>in</strong>earnih <strong>in</strong>terpolacij. Odsekoma l<strong>in</strong>earne <strong>in</strong>terpolacije imajo<br />

lastnost manjˇsanja variacije (enačba (2.10)). Zato ima kontrolni poligon<br />

E r P po r korakih viˇsanja stopnje kvečjemu toliko presečiˇsč z ravn<strong>in</strong>o R kot<br />

kontrolnipoligonE r−1 P. Zaradikonvergence(3.33)kontrolnihpoligonovE r P<br />

k krivulji BP ima lastnost manjˇsanja variacije tudi Bézierova krivulja.<br />

Planarni poligon imenujemo konveksen, če ima kvečjemu dve presečiˇsči<br />

s poljubno premico.<br />

Posledica: Konveksni kontrolnipoligondoločakonveksno Bézierovokrivuljo.<br />

Trditev v obratni smeri ne drˇzi - obstajajo konveksne Bézierove krivulje z<br />

nekonveksnimi kontrolnimi poligoni.<br />

3.12 Niˇzanje stopnje<br />

Niˇzanje stopnje je aproksimacija dane Bézierove krivulje b n stopnje n z<br />

Bézierovo krivuljo niˇzje stopnje. Naj bodo kontrolne točke dane Bézierove<br />

krivulje b n označene z bi,i = 0,1,...,n, kontrolne točke iskane krivulje<br />

stopnje n−1, c n−1 , pa z ci,i = 0,1,...,n−1. Predpostavimo, da smo dobili<br />

krivuljo b n iz c n−1 s postopkom viˇsanja stopnje. Potem po (3.31) velja:<br />

bi = i<br />

n ci−1 + n−i<br />

n ci, i = 0,1,...,n. (3.35)<br />

Iz te enačbe lahko izrazimo dve rekurzivni formuli za izračun ci:<br />

ci = nbi −ici−1<br />

, i = 0,1,...,n−1, (3.36)<br />

n−i<br />

ci−1 = nbi −(n−i)ci<br />

, i = n,n−1,...,1. (3.37)<br />

i<br />

Obe enačbi sta ekstrapolacijski <strong>in</strong> numerično nestabilni. Enačba (3.36) jedobra<br />

aproksimacija vokolici točke b0, (3.37) pa vokolici bn. Zato seuporablja<br />

tudi postopek zdruˇzevanja: prvi del novega kontrolnega poligona izračunamo<br />

iz enačbe (3.36), drugi del pa iz (3.37).


38 Bézierove krivulje<br />

3.13 Ravn<strong>in</strong>ske Bézierove krivulje v neparametrični<br />

obliki<br />

Zanimajonaskrivulje veksplicitni obliki y = f(x), kjer jef pol<strong>in</strong>om, zapisan<br />

v bazi Bernste<strong>in</strong>ovih pol<strong>in</strong>omov:<br />

f(t) = b0B n 0(t)+b1B n 1(t)+···+bnB n n(t).<br />

Tu so bi realna ˇstevila.<br />

To lahko zapiˇsemo v parametrični obliki:<br />

<br />

x(t)<br />

b(t) = =<br />

y(t)<br />

<br />

t<br />

.<br />

f(t)<br />

Kersofunkcijskekrivuljepodmnoˇzicaparametričnih, imajokontrolnipoligon.<br />

Uporabimo lastnost ohranjanja premic (3.15) <strong>in</strong> dobimo:<br />

n<br />

<br />

j/n<br />

b(t) = B n j (t). (3.38)<br />

j=0<br />

Funkcijo f(t) = <br />

jbjB n j (t) imenujemo Bézierova funkcija. Kontrolni<br />

poligon je določen s točkami ( j<br />

n ,bj); j = 0,1,...,n. Ker so Bézierove<br />

krivulje <strong>in</strong>variantne za af<strong>in</strong>e reparametrizacije, lahko namesto <strong>in</strong>tervala [0,1]<br />

uporabljamo poljuben <strong>in</strong>terval [a,b]. Potem so abscise kontrolnih točk enake<br />

a + i<br />

(b − a); i = 0,1,...,n. Vse komponente Bézierove krivulje v<br />

n<br />

parametrični obliki so Bézierove funkcije.<br />

3.14 Integrali<br />

Kontrolni poligon P Bézierove funkcije določajo točke (j/n,bj). Poligonu P<br />

priredimo “ploˇsč<strong>in</strong>o” AP:<br />

bj<br />

AP = 1<br />

n+1<br />

n<br />

bj. (3.39)<br />

To je ena od delnih Riemannovih vsot za ploˇsč<strong>in</strong>o pod poligonom P.<br />

Izrek 12. Aproksimaciji za ploˇsč<strong>in</strong>i pod poligonoma P <strong>in</strong> EP, dobljenim pri<br />

viˇsanju stopnje, sta enaki:<br />

AP = AEP.<br />

j=0


3.15 Baricentrična oblika Bézierove krivulje 39<br />

Dokaz:<br />

AEP =<br />

=<br />

1 n+1<br />

<br />

j<br />

n+2 n+1 bj−1<br />

<br />

+ 1− j<br />

<br />

bj<br />

n+1<br />

1<br />

n+2<br />

= AP.<br />

Torej velja za vsak r ∈ N<br />

j=0<br />

n<br />

j=0<br />

n+2<br />

n+1 bj<br />

AE r P = AEP.<br />

Vemo, da poligoni E r P konvergirajo proti Bézierovi funkciji BP. Zato je<br />

lim<br />

r→∞ AEr 1<br />

P =<br />

0<br />

n<br />

j=0<br />

V posebnem primeru bi = δi,j velja<br />

1<br />

0<br />

bjB n j<br />

(x)dx = 1<br />

n+1<br />

n<br />

bj. (3.40)<br />

j=0<br />

B n i (x)dx = 1<br />

. (3.41)<br />

n+1<br />

3.15 Baricentrična oblika Bézierove krivulje<br />

Za laˇzjo posploˇsitev na <strong>ploskve</strong>, si oglejmoˇse malce drugačen zapis Bézierove<br />

krivulje.<br />

Naj bosta p1 <strong>in</strong> p2 različni točki na realni osi. Potem lahko vsako točko<br />

p na premici, ki jo določata, zapiˇsemo v obliki baricentričnih koord<strong>in</strong>at:<br />

p = up1 +vp2. Točko p identificiramo z u = (u,v), u+v = 1, točki p1 <strong>in</strong><br />

p2 pa z p1 = (1,0), p2 = (0,1). Realno os preslikamo v R 3 , kjer def<strong>in</strong>ira<br />

pol<strong>in</strong>om<br />

b(u) := b n (u) := <br />

i+j=n<br />

i,j≥0<br />

n!<br />

i!j! uiv j bi,j = <br />

i+j=n<br />

B n i,j(u)bi,j. (3.42)<br />

Če vstavimo t = v <strong>in</strong> bj = bi,j, i + j = n, dobimo Bézierovo krivuljo v<br />

klasični obliki. Iz baricentrične oblike se takoj vidita dve pomembni lastnosti<br />

Bézierovih krivulj: <strong>in</strong>variantnost za af<strong>in</strong>e transformacije parametra <strong>in</strong><br />

simetrija (vlogi u <strong>in</strong> v). Poloˇzaj točke p opiˇsemo s parametroma u <strong>in</strong> v,


40 Bézierove krivulje<br />

relativno glede na točki p1 <strong>in</strong> p2.<br />

De Casteljauov algoritem v baricentrični notaciji postane<br />

b r i,j (u) = ubr−1 i+1,j (u)+vbr−1 i,j+1 (u),<br />

r = 1,2,...,n ,<br />

i+j = n−r<br />

. (3.43)<br />

Iskana točka na krivulji je določena z b n 0,0(u).<br />

Tudi odvode lahko izrazimo s pomočjo baricentrične oblike.<br />

Vpeljimo standardno parametrizacijo u = u(t) = (u(t),v(t)) = (1 − t,t).<br />

Odvajamo na parameter t:<br />

Ker je du<br />

dt<br />

= −1 <strong>in</strong> dv<br />

dt<br />

d ∂ du ∂ dv<br />

b(u(t)) = b· + b·<br />

dt ∂u dt ∂v dt .<br />

= 1, dobimo:<br />

d ∂ ∂<br />

b(u(t)) = b− b. (3.44)<br />

dt ∂v ∂u<br />

Def<strong>in</strong>irajmo vektor d = p2 − p1 = (−1,1). Enačbo lahko zapiˇsemo kot<br />

smerni odvod glede na d:<br />

d<br />

dt b(u(t)) = Ddb(u). (3.45)<br />

Oglejmo si, kako je de Casteljauov algoritem povezan s smernimi odvodi.<br />

Namesto računanja vrednosti v točki u z u+v = 1, formalno izračunajmo<br />

vrednost v vektorju d = (−1,1). De Casteljauov algoritem (3.43) za ta<br />

primer postane:<br />

b r i,j (d) = −br−1 i+1,j (d)+br−1 i,j+1 (d).<br />

Vektorski argumenti v de Casteljauovem algoritmu torej pr<strong>in</strong>esejo preme<br />

diference:<br />

b r i,j(d) = △ r bj.<br />

Tako za prvi odvod velja:<br />

n−1<br />

Ddb(u(t)) = n<br />

j=0<br />

△bjB n−1<br />

j (t) = n <br />

i+j=n−1<br />

b 1 i,j (d)Bn−1 i,j (u). (3.46)<br />

Zadnji del enačbe pove, da smerni odvod dobimo z izvajanjem enega koraka<br />

de Casteljauovega algoritma glede na d <strong>in</strong> n−1 korakov glede na u. To se<br />

preprosto izrazi s pomočjo razcveta.<br />

Bézierove kontrolne točke lahko izrazimo kot vrednosti razcveta argumentov


3.16 Racionalne Bézierove krivulje 41<br />

p1 = (1,0) <strong>in</strong> p2 = (0,1). Kontrolne točke izrazimo v standardni, baricentrični<br />

<strong>in</strong> razcvetni notaciji:<br />

bj = bi,j = b[p <br />

1 ,p <br />

2 ], i+j = n.<br />

Tako zapiˇsemo vmesne točke de Casteljauovega algoritma:<br />

b r i,j (u) = b[p 1 ,p <br />

2 ,u ], i+j +r = n,<br />

točka na krivulji pa je dana z b[u ]. Vstavimo v enačbo (3.46), <strong>in</strong> dobimo:<br />

Z nadaljnim odvajanjem dobimo:<br />

Ddb(u) = Ddb[u ] = nb[u ,d].<br />

D r d b(u) = Dr d b[u ] =<br />

n!<br />

(n−r)! b[u ,d ]. (3.47)<br />

r-ti smerni odvod krivulje glede na d dobimo z r koraki de Casteljauovega<br />

algoritma za vektor ter n−r koraki algoritma za izračun točke. Vrstni red<br />

izvajanja korakov ni pomemben zaradi lastnosti simetričnosti argumentov<br />

razcveta.<br />

Če v enačbo (3.47) formalno vstavimo d = u, dobimo Eulerjevo enačbo:<br />

D r ub(u) =<br />

n!<br />

(n−r)! b[u ].<br />

Iz Eulerjeve enačbe se vidi povezanost odvajanja <strong>in</strong> izračuna točke, ko uporabimo<br />

baricentrično notacijo <strong>in</strong> razcvete.<br />

3.16 Racionalne Bézierove krivulje<br />

Racionalna Bézierova krivulja stopnje n v R 3 je projekcija Bézierove<br />

krivulje stopnje n iz R 4 na hiperravn<strong>in</strong>o w = 1.<br />

Izrek 13. Racionalna Bézierova krivulja stopnje n je podana z izrazom:<br />

n i=0 x(t) =<br />

wibiBn i (t)<br />

n j=0wjB n j (t) ; x(t),bi ∈ E 3 . (3.48)


42 Bézierove krivulje<br />

Dokaz: Projekcija preslika točko (x,y,z,w) → (x/w,y/w,z/w,1). Označimo<br />

(wx,wy,wz,w) z (wx,w). Fiksirajmo t. Točko na krivulji x(t) ∈ E 3<br />

lahko gledamo kot [x(t), 1] T ∈ E 4 . To je projekcija točke [w(t)x(t), w(t)] T ,<br />

ki leˇzi na Bézierovi krivulji v R 4 . Zadnjo komponento lahko izrazimo z:<br />

w(t) =<br />

Zato lahko zapiˇsemo:<br />

<br />

x(t)<br />

w(t) =<br />

1<br />

i=0<br />

n<br />

i=0<br />

wiB n i (t).<br />

x(t) n<br />

i=0 wiB n i (t)<br />

n<br />

i=0 wiB n i (t)<br />

Leva stran enačbe določa točko na Bézierovi krivulji stopnje n v R4 , zato<br />

velja:<br />

n<br />

<br />

pi<br />

B<br />

wi<br />

n n x(t) i=0<br />

i (t) =<br />

wiBn i (t)<br />

n i=0wiB n i (t)<br />

<br />

,<br />

kjer so pi točke v R3 . Iz prve komponente dobimo enačbo<br />

n<br />

n<br />

(t) = x(t) (t), (3.49)<br />

<strong>in</strong> izrazimo x(t):<br />

i=0<br />

piB n i<br />

i=0<br />

wiB n i<br />

x(t) = p0B n 0 (t)+p1B n 1 (t)+···+pnB n n (t)<br />

w0B n 0(t)+w1B n 1(t)+···+wnB n n (t); x(t),pi ∈ E 3 .<br />

Za pi vzemimo pi = wibi <strong>in</strong> izrek je dokazan.<br />

Koeficientom wi pravimo uteˇzi, točkam bi pa Bézierove kontrolne točke.<br />

Kontrolne točke tvorijo kontrolni poligon, ki je projekcija kontrolnega poligona<br />

[wibi, wi] T neracionalne Bézierove krivulje iz R4 . Če vzamemo vse uteˇzi<br />

enake1, jeimenovalecizraza(3.48)enak1, <strong>in</strong>dobimonavadno(neracionalno)<br />

Bézierovo krivuljo v R3 .<br />

Racionalne Bézierove krivulje s pozitivnimi uteˇzmi imajo podobne lastnosti<br />

kot ”neracionalne”: so af<strong>in</strong>o <strong>in</strong>variantne, <strong>in</strong>variantne za af<strong>in</strong>e transformacije<br />

parametra, imajo lastnosti simetrije, konveksne ovojnice, <strong>in</strong>terpolacije v robnih<br />

točkah ter manjˇsanja variacije.<br />

Uteˇzi wi običajno uporabljamo kot parametre oblike: s povečanjem enega<br />

od wi se krivulja pribliˇza ustreznemu bi. Pri tem je potrebno opozoriti, da<br />

z enako rastočimi wi krivulja ne konvergira proti kontrolnemu poligonu, ker<br />

skupni faktor povečanja uteˇzi nima vpliva na krivuljo.<br />

<br />

.


3.17 De Casteljauov algoritem za racionalne Bézierove krivulje 43<br />

b0<br />

b1<br />

Slika 3.9: Vpliv uteˇzi na obliko krivulje: Racionalni Bézierovi krivulji stopnje<br />

3 z istim kontrolnim poligonom <strong>in</strong> z enakimi uteˇzmi, razen uteˇzi w2.<br />

3.17 De Casteljauov algoritem za racionalne<br />

Bézierove krivulje<br />

Za izračun točke na racionalni Bézierovi krivulji lahko uporabimo de Casteljauov<br />

algoritemposebej zaˇstevec <strong>in</strong> za imenovalec, ter delimo dobljena rezultata.<br />

Ta metoda je enostavna <strong>in</strong> uč<strong>in</strong>kovita, vendar numerično nestabilna.<br />

Pri uteˇzeh zelo različnih velikosti, lahko za velike wi izračunane vmesne točke<br />

de Casteljauovega algoritma padejo izven konveksne ovojnice kontrolnega<br />

poligona {bi}, kar pr<strong>in</strong>ese izgubo natančnosti.<br />

Natančnejˇsa metoda projicira vmesne točke de Casteljauovega algoritma<br />

[wibi, wi] T v hiperravn<strong>in</strong>o w = 1. Tako pridemo do racionalnega de<br />

Casteljauovega algoritma:<br />

b2<br />

b r i<br />

i (t) = (1−t)wr−1<br />

wr b<br />

i<br />

r−1<br />

i +twr−1<br />

i+1<br />

wr b<br />

i<br />

r−1<br />

i+1 , (3.50)<br />

w r i (t) = (1−t)wr−1 i (t)+tw r−1<br />

i+1 (t). (3.51)<br />

Racionalni de Casteljauov algoritem ima lepo geometrijsko <strong>in</strong>terpretacijo.<br />

Standardni de Casteljauov algoritem uporablja razmerja treh točk (ratio),<br />

racionalni pa kriˇzno razmerje ˇstirih točk.<br />

Kriˇzno razmerje ˇstirih kol<strong>in</strong>earnih točk a,b,c,d je def<strong>in</strong>irano z:<br />

cr(a,b,c,d) := ratio(a,b,d)<br />

. (3.52)<br />

ratio(a,c,d)<br />

b3


44 Bézierove krivulje<br />

Vzemimo točko qr i (t) na premici med bri <strong>in</strong> bri+1 , tako da velja:<br />

ratio(b r i,q r i,b r i+1) = wr i+1<br />

wr . (3.53)<br />

i<br />

Potem iz (3.52) z uporabo (3.53) <strong>in</strong> (3.50) dobimo<br />

Pri r = 0 iz (3.53) sledi<br />

cr(b r i ,qr i ,br+1<br />

i ,b r i+1<br />

1−t<br />

) = , za vse r,i.<br />

t<br />

qi = q 0 i = wibi +wi+1bi+1<br />

,<br />

wi +wi+1<br />

kar omogoča uporabo točk qi kot parametrov oblike. S pomikanjem točk qi<br />

po ustreznih delih kontrolnega poligona se sprem<strong>in</strong>jajo tudi uteˇzi wi, kar ima<br />

neposreden vpliv na obliko krivulje.<br />

Tudi racionalni de Casteljauov algoritem lahko uporabimo za delitev<br />

krivulje. De Casteljauov algoritem deluje na prasliki racionalne Bézierove<br />

krivulje. Vmesne točke projiciramo na hiperravn<strong>in</strong>o w = 1 <strong>in</strong> dobimo kontrolna<br />

poligona za oba dela krivulje.<br />

Kontrolne točke <strong>in</strong> uteˇzi glede na <strong>in</strong>terval [0,t] so:<br />

glede na [t,1] pa:<br />

bi = b i 0 (t), wi = w i 0 , (3.54)<br />

bi = b i n−i (t), wi = w i n−i . (3.55)<br />

3.17.1 Odvodi racionalne Bézierove krivulje<br />

Zapiˇsimo enačbo (3.49) v preprostejˇsi obliki:<br />

Potem je<br />

Izrazimo ˙x(t):<br />

p(t) = w(t)x(t), p(t),x(t) ∈ R 3 .<br />

˙p(t) = d<br />

p(t) = ˙w(t)x(t)+w(t)˙x(t).<br />

dt<br />

˙x(t) = 1<br />

[˙p(t)− ˙w(t)x(t)]. (3.56)<br />

w(t)


3.18 Sestavljene Bézierove krivulje 45<br />

Za viˇsje odvode uporabimo Leibnitzovo pravilo, <strong>in</strong> dobimo<br />

p (r) r<br />

<br />

r<br />

(t) = w<br />

j<br />

(j) (t)x (r−j) (t),<br />

j=0<br />

<strong>in</strong> dobimo rekurzivno formulo za r-ti odvod racionalne Bézierove krivulje:<br />

r<br />

<br />

r<br />

w<br />

j<br />

(j) (t)x (r−j) (t)]. (3.57)<br />

x (r) (t) = 1<br />

w(t) [p(r) (t)−<br />

3.18 Sestavljene Bézierove krivulje<br />

Bézierove krivulje so močno orodje pri oblikovanju krivulj, vendar pa imajo<br />

nekaj omejitev. Za aproksimacijo kompleksnih oblik so potrebne Bézierove<br />

krivulje visokih stopenj, pri tempa <strong>in</strong>terpolirajo dane podatke samo vrobnih<br />

točkah. Reˇsitev je v uporabi sestavljenih Bézierovih krivulj; odsekoma<br />

pol<strong>in</strong>omskih krivulj (zlepkov) niˇzjih stopenj, ki v stičnih točkah <strong>in</strong>terpolirajo<br />

dane podatke.<br />

j=1<br />

3.18.1 Lokalni <strong>in</strong> globalni parametri<br />

Pri enostavnih Bézierovih krivuljah smo za def<strong>in</strong>icijsko območje vzeli <strong>in</strong>terval<br />

[0,1], kar nam je omogočala <strong>in</strong>variantnost Bézierovih krivulj za af<strong>in</strong>e transformacije<br />

parametra. Pri sestavljenih pol<strong>in</strong>omskih krivuljah so stvari bolj<br />

zapletene: za posamezne odseke lahko predpostavimo, da so preslikave <strong>in</strong>tervala<br />

[0,1], vendar pa je celotna krivulja preslikava druˇz<strong>in</strong>e <strong>in</strong>tervalov, katerih<br />

relativne dolˇz<strong>in</strong>e igrajo pomembno vlogo.<br />

Def<strong>in</strong>icija: Zlepek s je zvezna preslikava [u0,uL] → R 3 , ki pod<strong>in</strong>tervale<br />

u0 < u1 < ··· < uL slika tako, da se vsak pod<strong>in</strong>terval [ui,ui+1] preslika v<br />

pol<strong>in</strong>omsko krivuljo. Robnim točkam pod<strong>in</strong>tervalov ui pravimo vozli.<br />

Za vsako vrednost parametra u leˇzi ustrezna točka s(u) na krivulji s. Naj<br />

leˇzi vrednost u na <strong>in</strong>tervalu [ui,ui+1]. Za <strong>in</strong>terval [ui,ui+1] lahko vpeljemo<br />

lokalno parametrizacijo:<br />

t = u−ui<br />

ui+1 −ui<br />

= u−ui<br />

.<br />

△ui<br />

Pri obravnavanju celotne krivulje s uporabljamo globalni parameter u, posamezne<br />

odseke pa je pogosto preprosteje zapisati v obliki Bézierovih krivulj s


46 Bézierove krivulje<br />

pomočjo lokalne parametrizacije. Naj si označuje i-ti odsek krivulje s, točko<br />

na njem pa označimo z s(u) = si(t). Uvedba lokalnih koord<strong>in</strong>at vpliva tudi<br />

na odvajanje. Za u ∈ [ui,ui+1] s pomočjo veriˇznega pravila dobimo:<br />

ds(u)<br />

du<br />

= dsi(t) dt<br />

dt du<br />

1 dsi(t)<br />

= . (3.58)<br />

△ui dt<br />

Kontrolni poligoni posameznih odsekov sestavljene Bézierove krivulje s sestavljajo<br />

odsekoma Bézierov poligon za s.<br />

3.18.2 Pogoji gladkosti<br />

Posamezni odsekisestavljene Bézierovekrivuljessopol<strong>in</strong>omskekrivulje, zato<br />

so poljubnokrat zvezno odvedljive, problemi z odvedljivostjo lahko nastopajo<br />

kvečjemu na njihovih stičiˇsčih. Naj bosta s0 <strong>in</strong> s1 Bézierovi krivulji s kontrolnima<br />

poligonoma b0,b1,..., bn ter bn,bn+1,...,b2n. Ker sta robni točki<br />

enaki, ˇze imamo zveznost. Krivulji lahko gledamo posamezno, ali pa kot<br />

odseka sestavljene krivulje, def<strong>in</strong>irane kot preslikava <strong>in</strong>tervala [u0,u2] v R 3 .<br />

Odsek s0 je def<strong>in</strong>iran nad <strong>in</strong>tervalom [u0,u1], s1 pa nad [u1,u2]. Za trenutek<br />

predpostavimo, da sta obe krivulji loka globalne pol<strong>in</strong>omske krivulje b n (u),<br />

def<strong>in</strong>irane nad <strong>in</strong>tervalom [u0,u2]. V razdelku (3.7) smo videli, da morata biti<br />

poligona b0,b1,...,bn ter bn,bn+1,...,b2n rezultat postopka delitve, torej<br />

morajo biti njune kontrolne točke povezane z<br />

bn+i = b i n−i(t), i = 0,1,...,n; (3.59)<br />

kjer je t = (u2−u0)/(u1−u0) lokalna koord<strong>in</strong>ata u2 glede na <strong>in</strong>terval [u0,u1].<br />

Če premaknemo točko b2n, podani krivulji ne opisujeta več istega globalnega<br />

pol<strong>in</strong>oma, vendar se globalna pol<strong>in</strong>oma ujemata v vseh odvodih redov<br />

0,1,...,n−1 pri u = u1. Razlog jevtem, da kontrolna točka b2n nima vpliva<br />

naodvode, redovmanjˇsihodn, priu = u1. Podobnolahkospremenimob2n−r<br />

<strong>in</strong> ˇse vedno ohranimo zveznost vseh odvodov, redov 0,1,...,n−r−1.<br />

Izrek 14 (C r pogoj). Bézierovi krivulji, def<strong>in</strong>irani nad u0 ≤ u ≤ u1 ter<br />

u1 ≤ u ≤ u2, s kontrolnima poligonoma b0,b1,...,bn ter bn,bn+1,...,b2n,<br />

sta r-krat zvezno odvedljivi pri u = u1 natanko takrat, ko velja:<br />

bn+i = b i n−i(t), i = 0,1,...,r, (3.60)<br />

kjer je t = (u2−u0)/(u1−u0) lokalna koord<strong>in</strong>ata u2 glede na <strong>in</strong>terval [u0,u1].


3.18 Sestavljene Bézierove krivulje 47<br />

b0<br />

b1 b2<br />

u0 u1 u2 u3<br />

b3 b4<br />

b5<br />

Slika 3.10: Zvezno odvedljiva krivulja, sestavljena iztrehkubičnih Bézierovih<br />

krivulj.<br />

Torej de Casteljauov algoritem priskrbi tudi pogoje zveznosti med sosednjimi<br />

Bézierovimi krivuljami. Opozoriti je potrebno, da je enačba (3.60)<br />

le teoretično orodje <strong>in</strong> je ne smemo direktno uporabljati za konstrukcijo C r<br />

krivulj, saj bi lahko zaradi uporabeekstrapolacije priˇslo do numeričnih teˇzav.<br />

Izpeljimo ˇse bolj uporaben pogoj za r-kratno zvezno odvedljivost sestavljene<br />

Bézierove krivulje v točki u = u1. Za i = 0,1,...,r se morata i-ta<br />

odvoda na krivulji s0 ter s1 ujemati v točki u = u1. Upoˇstevamo ˇse veriˇzno<br />

pravilo (3.58), <strong>in</strong> dobimo:<br />

i i i i<br />

1 d s0(1) 1 d s1(0)<br />

=<br />

△u0 dti △u1 dti .<br />

Uporabimo enačbo (3.17), poenostavimo, <strong>in</strong> dobimo rezultat:<br />

1<br />

△u0<br />

i<br />

△ i <br />

1<br />

bn−i =<br />

△u1<br />

i<br />

b8<br />

b6<br />

b7<br />

b9<br />

△ i bn, i = 0,1,...,r. (3.61)<br />

Oglejmo si nekaj najbolj zanimivih primerov. Zveznost (C 0 zveznost)<br />

zagotovimo s tem, da imata obe Bézierovi krivulji skupno zadnjo/prvo kontrolno<br />

točko. Pri C 1 gladkosti dodatno zahtevamo, da velja<br />

1<br />

(bn −bn−1) =<br />

△u0<br />

1<br />

(bn+1 −bn). (3.62)<br />

△u1


48 Bézierove krivulje<br />

To pomeni, da morajo biti kontrolne točke bn−1,bn,bn+1 kol<strong>in</strong>earne, urejene,<br />

<strong>in</strong> v razmerju △u0 : △u1. Samo kol<strong>in</strong>earnost ˇse ni dovolj za zvezno<br />

odvedljivost, ker je le-ta odvisna od globalne parametrizacije.<br />

Poleg C-zveznosti nasvCAGDzanima tudi geometrijska zveznost (Gzveznost).<br />

TunezahtevamoC-gladkosti, ampakdakrivulja“izgledagladko”.<br />

Bolj natančno nas zanima zveznost geometrijskih lastnosti, ki niso odvisne<br />

od parametrizacije. G 0 zveznost je običajna C 0 zveznost. Pri G 1 zveznosti<br />

(poleg G 0 ) zahtevamo, da se smer tangente na krivuljo sprem<strong>in</strong>ja zvezno (ne<br />

pa nujno tudi njena velikost!). To pomeni, da namesto pogoja (3.62) dobimo<br />

pogoj za G 1 zveznost<br />

bn+1 −bn = α (bn −bn−1),<br />

kjer je α > 0 poljubno ˇstevilo. Ob tem zahtevamo ˇse urejenost (kol<strong>in</strong>earnih)kontrolnihtočkbn−1,bn,bn+1.<br />

Pogojjeneodvisenodparametrizacije<br />

krivulje. V sploˇsnem lahko zapiˇsemo: krivulja je geometrijsko zvezna G r<br />

natanko tedaj, ko je v neki parametrizaciji<br />

C r zvezna.<br />

Pri G 2 zveznosti zahtevamo zvezno sprem<strong>in</strong>janje ukrivljenosti.


Poglavje 4<br />

Bézierove <strong>ploskve</strong><br />

4.1 Bézierove <strong>ploskve</strong> iz tenzorskega produkta<br />

Tenzorski produkt funkcij g <strong>in</strong> h je def<strong>in</strong>iran z f(u,v) := g(u)h(v). Tako<br />

dobljeno ploskev f imenujemo ploskev iz tenzorskega produkta.<br />

4.1.1 Bil<strong>in</strong>earna <strong>in</strong>terpolacija<br />

Podobno, kot smo razvili teorijo Bézierovih krivulj na osnovi l<strong>in</strong>earne <strong>in</strong>terpolacije,<br />

lahko osnujemo Bézierove <strong>ploskve</strong> iz tenzorskega produkta na bil<strong>in</strong>earni<br />

<strong>in</strong>terpolaciji. Naj bodo b0,0,b0,1,b1,0,b1,1 različne točke v E3 . Mnoˇzico<br />

točk x, oblike:<br />

1 1<br />

x(u,v) = bi,jB 1 i(u)B 1 j(v), (4.1)<br />

i=0<br />

j=0<br />

imenujemo hiperbolični paraboloid skozi podane točke bi,j. To lahko<br />

zapiˇsemo v matrični obliki:<br />

x(u,v) = 1−u u <br />

b0,0 b0,1 1−v<br />

. (4.2)<br />

b1,0 b1,1 v<br />

Ker je ploskev x(u,v) v (4.1) l<strong>in</strong>earna v u <strong>in</strong> v ter <strong>in</strong>terpolira podane točke,<br />

ploskev x imenujemo bil<strong>in</strong>earni <strong>in</strong>terpolant.<br />

Bil<strong>in</strong>earni <strong>in</strong>terpolant lahko gledamo kot preslikavo enotskega kvadrata<br />

0 ≤ u,v ≤ 1 v ploskev x(u,v). Premica vdomeni, vzporedna koord<strong>in</strong>atni osi,<br />

se preslika v krivuljo na ploskvi, ki ji pravimo izoparametrična krivulja.<br />

49


50 Bézierove <strong>ploskve</strong><br />

b01<br />

b00<br />

Slika 4.1: Bil<strong>in</strong>earna <strong>in</strong>terpolacija: hiperbolični paraboloid, def<strong>in</strong>iran s<br />

točkami bi,j.<br />

Vseizoparametričnekrivuljehiperboličnegaparaboloidasoravnečrte(odseki<br />

premic).<br />

Zaizračuntočkenabil<strong>in</strong>earnem<strong>in</strong>terpolantulahkopolegdirektnemetode<br />

uporabimo dvo-stopenjski proces, ki je osnova za <strong>in</strong>terpolacijo s pomočjo<br />

tenzorskega produkta. Najprej izračunamo vmesni točki:<br />

nato pa zdruˇzimo<br />

b 0,1<br />

0,0 = (1−v)b0,0 +vb0,1,<br />

b 0,1<br />

1,0 = (1−v)b1,0 +vb1,1, (4.3)<br />

x(u,v) = b 1,1<br />

0,0(u,v) = (1−u)b 0,1<br />

0,0 +ub 0,1<br />

1,0.<br />

Ideja je v tem, da najprej izračunamo koeficiente izoparametrične krivulje<br />

v = konst, nato pa ˇse vrednost točke na izoparametrični krivulji pri u. Do<br />

istega rezultata pridemo tudi z uporabo postopka v drugi smeri (z začetkom<br />

na u = konst).<br />

Ker je l<strong>in</strong>earna <strong>in</strong>terpolacija af<strong>in</strong>a preslikava, <strong>in</strong> ker smo uporabili l<strong>in</strong>earno<br />

<strong>in</strong>terpolacijo v u <strong>in</strong> v smeri, se za bil<strong>in</strong>earno <strong>in</strong>terpolacijo uporablja<br />

tudi izraz biaf<strong>in</strong>a preslikava.<br />

b11<br />

b10


4.1 Bézierove <strong>ploskve</strong> iz tenzorskega produkta 51<br />

4.1.2 De Casteljauov algoritem<br />

Bézierove krivulje smo s pomočjo de Casteljauovega algoritma dobili s ponavljanjem<br />

l<strong>in</strong>earnih <strong>in</strong>terpolacij; do ploskev pa bomo priˇsli s ponavljanjem<br />

bil<strong>in</strong>earnih <strong>in</strong>terpolacij. Naj bo podan pravokoten seznam točk bi,j; 0 ≤<br />

i,j ≤ n ter vrednosti parametrov (u,v). Točke bi,j so osnova za kontrolno<br />

mreˇzo, odsekoma bil<strong>in</strong>earno ploskev, posploˇsitev kontrolnega poligona pri<br />

Bézierovih krivuljah. Algoritem generira točko na ploskvi, ki jo določa kontrolna<br />

mreˇza (oz. kontrolne točke bi,j).<br />

Za r = 1,2,...,n ter i,j = 0,1,...,n−r izračunaj:<br />

b r,r<br />

i,j = 1−u u b r−1,r−1<br />

i,j b r−1,r−1<br />

i,j+1<br />

b r−1,r−1<br />

<br />

1−v<br />

, (4.4)<br />

v<br />

i+1,j b r−1,r−1<br />

i+1,j+1<br />

kjer je b 0,0<br />

i,j = bi,j. b n,n<br />

0,0 je točka pri vrednosti parametrov (u,v) na Bézierovi<br />

ploskvi bn,n .<br />

Tako zapisani algoritem deluje za (n+1)×(n+1) mreˇzo točk. S konstruktivnim<br />

algoritmom generiramo ploskev; podobno kot smo priˇsli do Bézierove<br />

krivulje. V naslednjem razdelku bomo do enakega rezultata priˇsli s pomočjo<br />

pristopa preko tenzorskega produkta. To nam bo olajˇsalo tudi obravnavo<br />

ploskev, ki so različnih stopenj v u <strong>in</strong> v. Direktni de Casteljauov algoritem<br />

se da prirediti tudi za tak primer, tako, da se najprej izvede algoritem na<br />

“kvadratni kontrolni podmreˇzi”, nato pa se uporabi ˇse de Casteljauov algoritem<br />

za Bézierove krivulje.<br />

4.1.3 Tenzorski produkt Bézierovih krivulj<br />

Osnovna <strong>in</strong>tuitivna def<strong>in</strong>icija <strong>ploskve</strong> je naslednja: ploskev je sled krivulje,<br />

ki se giblje po prostoru, <strong>in</strong> pri tem sprem<strong>in</strong>ja svojo obliko. Na podlagi te<br />

ideje pridemo do ploskev, nastalih iz tenzorskega produkta.<br />

Naj bo krivulja, ki se giblje po prostoru, Bézierova krivulja konstantne<br />

stopnje m (to je velika zoˇzitev razreda ploskev, ki izhajajo iz tenzorskega<br />

produkta). V vsakem trenutku premikajočo se krivuljo določa mnoˇzica kontrolnih<br />

točk, od katerih se vsaka giblje skozi prostor po krivulji. Naˇsa naslednja<br />

predpostavka je, da so vse krivulje, po katerih se gibljejo kontrolne točke,<br />

Bézierove krivulje iste stopnje n.<br />

Formalno lahko zapiˇsemo to takole: osnovna krivulja naj bo<br />

b m m<br />

(u) = (u), (4.5)<br />

i=0<br />

biB m i


52 Bézierove <strong>ploskve</strong><br />

kontrolne točke pa naj potujejo po Bézierovi krivulji<br />

bi = bi(v) =<br />

n<br />

j=0<br />

bi,jB n j<br />

Enačbi zdruˇzimo, <strong>in</strong> dobimo točko b m,n (u,v) na ploskvi b m,n :<br />

b m,n (u,v) =<br />

m<br />

i=0<br />

n<br />

j=0<br />

bi,jB m i (u)Bn j<br />

(v). (4.6)<br />

(v). (4.7)<br />

Vtejnotacijiimaorig<strong>in</strong>alnaBézierovakrivuljab m (u)kontrolnetočkebi,0; i =<br />

0,1,...,m.<br />

0<br />

4<br />

3<br />

2<br />

1<br />

0<br />

0<br />

1<br />

2<br />

1<br />

3<br />

2<br />

4<br />

3<br />

Slika 4.2: Tenzorska Bézierova ploskev stopnje (2,2). Kontrolne točke so<br />

označene z večjimi pikami.<br />

Def<strong>in</strong>icija Bézierove <strong>ploskve</strong> (4.7) ter def<strong>in</strong>icija preko de Casteljauovega<br />

algoritma sta ekvivalentni. Pri izpeljavi smo za začetno krivuljo uporabili<br />

izoparametrično krivuljo v = 0; na podoben nač<strong>in</strong> bi lahko uporabili tudi<br />

preostale tri robne krivulje.<br />

4


4.1 Bézierove <strong>ploskve</strong> iz tenzorskega produkta 53<br />

Poljubna izoparametrična krivulja ˆv = konst Bézierove <strong>ploskve</strong> bm,n je<br />

Bézierova krivulja stopnje m s parametrom u. Njene kontrolne točke dobimo<br />

z izračunom točk kontrolne mreˇze pri ˆv:<br />

b 0n<br />

i,0 (ˆv) =<br />

n<br />

j=0<br />

bi,jB n j<br />

(ˆv); i = 0,1,...,m.<br />

Koeficiente izoparametrične krivulje (kontrolne točke) dobimo z izvajanjem<br />

m + 1 de Casteljauovih algoritmov (za krivuljo). Točko na ploskvi lahko<br />

izračunamo z izvajanjem ˇse enega de Casteljauovega algoritma.<br />

Na enak nač<strong>in</strong> lahko obravnavamo tudi izoparametrične krivulje u =<br />

konst.<br />

Tu omenimo ˇse racionalne Bézierove tenzorske <strong>ploskve</strong>:<br />

<br />

x(u,v) =<br />

i<br />

<br />

i<br />

j wi,jbi,jB m i (u)Bn j (v)<br />

<br />

j wi,jB m i (u)Bn j (v)<br />

, (4.8)<br />

kjer so wi,j uteˇzi kontrolnih točk bi,j. Dobimo jih kot projekcijo tenzorskih<br />

Bézierovih ploskev iz R 4 . Racionalne tenzorske <strong>ploskve</strong> za razliko od krivuljnega<br />

primera več<strong>in</strong>oma nimajo lastnosti ploskev, nastalih iz tenzorskega<br />

produkta.<br />

4.1.4 Lastnosti tenzorskih Bézierovih ploskev<br />

Zaradi narave tenzorskega produkta več<strong>in</strong>a lastnosti tenzorskih Bézierovih<br />

ploskev sledi iz lastnosti Bézierovih krivulj.<br />

Invariantnost za af<strong>in</strong>e preslikave: Direktni de Casteljauov algoritem sestavlja<br />

ponavljanje bil<strong>in</strong>earnih (<strong>in</strong> mordaˇse l<strong>in</strong>earnih) <strong>in</strong>terpolacij, ki so af<strong>in</strong>o<br />

<strong>in</strong>variantne; zato je af<strong>in</strong>o <strong>in</strong>variantno tudi njihovo komponiranje. Tenzorske<br />

Bézierove <strong>ploskve</strong> pa niso projektivno <strong>in</strong>variantne. Tako ne moremo s projekcijo<br />

preslikati kontrolnih točk <strong>in</strong> nato generirati <strong>ploskve</strong>; temveč moramo<br />

najprej generirati ˇzeljene točke, <strong>in</strong> jih nato preslikati s projekcijo, kar je v<br />

primeru, da je potrebno izračunati veliko ˇstevilo točk, lahko računsko precej<br />

zahteven postopek.<br />

Lastnost konveksne ovojnice: Za 0 ≤ u,v ≤ 1 so členi Bm i (u)Bn j(v)<br />

nenegativni, velja pa tudi<br />

n m<br />

(v) ≡ 1. (4.9)<br />

j=0<br />

i=0<br />

B m i (u)Bn j


54 Bézierove <strong>ploskve</strong><br />

Robne krivulje: Robne krivulje <strong>ploskve</strong> b m,n so Bézierove krivulje, ki jih<br />

določajo robni poligoni kontrolne mreˇze. Tako tenzorska ploskev <strong>in</strong>terpolira<br />

“kotne” točke kontrolne mreˇze.<br />

Lastnost manjˇsanja variacije: Te lastnosti tenzorske Bézierove <strong>ploskve</strong><br />

ne prevzamejo od Bézierovih krivulj, saj ni dobro def<strong>in</strong>irana za ploskovni<br />

primer.<br />

4.1.5 Viˇsanje stopnje<br />

TenzorskoBézierovoploskevstopenj(m,n)ˇzelimozapisatikotploskevstopenj<br />

(m+1,n). Torej moramo najti kontrolne točke b (1,0)<br />

i,j , tako, da velja<br />

b m,n (u,v) =<br />

n<br />

j=0<br />

m+1<br />

<br />

i=0<br />

b (1,0)<br />

i,j Bm+1<br />

i (u)<br />

<br />

B n j<br />

(v). (4.10)<br />

Členi v oklepaju predstavljajo natanko n + 1 primerov viˇsanja stopnje v<br />

krivuljnem primeru. Enačbe reˇsimo z uporabo (3.31):<br />

b (1,0)<br />

i,j = 1− i <br />

bi,j+<br />

m+1<br />

i<br />

m+1 bi−1,j; i = 0,1,...,m+1; j = 0,1,...,n.<br />

(4.11)<br />

Tenzorski ploskvi torej zviˇsamo stopnjo v u-smeri z obravnavanjem stolpcev<br />

kontrolne mreˇze kot Bézierovih poligonov krivulj stopnje m, ter viˇsanja stopnje<br />

vsake od njih.<br />

Viˇsanje stopnje v v-smeri teče povsem analogno, viˇsanje stopenj v obeh<br />

smereh pa lahko izvajamo postopoma, recimo najprej v u, nato pa ˇse v vsmeri,<br />

ali pa obratno. Novo kontrolno mreˇzo lahko najdemo tudi v enem<br />

koraku:<br />

b (1,1)<br />

i,j = i<br />

m+1<br />

1− i<br />

m+1<br />

bi−1,j−1 bi−1,j<br />

bi,j−1 bi,j<br />

j<br />

n+1<br />

1− j<br />

<br />

n+1<br />

, (4.12)<br />

za i = 0,1,...,m+1 ter j = 0,1,...,n+1. Novo kontrolno mreˇzo dobimo<br />

iz stare z odsekoma bil<strong>in</strong>earno <strong>in</strong>terpolacijo.<br />

4.1.6 Odvajanje<br />

V primeru Bézierovih krivulj se je odvajanje preneslo na diferenciranje kontrolnih<br />

točk, podobno pa velja tudi za tenzorske <strong>ploskve</strong>. Obravnavali bomo


4.1 Bézierove <strong>ploskve</strong> iz tenzorskega produkta 55<br />

b0,0<br />

H1,0L<br />

b1,0 b1,0<br />

H1,0L<br />

b2,0 b2,0<br />

Slika 4.3: Viˇsanje stopnje tenzorske Bézierove <strong>ploskve</strong>.<br />

parcialne odvode na u <strong>in</strong> v. Parcialni odvod je tangentni vektor na izoparametrično<br />

krivuljo na ploskvi:<br />

∂<br />

∂u bm,n n<br />

<br />

m ∂<br />

(u,v) = bi,jB<br />

∂u<br />

m i (u)<br />

<br />

B n j (v).<br />

j=0<br />

Izrazvoklepajujeodvisensamoodu, zatolahkouporabimoenačbozaodvod<br />

Bézierove krivulje (3.16):<br />

∂<br />

∂u bm,n (u,v) = m<br />

n m−1 <br />

j=0<br />

i=0<br />

i=0<br />

△ 1,0 bi,jB m−1<br />

i (u)B n j (v).<br />

Oznaka △ 1,0 bi,j = bi+1,j − bi,j pomeni, da izvajamo diferenco v smeri u.<br />

Podobno dobimo tudi parcialni odvod tenzorske <strong>ploskve</strong> na v:<br />

∂<br />

∂v bm,n (u,v) = n<br />

m n−1<br />

i=0<br />

j=0<br />

△ 0,1 bi,jB n−1<br />

j (v)B m i (u).


56 Bézierove <strong>ploskve</strong><br />

Spet smo problem za tenzorsko ploskev prevedli na več podproblemov za<br />

Bézierove krivulje: za izračun parcialnega odvoda na u vzamemo vse stolpce<br />

kontrolne mreˇze kot generatorje Bézierovih krivulj, izračunamo njihove odvode<br />

pri parametru u, nato pa izračunane odvode vzamemo za koeficiente<br />

Bézierove krivulje stopnje n, ter izračunamo njeno vrednost pri v.<br />

Z nadaljevanjem postopka pridemo do parcialnih odvodov viˇsjih redov:<br />

kjer velja<br />

∂ r<br />

∂u rbm,n (u,v) =<br />

∂ s<br />

∂v sbm,n (u,v) =<br />

m!<br />

(m−r)!<br />

n!<br />

(n−s)!<br />

n m−r <br />

i=0<br />

j=0<br />

△ r,0 bi,jB m−r<br />

i (u)B n j(v),<br />

j=0 i=0<br />

m n−s<br />

△ 0,s bi,jB n−s<br />

j (v)B m i (u), (4.13)<br />

△ r,0 bi,j = △ r−1,0 bi+1,j −△ r−1,0 bi,j,<br />

△ 0,s bi,j = △ 0,s−1 bi,j+1 −△ 0,s−1 bi,j.<br />

Enostavno izračunamo tudi meˇsane odvode<br />

∂ r+s<br />

∂u r ∂v sbm,n (u,v) =<br />

m!n!<br />

(m−r)!(n−s)!<br />

<br />

m−r n−s<br />

i=0<br />

j=0<br />

△ r,s bi,jB m−r<br />

i (u)B n−s<br />

j (v).<br />

(4.14)<br />

Opozoriti je potrebno, da so koeficienti △ r,s bi,j vektorji. Oglejmo si ˇse parcialni<br />

odvod tenzorske Bézierove <strong>ploskve</strong> preko roba u = 0. Zapiˇsimo enačbo<br />

(4.13) pri u = 0:<br />

∂ r<br />

∂u rbm,n (0,v) = m!<br />

(m−r)!<br />

n<br />

j=0<br />

△ r,0 b0,jB n j<br />

(v). (4.15)<br />

Torej je r-ti parcialni odvod preko roba tenzorske <strong>ploskve</strong> odvisen samo od<br />

r + 1 stolpcev Bézierovih kontrolnih točk poleg tega roba. Podobno velja<br />

tudi za odvode preko preostalih robov tenzorske <strong>ploskve</strong>. To bomo uporabili<br />

za izpeljavo pogojev zvezne odvedljivosti med zlepljenimi tenzorskimi<br />

ploskvami.<br />

4.1.7 Pogoji gladkosti<br />

Naj bosta x(u,v) <strong>in</strong> y(u,v) tenzorski ploskvi, def<strong>in</strong>irani na [uI−1,uI]×<br />

[vJ,vJ+1] ter [uI,uI+1] × [vJ,vJ+1] s kontrolnima mreˇzama {bi,j; 0 ≤ i ≤


4.1 Bézierove <strong>ploskve</strong> iz tenzorskega produkta 57<br />

m, 0 ≤ j ≤ n} ter {bi,j; m ≤ i ≤ 2m, 0 ≤ j ≤ n}. Na skupnem robu<br />

imata ploskvi iste kontrolne točke, ki določajo skupni rob, ki je pol<strong>in</strong>omska<br />

Bézierova krivulja. Ploskvi sta r-krat zvezno odvedljivi preko skupnega roba<br />

x(uI,v) = y(uI,v), če se na robu ujemajo vsi parcialni odvodi na u do reda<br />

r:<br />

∂r ∂urx(u,v) = u=uI<br />

∂r<br />

∂ury(u,v) . (4.16)<br />

u=uI<br />

Uporabimo enačbo (4.15) za odvode preko roba tenzorske Bézierove <strong>ploskve</strong>.<br />

Enačbo moramo s pomočjo veriˇznega pravila prevesti iz lokalnih v globalne<br />

koord<strong>in</strong>ate, podobno kot pri sestavljenih krivuljah (enačba (3.61)):<br />

1<br />

△uI−1<br />

r n<br />

△ r,0 bm−r,jB n r n<br />

1<br />

j(v) = △<br />

△uI<br />

r,0 bm,jB n j(v), (4.17)<br />

j=0<br />

kjer je △uI = uI+1−uI. Ker so B n j<br />

koeficiente:<br />

1<br />

△uI−1<br />

r<br />

△ r,0 <br />

1<br />

bm−r,j =<br />

△uI<br />

j=0<br />

(v) l<strong>in</strong>earno neodvisni, lahko primerjamo<br />

r<br />

△ r,0 bm,j; j = 0,1,...,n.<br />

To pa so točno C r pogoji (3.61) za Bézierove krivulje, uporabljeni na vseh<br />

n+1 vrsticah kontrolnih točk sestavljene kontrolne mreˇze. Tako smo priˇsli<br />

do pogoja r-kratne zvezne odvedljivosti:<br />

Izrek 15. Sosednji tenzorski Bézierovi ploskvi sta r-krat zvezno odvedljivi<br />

preko skupnega roba natanko takrat, ko so vse vrstice kontrolnih točk njunih<br />

kontrolnih mreˇz kontrolni poligoni odsekoma Bézierovih krivulj tipa C r .<br />

V primeru r = 1 tako dobimo pogoj, da morajo biti za vse j poligoni iz<br />

točk b0,j,b1,j,..., b2m,j kontrolni poligoni odsekoma Bézierove krivulje tipa<br />

C 1 . Zato morajo biti točke bm−1,j,bm,j <strong>in</strong> bm+1,j kol<strong>in</strong>earne <strong>in</strong> v razmerju<br />

(ratio) △uI : △uI+1. Ratio mora biti enak za vse j.<br />

4.1.8 Delitev (subdivizija) tenzorskih ploskev<br />

V primeru krivulj je de Casteljauov algoritem generiral točke, poleg tega<br />

pa je bil uporaben tudi pri delitvi krivulje. Podobno velja tudi v primeru<br />

tenzorskih ploskev. Naj bo def<strong>in</strong>icijsko območje (pravokotnik) tenzorske<br />

Bézierove <strong>ploskve</strong> z daljico u = û razdeljen v dva pravokotnika. Ta daljica<br />

se preslika v izoparametrično krivuljo na ploskvi, ki tako razdeli ploskev na<br />

dva dela. Radi bi dobili kontrolni mreˇzi podploskev. Ker sta podploskvi del


58 Bézierove <strong>ploskve</strong><br />

Slika 4.4: Zvezno odvedljiva sestavljena tenzorska Bézierova ploskev.<br />

globalne Bézierove tenzorske <strong>ploskve</strong>, sta C n na skupnem robu, torej morajo<br />

vse vrstice kontrolnih točk tvoriti kontrolne poligone odsekoma Bézierovih<br />

krivulj n-te stopnje razreda C n . Te krivulje so med seboj povezane s pogoji<br />

postopka delitve iz krivuljnega primera (razdelek (3.7)).<br />

Torej je algoritem delitve naslednji: vse vrstice kontrolne mreˇze vzamemo<br />

za kontrolne poligone Bézierovih krivulj. Vsako od krivulj razdelimo pri<br />

u = û. Dobljene kontrolne točke tvorijo kontrolni mreˇzi razdeljene <strong>ploskve</strong>.<br />

Delitevvzdolˇz izoparametrične krivulje v = ˆv potekapodobno; zzaporednim<br />

postopkom delitve vzdolˇz u = û ter v = ˆv pa lahko ploskev razdelimo v<br />

ˇstiri pod<strong>ploskve</strong>.


Poglavje 5<br />

Trikotne Bézierove krpe<br />

5.1 Baricentrične koord<strong>in</strong>ate <strong>in</strong> l<strong>in</strong>earna <strong>in</strong>terpolacija<br />

Baricentrične koord<strong>in</strong>ate je vpeljal F. Moebius leta 1827. Poljubne tri nekol<strong>in</strong>earnetočkea,b,c<br />

∈ E 2 def<strong>in</strong>irajobaričentričnikoord<strong>in</strong>atnisistemvravn<strong>in</strong>i.<br />

Vsako točkop ∈ E 2 lahkozapiˇsemo kotbaricentrično komb<strong>in</strong>acijo točka,b,c<br />

z:<br />

p = ua+vb+wc, u+v +w = 1. (5.1)<br />

Def<strong>in</strong>icija: Koeficiente u := (u,v,w) imenujemo baricentrične koord<strong>in</strong>ate<br />

točke p glede na a,b,c. Pogosto enačimo koord<strong>in</strong>ate točke kar s točko<br />

u. Točke znotraj trikotnika a,b,c imajo pozitivne baricentrične koord<strong>in</strong>ate,<br />

ostale točke pa imajo kakˇsno koord<strong>in</strong>ato negativno.<br />

a<br />

c<br />

p<br />

Slika 5.1: Baricentrične koord<strong>in</strong>ate: trikotnik a,b,c določa koord<strong>in</strong>atni sistem<br />

v ravn<strong>in</strong>i. Točka p ima baricentrične koord<strong>in</strong>ate (0.3,0.2,0.5), točka r<br />

pa (−0.3,0.5,0.8).<br />

Pri podanih (nekol<strong>in</strong>earnih) točkah a,b,c <strong>in</strong> p, lahko s pomočjo Cramer-<br />

59<br />

r<br />

b


60 Trikotne Bézierove krpe<br />

jevega pravila dobimo baricentrične koord<strong>in</strong>ate točke p:<br />

u = pl(p,b,c)<br />

pl(a,b,c)<br />

, v = pl(a,p,c)<br />

pl(a,b,c)<br />

pl(a,b,p)<br />

, w = , (5.2)<br />

pl(a,b,c)<br />

kjer pl(a,b,c) označuje ploˇsč<strong>in</strong>o trikotnika, določenega s točkami a,b,c.<br />

Baricentrične koord<strong>in</strong>ate so af<strong>in</strong>o <strong>in</strong>variantne. Naj ima točka p baricentrične<br />

koord<strong>in</strong>ate (u,v,w) glede na točke a,b,c. Na točkah a,b,c,p uporabimo<br />

af<strong>in</strong>o preslikavo Φ(x) = Ax + z,A ∈ R 3,3 ,z ∈ R 3 . Upoˇstevamo, da velja<br />

u+v +w = 1 <strong>in</strong> zapiˇsemo<br />

Φ(p) = Ap+z<br />

= A(ua+vb+wc)+(u+v +w)z<br />

= uAa+vAb+wAc+uz+vz+wz<br />

= uΦa+vΦb+wΦc.<br />

Baricentrične koord<strong>in</strong>ate lahko uporabimo za def<strong>in</strong>icijo l<strong>in</strong>earne <strong>in</strong>terpolacije.<br />

Naj bodo p1,p2,p3 točke v E 3 . Potem vsaka točka oblike:<br />

p = p(u) = p(u,v,w) = up1 +vp2 +wp3, u+v +w = 1 (5.3)<br />

leˇzi v ravn<strong>in</strong>i, ki jo določajo točke p1,p2,p3. To preslikavo E 2 → E 3 imenujemo<br />

l<strong>in</strong>earna <strong>in</strong>terpolacija. Ker je u+v+w = 1, lahko gledamo na u,v,w<br />

kotbaricentričnekoord<strong>in</strong>atetočkepgledenatočkep1,p2,p3. Podobnolahko<br />

gledamo u,v,w kot baricentrične koord<strong>in</strong>ate točke v E 2 glede na nek trikotnik,<br />

def<strong>in</strong>iran z nekimi točkami a,b,c. Tako na enačbo (5.3) gledamo kot<br />

na preslikavo trikotnika a,b,c ∈ E 2 na trikotnik p1,p2,p3 ∈ E 3 . Trikotnik<br />

a,b,c imenujemo nosilni trikotnik. Ker poloˇzaj <strong>in</strong> oblika trikotnika (razen<br />

pogoja nekol<strong>in</strong>earnosti) nista pomembna, je l<strong>in</strong>earna <strong>in</strong>terpolacija af<strong>in</strong>a preslikava.<br />

5.2 De Casteljauov algoritem<br />

De Casteljauov algoritem za trikotne Bézierove krpe (Bézierove trikotnike) je<br />

posploˇsitev standardnega de Casteljauovega algoritma za Bézierove krivulje.<br />

Tako kot algoritem za krivulje, tudi posploˇseni algoritem uporablja ponavljanje<br />

l<strong>in</strong>earnih <strong>in</strong>terpolacij. Namesto kontrolnega poligona imamo kontrolno<br />

mreˇzo, ki je v obliki strukture iz trikotnikov. Kontrolne točke označimo z<br />

bijk, kjer je i+j +k = n <strong>in</strong> i,j,k ≥ 0; n je stopnja Bézierove krpe. Točke


5.2 De Casteljauov algoritem 61<br />

mreˇze zapiˇsemo v obliki trikotnika <strong>in</strong> jih označimo na naslednji nač<strong>in</strong>: točka<br />

v i-ti vrstici ( i = 0,1,...,n) ima srednji <strong>in</strong>deks enak i; nato pa z leve proti<br />

desni po vrsti postavljamo prvi <strong>in</strong>deks od 0 do n−i, preostali <strong>in</strong>deks pa je<br />

določen z k = n−i−j.<br />

Slika 5.2: Trikotna Bézierova krpa stopnje 3 s kontrolno mreˇzo.<br />

V primeru n = 4 imamo strukturo:<br />

b040<br />

b031 b130<br />

b022 b121 b220<br />

b013 b112 b211 b310<br />

b004 b103 b202 b301 b400<br />

Kontrolno mreˇzo določa dimPn = n+2 1<br />

= (n+1)(n+2) kontrolnih točk.<br />

2 2<br />

Uporabimo multi<strong>in</strong>deks i := (i,j,k) <strong>in</strong> točke bijk označimo krajˇse z bi,<br />

velikost multi<strong>in</strong>deksa pa naj označuje |i| := i + j + k. Standardno bazo<br />

kartezičnega koord<strong>in</strong>atnega sistema označimo z e1 = (1,0,0), e2 = (0,1,0),<br />

e3 = (0,0,1).<br />

S pomočjo uvedenih oznak zapiˇsimo de Casteljauov algoritem za trikotne<br />

krpe:<br />

de Casteljauov algoritem:<br />

Podana je trikotna struktura kontrolnih točk bi ∈ E 3 , |i| = n, ter točka<br />

(x,y) ∈ E 2 z baricentričnimi koord<strong>in</strong>atami u = (u,v,w).


62 Trikotne Bézierove krpe<br />

Izračunajmo:<br />

b r i (u) = ubr−1<br />

i+e1 (u)+vbr−1 i+e2 (u)+wbr−1 (u), r = 1,2,...,n; |i| = n−r,<br />

i+e3<br />

kjer je b 0 i (u) = bi. Potem je b n 0<br />

Bézierovi krpi b n .<br />

(5.4)<br />

(u) točkazvrednostjoparametra u na trikotni<br />

Slika 5.3: De Casteljauov algoritem za trikotne Bézierove krpe. Točko na<br />

ploskvi dobimo s ponavljanjem l<strong>in</strong>earnih <strong>in</strong>terpolacij.<br />

Z uporabo lastnosti de Casteljauovega algoritma lahko dokaˇzemo nekaj<br />

lastnosti trikotnih Bézierovih krp.<br />

Af<strong>in</strong>a <strong>in</strong>variantnost: Trikotne Bézierove krpe so <strong>in</strong>variantne za af<strong>in</strong>e transformacije.<br />

De Casteljauov algoritem uporablja samo l<strong>in</strong>earne <strong>in</strong>terpolacije;<br />

le-te pa so af<strong>in</strong>e preslikave.<br />

Invariantnost za af<strong>in</strong>e transformacije parametra: V algoritmu nismo<br />

predpostavili kakˇsnega določenega nosilnega trikotnika, glede na katerega so<br />

določene baricentrične koord<strong>in</strong>ate u. Po af<strong>in</strong>i transformaciji nosilnega trikotnika<br />

ostanejo baricentrične koord<strong>in</strong>ate nespremenjene, <strong>in</strong> dobimo <strong>in</strong>variantnost<br />

za af<strong>in</strong>o transformacijo parametra.<br />

Lastnost konveksne ovojnice:<br />

Casteljauovem algoritmu izračunani b r i<br />

Če velja 0 ≤ u,v,w ≤ 1, so vsi po de<br />

konveksne komb<strong>in</strong>acije br−1<br />

i .<br />

Robne krivulje: Robne krivulje za trikotno krpo so določene z robnimi<br />

točkami kontrolne mreˇze (vsaj en <strong>in</strong>deks je enak 0). Robne krivulje so<br />

Bézierove krivulje, dobljene s standardnim de Casteljauovim algoritmom za<br />

krivulje (za primer v = 0):<br />

b r i (u,0,w) = ubr−1<br />

i+e1 +wbr−1 ; u+w = 1.<br />

i+e3


5.3 Trikotniˇski razcvet 63<br />

5.3 Trikotniˇski razcvet<br />

Podobno kot v primeru Bézierovih krivulj lahko def<strong>in</strong>iramo tudi razcvet<br />

trikotne krpe.<br />

Def<strong>in</strong>icija: Pol<strong>in</strong>om b[u1,u2,...,un], dobljen tako, da na r-tem koraku de<br />

Casteljauovega algoritma(5.4)uporabimoparameterur, imenujemo razcvet<br />

trikotne Bézierove krpe.<br />

Opomba: Argumenti ui so trojice ˇstevil, ki predstavljajo baricentrične koord<strong>in</strong>ate<br />

točk nosilnega trikotnika.<br />

Trikotniˇski razcvet ima enake lastnosti kot razcvet, def<strong>in</strong>iran v razdelku (3.6)<br />

na strani 27, torej je simetrična funkcija svojih parametrov, af<strong>in</strong>a glede na<br />

vse parametre, <strong>in</strong> velja: b(u) = b[u ].<br />

Izrek 16. Bézierove kontrolne točke lahko izrazimo kot vrednosti razcveta<br />

bi = b[e <br />

1 ,e <br />

2 ,e <br />

3 ], i = (i,j,k), |i| = n. (5.5)<br />

Dokaz: Oglejmo si primer razcveta b[e1,u ]. Torej izvedemo en korakdeCasteljauovegaalgoritmagledenae1,natopanadaljujemozobičajnim<br />

algoritmom glede na u. Po prvem koraku dobimo:<br />

b 1 i(e1) = bi+1,j,k, |i| = n−1.<br />

Dobimo trikotno krpo stopnjo n−1 brez točk oblike: b0,j,k. Podobno lahko<br />

z uporabo e2 <strong>in</strong> e3 odstranimo tudi druge točke. Tako z i-kratno uporabo<br />

e1, j-kratno uporabo e2 ter k-kratno e3, pridemo do točke bi,j,k.<br />

Tudi vmesne točke, dobljene z de Casteljauovim algoritmom, lahko izrazimo<br />

kot vrednosti razcveta<br />

b r i(u) = b[u ,e <br />

1 ,e <br />

2 ,e <br />

3 ], i+j +k = n−r. (5.6)<br />

S pomočjo razcveta lahko enostavno izrazimo kontrolne točke glede na drugačen<br />

nosilni trikotnik. Naj novi nosilni trikotnik določajo točke f1,f2,f3.<br />

Potem kontrolne točke v spremenjenih baricentričnih koord<strong>in</strong>atah dobimo z<br />

izračunom vrednosti razcveta<br />

ci = b[f <br />

1 ,f <br />

2 ,f <br />

3 ]. (5.7)<br />

5.4 Bernste<strong>in</strong>ovi pol<strong>in</strong>omi <strong>in</strong> trikotne Bézierove<br />

krpe<br />

Bernste<strong>in</strong>ovi bazni pol<strong>in</strong>omi stopnje n dveh spremenljivk so def<strong>in</strong>irani z<br />

B n i<br />

(u) := n!<br />

i!j!k! ui v j w k ; |i| = n, u = (u,v,w), |u| = 1, (5.8)


64 Trikotne Bézierove krpe<br />

<strong>in</strong> B n i,j,k<br />

:= 0, če je kakˇsen <strong>in</strong>deks i,j,k negativen.<br />

Izrek 17. Bernste<strong>in</strong>ovi pol<strong>in</strong>omi zadoˇsčajo enačbi<br />

B n i<br />

(u) = uBn−1<br />

i−e1 (u)+vBn−1<br />

Dokaz: Izračunajmo enega od členov:<br />

i−e2 (u)+wBn−1 (u), |i| = n. (5.9)<br />

i−e3<br />

uB n−1 (n−1)!<br />

(u) = i−e1 (i−1)!j!k! uiv j w k .<br />

Vsi členi imajo enake stopnje, torej je dovolj videti, da je:<br />

(n−1)! (n−1)! (n−1)!<br />

+ +<br />

(i−1)!j!k! i!(j −1)!k! i!j!(k −1)!<br />

= n!<br />

i!j!k! .<br />

Pomnoˇzimo enačbo z ijk, upoˇstevamo ˇse i+j+k = n, <strong>in</strong> izrek je dokazan.<br />

Slika 5.4: Nekaj Bernste<strong>in</strong>ovih baznih pol<strong>in</strong>omov pri n = 4.<br />

Izrek 18. Vmesne točke de Casteljauovega algoritma lahko izrazimo z Bernste<strong>in</strong>ovimi<br />

pol<strong>in</strong>omi:<br />

b r i(u) = <br />

bi+jB r j(u); |u| = n−r. (5.10)<br />

|j|=r


5.5 Odvodi 65<br />

Opomba: Za r = n dobimo izraz trikotne Bézierove krpe z Bernste<strong>in</strong>ovimi<br />

pol<strong>in</strong>omi:<br />

b n (u) = b n 0(u) = <br />

bjB n j (u). (5.11)<br />

Dokaz: Uporabimo <strong>in</strong>dukcijo<br />

b r+1<br />

i (u) = ub r i+e1 +vbr i+e2 +wbr i+e3<br />

|j|=n<br />

= u <br />

bi+j+e1B r j(u)+v <br />

bi+j+e2B r j(u)+w <br />

|j|=r<br />

= <br />

|j|=r+1<br />

= <br />

|j|=r+1<br />

|j|=r<br />

|j|=r<br />

(ubi+jB r j−e1 (u)+vbi+jB r j−e2 (u)+wbi+jB r j−e3 (u))<br />

bi+jB r+1<br />

j (u)<br />

bi+j+e3B r j(u)<br />

<strong>in</strong> izrek je dokazan. V dokazu smo uporabili zapis B r j(u) z Bernste<strong>in</strong>ovimi<br />

pol<strong>in</strong>omi niˇzje stopnje (5.9).<br />

Opomba: Trikotno Bézierovo krpo lahko izrazimo tudi s pomočjo vmesnih<br />

točk de Casteljauovega algoritma<br />

5.5 Odvodi<br />

b n (u) = <br />

|j|=n−r<br />

b r j (u)Bn−r<br />

j (u), 0 ≤ r ≤ n. (5.12)<br />

Zaradiuporabebaricentričnihkoord<strong>in</strong>atparcialniodvod<strong>in</strong>isoprimernoorodje<br />

za ˇstudij gladkosti trikotnih krp. Uporabiti je potrebno smerne odvode.<br />

Def<strong>in</strong>irajmo smerni odvod za trikotne krpe. Naj bosta u1 <strong>in</strong> u2 točki v<br />

def<strong>in</strong>icijskem območjukrpe. Njunarazlika d = u2−u1 jevektor d = (d,e,f),<br />

kjer za komponente v baricentričnih koord<strong>in</strong>atah velja d+e+f = 0.<br />

Def<strong>in</strong>icija: Smerni odvod <strong>ploskve</strong> x(u) v smeri vektorja d je def<strong>in</strong>iran z:<br />

Ddx(u) = dxu(u)+exv(u)+fxw(u). (5.13)<br />

Geometrijska <strong>in</strong>terpretacija smernega odvoda: V def<strong>in</strong>icijskem območju krpe<br />

potegnimo vzporednico vektorju d skozi točko u. Vzporednica se preslika v<br />

krivuljo na krpi, tangentni vektor nanjo v točki x(u) pa je smerni odvod.


66 Trikotne Bézierove krpe<br />

Izračunajmo parcialni odvod Bézierove krpe glede na u:<br />

∂<br />

∂u bn (u) = ∂ n!<br />

∂u i!j!k! uiv j w k bi<br />

= n <br />

|i|=n<br />

|i|=n<br />

= n <br />

|i|=n−1<br />

= n <br />

|i|=n−1<br />

(n−1)!<br />

(i−1)!j!k! ui−1 v j w k bi<br />

(n−1)!<br />

i!j!k! ui v j w k bi+1,j,k<br />

bi+e1B n−1<br />

i (u).<br />

V izpeljavi smo uporabili premik <strong>in</strong>deksa i − 1 → i. Podobno dobimo ˇse<br />

parcialna odvoda glede na v ter w. Tako dobimo smerni odvod na Bézierovo<br />

krpo<br />

Ddb n (u) = n <br />

[dbi+e1 +ebi+e2 +fbi+e3]B<br />

|i|=n−1<br />

n−1<br />

i (u). (5.14)<br />

Izraz v oglatih oklepajih lahko s pomočjo de Casteljauovega algoritma (5.4)<br />

izrazimo z b1 i , <strong>in</strong> dobimo:<br />

Ddb n (u) = n <br />

|i|=n−1<br />

b 1 i (d)Bn−1<br />

i (u). (5.15)<br />

Smerni odvod torej dobimo z izvajanjem enega koraka de Casteljauovega<br />

algoritma glede na smerni vektor d, ter n−1 korakov glede na točko u. To<br />

lahko krajˇse zapiˇsemo s pomočjo razcveta:<br />

Ddb n (u) = nb[d,u ]. (5.16)<br />

Z nadaljevanjem opisanega postopka dobimo r-ti odvod Bézierove krpe v<br />

smeri vektorja d<br />

D r d bn (u) =<br />

n!<br />

(n−r)! b[d ,u ]. (5.17)<br />

Tako r-ti odvod Bézierove krpe v smeri vektorja d dobimo z izvajanjem r<br />

korakov de Casteljauovega algoritma glede na d, ter n−r korakov glede na u.<br />

Podobnodobimotudimeˇsanesmerneodvode. Najbostad1 <strong>in</strong>d2 vektorja<br />

v def<strong>in</strong>icijskem območju Bézierove <strong>ploskve</strong> b(u). Za r-kratni odvod v smeri<br />

d1, <strong>in</strong> s-kratni v smeri d2 izračunamo<br />

D r,s<br />

d1,d2 bn (u) =<br />

n!<br />

(n−r −s)! b[d<br />

1 ,d <br />

2 ,u ]. (5.18)


5.5 Odvodi 67<br />

Sedaj r-ti smerni odvod, zapisan v notaciji razcvetov (5.17), zapiˇsimo z<br />

Bernste<strong>in</strong>ovimi pol<strong>in</strong>omi<br />

D r db n (u) =<br />

n!<br />

(n−r)!<br />

<br />

|j|=n−r<br />

b r j(d)B n−r<br />

j (u). (5.19)<br />

Z izvajanjem de Casteljauovega algoritma v drugem vrstnem redu pa dobimo<br />

D r d bn (u) =<br />

n! <br />

b<br />

(n−r)!<br />

|j|=r<br />

n−r<br />

j (u)B r j (d). (5.20)<br />

Enačba (5.20) je analogija enačbe (3.21) za r-ti odvod Bézierove krivulje. Pri<br />

tem so členi b n−r<br />

j (u) v vlogi posploˇsenih diferenc. Podobno je enačba (5.19)<br />

posploˇsitev enačbe (3.17).<br />

V enačbo (5.20) postavimo r = 1. Dobimo<br />

Ddb n (u) = n <br />

b n−1<br />

j (u)B 1 j(d)<br />

|j|=1<br />

= n(db n−1<br />

e1 (u)+ebn−1 (u)+f bn−1 e3 (u)).<br />

Pri tem je lahko vektor d ∈ R2 poljuben. Torej določajo točke bn−1 e1 (u),<br />

bn−1 e2 (u),bn−1(u)<br />

tangentno ravn<strong>in</strong>o na trikotno Bézierovo krpo v točki<br />

e3<br />

bn (u). To je posploˇsitev izraza za določitev tangente na Bézierovo krivuljo.<br />

V posebnem primeru - “robni” Bézierovi kontrolni točki b0,n,0, je tangentna<br />

ravn<strong>in</strong>a določena s kontrolnimi točkami b0,n,0,b0,n−1,1, ter b1,n−1,0. Analogno<br />

velja tudi za ostali “krajiˇsči” kontrolne mreˇze, bn,0,0 ter b0,0,n. Spet vidimo,<br />

da de Casteljauov algoritem računanja točk na krpi z vmesnimi izračuni<br />

pr<strong>in</strong>aˇsa tudi <strong>in</strong>formacije o odvodih.<br />

Oglejmo si ˇse smerne odvode na robu trikotne Bézierove krpe. Vzemimo<br />

robu = 0<strong>in</strong>vektord,kimunivzporeden. Smerniodvodvsmerid,izračunan<br />

v robnih točkah u = 0, je:<br />

D r db n (u) u=0 =<br />

n!<br />

(n−r)!<br />

<br />

|i0|=n−r<br />

e2<br />

b r i0 (d)Bn−r<br />

i0 (u) u=0 , (5.21)<br />

kjer je i0 = (0,j,k). Ker je u na robu krpe oblike u = (0,v,w) = (0,v,1−v),<br />

dobimo Bézierovo krivuljo, zapisano v baricentrični obliki. Smerni odvod na<br />

robu krpe je odvisen le od r+1 “vrstic” Bézierovih kontrolnih točk najbliˇzje<br />

robu. Analogno velja tudi za ostala robova. Te rezultate bomo uporabili za<br />

konstrukcijo sestavljenih ploskev.


68 Trikotne Bézierove krpe<br />

5.6 ˇSiritev <strong>in</strong> delitev<br />

Vzemimo ploskev, sestavljeno iz dveh trikotnih krp. Njuna nosilna trikotnika<br />

naj bosta določena s točkami a,b,c ter b,â,c (glej sliko 5.5). Točko â lahko<br />

izrazimo z baricentričnimi koord<strong>in</strong>atami glede na točke a,b,c:<br />

â = v1a+v2b+v3c.<br />

Označimo v := (v1,v2,v3), v1 +v2 +v3 = 1.<br />

Slika 5.5: Nosilna trikotnika za ˇsiritev <strong>in</strong> delitev (v tem primeru bi točka â<br />

leˇzala znotraj trikotnika a,b,c) trikotne Bézierove krpe.<br />

Naj ima Bézierov trikotnik b n nosilni trikotnik a,b,c (v baricentričnih<br />

koord<strong>in</strong>atah: a = e1,b = e2,c = e3). Bézierova krpa je def<strong>in</strong>irana na<br />

celi ravn<strong>in</strong>i. Zanimajo nas kontrolne točke ci Bézierovega trikotnika b n ,<br />

def<strong>in</strong>iranega nad trikotnikom b,â,c. Uporabimo enačbo (5.7), <strong>in</strong> dobimo:<br />

ci = b[v ,e <br />

2 ,e <br />

3 ], i+j +k = n. (5.22)<br />

Kontrolne točke ci dobimo kot vmesne točke de Casteljauovega algoritma za<br />

izračun b(v).<br />

Kontrolne točke obeh krp na skupnem robu (u = 0) so enake:<br />

c0,j,k = b[e2 ,e3 ] = b0,j,k; j +k = n.<br />

Dobili smo algoritem za izračun Bézierovih kontrolnih točk razˇsiritve b n<br />

na sosednjo krpo. V tem primeru algoritem ne uporablja konveksnih komb<strong>in</strong>acij,<br />

temveč odsekoma l<strong>in</strong>earne ekstrapolacije, zato ni stabilen.<br />

Čepajeâznotraj trikotnika a,b,c, dobimo algoritem delitve, ki uporablja


5.7 Odvedljivost 69<br />

Slika 5.6: Delitev: vmesne točke de Casteljauovega algoritma tvorijo kontrolne<br />

mreˇze podkrp trikotne Bézierove krpe. Zaradi boljˇse preglednosti je<br />

označena le ena od kontrolnih podmreˇz.<br />

konveksne komb<strong>in</strong>acije. Točka b n (v1,v2,v3) razdeli trikotno krpo v tri podkrpe,<br />

katerihkontrolne točke dobimo s pomočjo deCasteljauovega algoritma.<br />

Če v nosilni trikotnik vstavljamo dovolj razprˇseno zaporedje točk, zaporedje<br />

ustreznih kontrolnih mreˇz konvergira proti ploskvi.<br />

5.7 Odvedljivost<br />

Pri krpah, nastalih iz tenzorskega produkta, je preprosto preverjati odvedljivost<br />

na skupnem robu sestavljene krpe: primerjamo parcialne odvode krp na<br />

skupnem robu. Pri trikotnih krpah parcialni odvodi niso primerno orodje,<br />

zato uporabljamo naslednjo posploˇsitev.<br />

Vzemimo dve trikotni krpi, ki sta preslikavi sosednjih nosilnih trikotnikov.<br />

Vsaka premica v domeni, ki seka skupni rob nosilnih trikotnikov, se preslika<br />

v sestavljeno krivuljo v R 3 , ki ima po en del na vsaki krpi.<br />

Če so vse sestavl-<br />

jene krivulje, ki jih dobimo na ta nač<strong>in</strong>, r-krat zvezno odvedljive, pravimo,<br />

da je sestavljena krpa r-krat zvezno odvedljiva. Kot smo videli v prejˇsnjem<br />

razdelku, enačba (5.22) podaja pogoj, pri katerem sta sosednji krpi del glob-<br />

alne pol<strong>in</strong>omske <strong>ploskve</strong>. Uporabimo oznake iz prejˇsnjega razdelka.<br />

Če r<br />

teče med 0 <strong>in</strong> s ≤ n, dobimo pogoj za s-kratno zvezno odvedljivost med<br />

sosednjima krpama:<br />

ˆb(r,j,k) = b r 0,j,k (v); r = 0,1,...,s. (5.23)


70 Trikotne Bézierove krpe<br />

Enačba (5.23) je potreben <strong>in</strong> zadosten pogoj za C s - zveznost dveh sosednjih<br />

krp, saj so po (5.21) smerni odvodi krpe preko roba do reda s, odvisni le od<br />

s+1 kontrolnih točk, “vzporednih” le-temu robu.<br />

Pris = 0zenačbo(5.23)dobimo pogojzveznosti -sestavljeni krpi morata<br />

imeti na skupnem robu tudi skupni kontrolni poligon. Bolj zanimiv je primer<br />

s = 1; dobimo pogoj:<br />

ˆb(1,j,k) = v1b1,j,k +v2b0,j+1,k +v3b0,j,k+1.<br />

Vsako kontrolno točko ˆ b(1,j,k) dobimo kot baricentrično komb<strong>in</strong>acijo točk na<br />

robnih podtrikotnikih kontrolne mreˇze b n , <strong>in</strong> za vse j+k = n−1 so te baricentrične<br />

komb<strong>in</strong>acije enake. Torej mora biti vsak par podtrikotnikov kontrolnemreˇze<br />

sskupnim robomna skupnem kontrolnem poligonu, koplanaren,<br />

ter af<strong>in</strong>a preslikava para nosilnih trikotnikov podanih ploskev. Samo koplanarnost<br />

ustreznih podtrikotnikov ni zadosti za C 1 odvedljivost.<br />

5.8 Viˇsanje stopnje trikotne Bézierove krpe<br />

Bézierovo krpo bn lahko zapiˇsemo kot krpo stopnje n+1. Naj bi označujejo<br />

pa nove kontrolne točke. Veljati mora enačba:<br />

začetne, b (1)<br />

i<br />

<br />

|i|=n<br />

biB n i<br />

(u) = <br />

|i|=n+1<br />

Izrek 19. Kontrolne točke b (1)<br />

i so podane z<br />

b (1)<br />

i<br />

b (1)<br />

i Bn+1<br />

i (u). (5.24)<br />

= 1<br />

n+1 [ibi−e1 +jbi−e2 +kbi−e3]. (5.25)<br />

Dokaz: Pomnoˇzimo levo stran enačbe (5.24) z u + v + w = 1 <strong>in</strong> izrazimo<br />

posamezne člene s pomočjo Bernste<strong>in</strong>ovih pol<strong>in</strong>omov stopnje n + 1. S<br />

primerjavo koeficientov dobimo gornjo enačbo.<br />

Algoritemviˇsanjastopnjesestavljajoodsekomal<strong>in</strong>earne<strong>in</strong>terpolacijeorig<strong>in</strong>alne<br />

kontrolne mreˇze, zato tudi nova kontrolna mreˇza leˇzi v konveksni ovojnici<br />

orig<strong>in</strong>alne.<br />

S ponavljanjem postopka viˇsanja stopnje dobimo zaporedje kontrolnih mreˇz,<br />

ki konvergira proti Bézierovi ploskvi.


5.9 Neparametrične krpe 71<br />

Slika 5.7: Zvezno odvedljiva sestavljena Bézierova krpa. Ustrezni pari trikotnikov,<br />

ki jih sestavljajo kontrolne točke ob skupnem robu, morajo biti koplanarni,<br />

ter af<strong>in</strong>e slike nosilnih trikotnikov.<br />

5.9 Neparametrične krpe<br />

Zapiˇsimo funkcijo<br />

v obliki <strong>ploskve</strong>:<br />

z = <br />

|i|=n<br />

biB n i<br />

⎡ ⎤ ⎡ ⎤<br />

u i/n<br />

⎢<br />

⎢v⎥<br />

⎢<br />

⎥<br />

⎣w⎦<br />

= ⎢j/n<br />

⎥<br />

⎣k/n⎦<br />

|i|=n<br />

z<br />

Bn i (u).<br />

bi<br />

(u) (5.26)<br />

Abscisne vrednosti točk kontrolne mreˇze so podane kot trojice i.<br />

Gornjo n<br />

enačbo dobimo s pomočjo lastnosti ohranjanja premic za Bernste<strong>in</strong>ove poli-


72 Trikotne Bézierove krpe<br />

nome (v primeru koord<strong>in</strong>ate u):<br />

u = <br />

|i|=n<br />

i<br />

n Bn i (u).<br />

5.10 Racionalne Bézierove trikotne krpe<br />

Podobno kot v primeru Bézierovih krivulj (razdelek (3.16)), def<strong>in</strong>iramo racionalno<br />

Bézierovo trikotno krpo kot projekcijo Bézierove trikotne krpe<br />

iz E 4 v hiperravn<strong>in</strong>o w = 1. Z idejo dokaza enačbe (3.48) dobimo enačbo za<br />

racionalno Bézierovo krpo stopnje n:<br />

b n (u) =<br />

<br />

|i|=n wibiB n i (u)<br />

<br />

|i|=n wiB n i<br />

(u) , (5.27)<br />

kjer so wi uteˇzi, povezane s kontrolnimi točkami bi. Če so vse uteˇzi pozitivne,<br />

ima racionalna Bézierova trikotna krpa lastnost konveksne ovojnice<br />

ter <strong>in</strong>variantnosti za af<strong>in</strong>e preslikave.<br />

Točke na racionalni Bézierovi trikotni krpi lahko izračunamo s pomočjo racionalnega<br />

de Casteljauovega algoritma:<br />

Podani naj bodo trikotniˇska shema kontrolnih točk bi ∈ E3 ,|i| = n, z uteˇzmi<br />

wi, ter točka v nosilnem trikotniku, z baricentričnimi koord<strong>in</strong>atami u.<br />

Izračunamo<br />

kjer je:<br />

b r uwr−1<br />

i+e1<br />

i (u) = br−1<br />

i+e1 +vwr−1<br />

i+e2br−1 i+e2 +wwr−1<br />

i+e3br−1 i+e3<br />

wr i<br />

w r i = w r i(u) = uw r−1<br />

i+e1 (u)+vwr−1<br />

i+e2 (u)+wwr−1<br />

i+e3 (u),<br />

za r = 1,2,...,n ter |i| = n−r. Začetne vrednosti so b 0 i (u) = bi, w 0 i<br />

Izračunani bn 0 (u) je točka na racionalni Bézierovi trikotni krpi.<br />

, (5.28)<br />

= wi.<br />

Algoritem izpeljemo s pomočjo projekcij vmesnih točk de Casteljauovega<br />

algoritma b r i iz ˇstiri dimenzionalnega prostora, podobno kot v primeru racionalnih<br />

Bézierovih krivulj (razdelek (3.17)). Tudi za racionalne Bézierove<br />

trikotne krpe lahko def<strong>in</strong>iramo uteˇzne točke qi,<br />

qi = wi+e1bi+e1 +wi+e2bi+e2 +wi+e3bi+e3<br />

wi+e1 +wi+e2 +wi+e3<br />

, |i| = n−1.


5.10 Racionalne Bézierove trikotne krpe 73<br />

VprimeruracionalnihBézierovihkrivuljimajouteˇznetočkepomembnovlogo<br />

pri oblikovanju: z določitvijo uteˇznih točk qi so določene tudi uteˇzi wi. V<br />

posploˇsenem primeru racionalnih trikotnih krp pa to presenetljivo ne velja -<br />

ni znan postopek za generiranje uteˇzi na geometrijski nač<strong>in</strong>.<br />

q001<br />

q100<br />

b110<br />

q010<br />

b101<br />

b200<br />

Slika 5.8: Pri poljubno izbranih točkah q001,q010,q100 ne moremo najti ustrezne<br />

mnoˇzice uteˇzi {wi}.<br />

Poglejmo si to v primeru n = 2. S pomočjo uteˇzi wi lahko izračunamo<br />

uteˇzne točke ter točko<br />

b020<br />

b011<br />

b002<br />

p = w011b011 +w101b101 +w110b110<br />

,<br />

w011 +w101 +w110<br />

ki leˇzi na presečiˇsču daljic q001,b110, q010,b101 ter q100,b011.<br />

Če pa izberemo uteˇzi qi poljubno, se daljice ne sekajo v isti točki, torej točka<br />

p ne obstaja. Ker iz eksistence uteˇzi sledi obstoj točke p, iz implikacije v<br />

obratno smer sledi, da s poljubno določenimi uteˇznimi točkami ne moremo<br />

najti ustrezne mnoˇzice uteˇzi.<br />

Zapiˇsimo ˇse formulo za smerni odvod Dd racionalne Bézierove trikotne<br />

krpe b n (u). Naj d označuje smerni vektor v nosilnem trikotniku, zapisan v<br />

baricentričnih koord<strong>in</strong>atah. Def<strong>in</strong>irajmo ˇse<br />

p(u) = w(u)b n (u) = <br />

|i|=n<br />

wibiB n i (u).<br />

S pomočjo postopka iz razdelka (3.17.1) dobimo enačbo<br />

Ddb n (u) = 1<br />

w(u) [Ddp(u)−Ddw(u)·b n (u)]. (5.29)


74 Trikotne Bézierove krpe<br />

S ponavljanjem postopka pridemo do formule za viˇsje smerne odvode<br />

D r d bn (u) = 1<br />

w(u) [Dr d p(u)−<br />

r<br />

j=1<br />

D j<br />

d w(u)Dr−j<br />

d bn (u)]. (5.30)


Poglavje 6<br />

Posploˇsitev Bézierovih krivulj<br />

<strong>in</strong> razcvet v sploˇsnem<br />

V tem razdelku si bomo ogledali baricentrične koord<strong>in</strong>ate v Rd , def<strong>in</strong>irali<br />

naravno posploˇsitev Bézierovih krivulj (oziroma trikotnih Bézierovih krp) v<br />

poljubno dimenzionalni prostor, ter si ogledali razcvet v sploˇsnem. Razcvet<br />

lahko uporabimo pri ˇstudiju zlepkov, zato si bomo ogledali pogoje gladkosti<br />

med dvema krpama v razcvetni obliki. Ideja je nekoliko nenavadna. Pol<strong>in</strong>omske<br />

izraze posploˇsimo z vpeljavo novih spremenljivk na poseben nač<strong>in</strong> <strong>in</strong><br />

uporabimo simetrijo v dobljenih izrazih. S tem se kompleksnost problema<br />

poveča, vendar pa nam to lahko poda povsem nov pogled na problem.<br />

Preden def<strong>in</strong>iramo razcvet v sploˇsnem, se spomnimo nekaj pojmov. Naj<br />

bo W vektorski prostor. Funkcija f : W → R je af<strong>in</strong>a, če velja<br />

<br />

<br />

f = <br />

uif(xi)<br />

i<br />

uixi<br />

za vse xi ∈ W <strong>in</strong> vse ui ∈ R, za katere velja <br />

i ui = 1 (baricentrične<br />

oz. af<strong>in</strong>e komb<strong>in</strong>acije). Funkciji pravimo multiaf<strong>in</strong>a, če je af<strong>in</strong>a v vseh<br />

svojih argumentih. Funkcija je simetrična, če se pri poljubni permutaciji<br />

argumentov njena vrednost ne spremeni. Naj bo Πn(R m ) prostor pol<strong>in</strong>omov<br />

m-spremenljivk totalne stopnje ≤ n. Za vsak p ∈ Πn(R m ) obstaja enoličen<br />

simetričen n-af<strong>in</strong>i pol<strong>in</strong>om<br />

<br />

Bn(p)<br />

x (1) ,x (2) ,...,x (n)<br />

i<br />

<br />

, x (i) ∈ R m ,<br />

ki ima diagonalno lastnost<br />

<br />

Bn(p) x,...,x = p(x), x ∈ R<br />

<br />

n<br />

m .<br />

75


76 Posploˇsitev Bézierovih krivulj <strong>in</strong> razcvet v sploˇsnem<br />

S tem je def<strong>in</strong>iran Bn(p), razcvet pol<strong>in</strong>oma p.<br />

Primer: Razcvet pol<strong>in</strong>oma<br />

je podan z<br />

<br />

B(p2) (u1,v1),(u2,v2) =<br />

p2(x,y) = a0 +a1x+a2y +a3x 2 +a4xy +a5y 2<br />

u1 +u2 v1 +v2 u1v2 +u2v1<br />

a0 +a1 +a2 +a3u1u2 +a4 +a5v1v2.<br />

2 2 2<br />

Razcvetni pristop je nova metoda v teoriji zlepkov, na nekaterih drugih<br />

področjih matematike pa ga ˇze dolgo uporabljamo. Tak primer so kvadratne<br />

<strong>in</strong> bil<strong>in</strong>earne forme v l<strong>in</strong>earni algebri. Znano je, da za vsako kvadratno formo<br />

F : W → R na vektorskem prostoru W obstaja enolična simetrična bil<strong>in</strong>earna<br />

forma f : W × W → R, ki ima lastnost: F(v) = f(v,v), v ∈ W. V<br />

drugih vejah matematike se za razcvet uporablja tudi izraz polarna forma.<br />

Ramshaw ([12]) izraza ni poznal, <strong>in</strong> je uporabil poimenovanje, kjer je f imenoval<br />

razcvet (blossom) pol<strong>in</strong>oma F. Ideja za to izhaja iz tega, da izraz<br />

razcvet namigujenarazkritjeskritestrukture, kardobroopisuje, kajsezgodi,<br />

ko F pretvorimo v f.<br />

Razcvetni zapis je posebej uporaben v teoriji Bézierovih krivulj, saj omogoča<br />

eleganten zapis <strong>in</strong> preprosto izpeljavo lastnosti ter uporabo krivulj, kar<br />

smo videli v razdelku 3.6.<br />

Paul de Faget de Casteljau je razcvetni pristop v teoriji zlepkov imenoval<br />

oblikeskozi pole(shapesthroughpoles), Carl deBoorgajeimenoval B-zlepki<br />

brez deljenih diferenc, Lyle Ramshaw pa razcvet.<br />

6.1 Zapis pol<strong>in</strong>oma v razcvetni obliki<br />

Oglejmo si razcvetni pristop bolj natančno. Naj Z+ označuje mnoˇzico nenegativnih<br />

celih ˇstevil, male grˇske črke pa naj označujejo vektorje s komponentami<br />

iz Z+. Uporabljali bomo multi<strong>in</strong>deksni zapis. Vzemimo vektorja<br />

α = (α1,α2,...,αm) ∈ Z m +, β = (β1,β2,...,βm) ∈ Z m +<br />

ter vektor x = (x1,x2,...,xm) ∈ R m , ter def<strong>in</strong>irajmo<br />

|α| := α1 +α2 +···+αm, α! := α1!·α2! ···αm!, x α := x α1<br />

1 x α2<br />

2 ···x αm<br />

m ,<br />

n<br />

α<br />

<br />

:=<br />

n! , 0 ≤ α,|α| ≤ n<br />

α!(n−|α|)!<br />

0, sicer<br />

.


6.1 Zapis pol<strong>in</strong>oma v razcvetni obliki 77<br />

Tu α ≤ β označuje relacijo ≤ po komponentah (αi ≤ βi, ∀i), α < β pa<br />

naj označuje α ≤ β, kjer za vsaj en i velja αi < βi. Posploˇseni b<strong>in</strong>omski<br />

koeficient je def<strong>in</strong>iran z<br />

<br />

α<br />

β<br />

:=<br />

m<br />

j=1<br />

αj<br />

βj<br />

, 0 ≤ β ≤ α<br />

0, sicer<br />

Sedaj lahko zapiˇsemo osnovni izrek o razvetu.<br />

Izrek 20. Za vsak pol<strong>in</strong>om več spremenljivk pn ∈ Πn(R m ) totalne stopnje n<br />

obstaja enolična simetrična n-af<strong>in</strong>a funkcija<br />

B(pn) : R m ×R m ×···×R m<br />

<br />

→ R,<br />

n<br />

ki ima diagonalno lastnost<br />

<br />

B(pn) x,x,...,x = pn(x), x ∈ R<br />

<br />

n<br />

m .<br />

Funkcijo B(pn) imenujemo razcvet pol<strong>in</strong>oma pn, pol<strong>in</strong>omu pn pa rečemo<br />

polara pol<strong>in</strong>oma B(pn).<br />

Preden dokaˇzemo izrek, opiˇsimo povezavo med razcvetom pol<strong>in</strong>oma pn <strong>in</strong><br />

njegovim zapisom v B-obliki (Bernste<strong>in</strong>ova, Bézierova, de Boor-ova oblika).<br />

Vpeljimo ˇse nekaj oznak. Naj bodo v (1) ,v (2) ,...,v (m+1) ∈ R m . Konveksna<br />

ovojnica danih točk<br />

T := 〈v (1) ,v (2) ,...,v (m+1) 〉 :=<br />

m+1<br />

<br />

i=1<br />

λiv (i) ;<br />

je m-simpleks, če je njen volumen neničeln,<br />

vol〈v (1) ,v (2) ,...,v (m+1) 〉 = 1<br />

<br />

<br />

1<br />

v<br />

<br />

<br />

<br />

m! <br />

<br />

<br />

(1)<br />

1 v (2)<br />

. .<br />

1 v (m+1)<br />

1<br />

.<br />

<br />

m+1 <br />

λi = 1, λi ≥ 0<br />

i=1<br />

1 ... v (1)<br />

m<br />

1 ... v (2)<br />

m<br />

. ..<br />

.<br />

... v (m+1)<br />

m<br />

<br />

<br />

<br />

<br />

<br />

= 0.<br />

<br />

<br />

<br />

Naj bo T = 〈v (1) ,v (2) ,...,v (m+1) 〉 m-simpleks. Vsakemu x ∈ R m pripadajo<br />

baricentrične koord<strong>in</strong>ate (λ1,λ2,...,λm+1) glede na T,<br />

λi = vol〈v(1) ,v (2) ,...,v (i−1) ,x,v (i+1) ,...,v (m+1) 〉<br />

vol〈v (1) ,v (2) ,...,v (m+1) .<br />


78 Posploˇsitev Bézierovih krivulj <strong>in</strong> razcvet v sploˇsnem<br />

Vsak pol<strong>in</strong>om pn ∈ Πn(Rm ) totalne stopnje n se da zapisati v B-obliki<br />

pn(x) = <br />

cαBα(λ).<br />

|α|=n<br />

Točke cα so kontrolne točke pol<strong>in</strong>oma pn, pol<strong>in</strong>omi Bα ∈ Πn(Rm ) pa so<br />

Bernste<strong>in</strong>ovi (Bézierovi, de Boorovi) pol<strong>in</strong>omi,<br />

Bα(λ) = n<br />

α! λα ,<br />

kjer je λ = (λ1,λ2,...,λm+1) baricentrična koord<strong>in</strong>ata točke x. Dobili smo<br />

naravno posploˇsitev Bézierovih krivulj.<br />

Lema 1. Naj bo pn(x) = <br />

|α|=ncαBα(λ) pol<strong>in</strong>om totalne stopnje ≤ n, def<strong>in</strong>iran<br />

glede na m-simpleks〈v (1) ,v (2) ,...,v (m+1) 〉, <strong>in</strong> naj bo B(pn) njegovrazcvet.<br />

Potem je<br />

<br />

cα = B(pn) v (1) ,v (1) ,...,v (1)<br />

,...,v<br />

<br />

(m+1) ,...,v (m+1)<br />

<br />

, ∀|α| = n,<br />

<br />

α1<br />

αm+1<br />

kjer je<br />

Bα(λ) = n<br />

α! λα ,<br />

<strong>in</strong> je λ = (λ1,λ2,...,λm+1) baricentrična koord<strong>in</strong>ata točke x,<br />

x =<br />

m+1 <br />

i=1<br />

λiv (i) ,<br />

m+1 <br />

i=1<br />

λi = 1. (6.1)<br />

Lema1pravi, dasoB-koeficienticα pol<strong>in</strong>omapn vrednost<strong>in</strong>jegovegarazcveta<br />

B(pn) v določenih točkah. Ko je enkrat razcvet pol<strong>in</strong>oma znan, je enostavno<br />

najti B-obliko pol<strong>in</strong>oma pn glede na poljuben m-simpleks.<br />

Dokaz. Najprej bomo uporabili diagonalno lastnost razcveta, nato pa ˇse<br />

lastnosti baricentričnih koord<strong>in</strong>at (6.1). Tako dobimo<br />

<br />

pn(x) = B(pn) x,x,...,x<br />

<br />

n<br />

m+1 <br />

= λiB(pn) v<br />

i=1<br />

(i) <br />

,x,x,...,x<br />

<br />

n−1<br />

m+1 m+1 <br />

= λiλjB(pn) v<br />

i=1 j=1<br />

(i) ,v (j) <br />

,x,x,...,x<br />

<br />

n−2<br />

= ...<br />

= <br />

B(pn) v (1) ,v (1) ,...,v (1)<br />

,...,v<br />

<br />

(m+1) ,...,v (m+1)<br />

<br />

Bα(λ).<br />

<br />

|α|=n<br />

α1<br />

αm+1


6.1 Zapis pol<strong>in</strong>oma v razcvetni obliki 79<br />

V računu smo uporabili multiaf<strong>in</strong>ost <strong>in</strong> simetričnost razcveta B(pn).<br />

Dokaˇzimo osnovni izrek razcvetnega pristopa, izrek 20.<br />

Dokaz. Najprej si oglejmo primer m = 1. Za elementarne simetrične funkcije<br />

σk(u1,u2,...,un) velja<br />

σk(x,x,...,x ) =<br />

<br />

n<br />

<br />

n<br />

x<br />

k<br />

k .<br />

Poljuben pol<strong>in</strong>om pn stopnje n lahko izrazimo v obliki<br />

pn(x) =<br />

n<br />

j=0<br />

1<br />

j! Dj pn(0)x j .<br />

Spomočjo elementarnih simetričnih funkcij lahko tako zapiˇsemo razcvet pol<strong>in</strong>oma<br />

pn kot<br />

<br />

B(pn) u1,u2,...,un =<br />

n<br />

j=0<br />

D j pn(0)<br />

j!<br />

−1 n<br />

σj(u1,u2,...,un).<br />

j<br />

Def<strong>in</strong>irajmo elementarne simetrične funkcije v več spremenljivkah z<br />

σγ(x (1) ,x (2) ,...,x (n) ) := <br />

e i 1+e i 2+···+e <strong>in</strong>=γ<br />

i1,...,<strong>in</strong>∈{0,1,...,m}<br />

(x (1) ) ei 1 (x (2) ) e i 2 ···(x (n) ) e <strong>in</strong><br />

, (6.2)<br />

za γ ∈ Z m + <strong>in</strong> |γ| ≤ n. Tu je x(i) ∈ R m , e 0 := (0,...,0) ∈ R m , e i , 1 ≤ i ≤ m<br />

pa so standardni enotski vektorji v R m .<br />

Naj bo<br />

<br />

∂<br />

D := ,<br />

∂x1<br />

∂<br />

,...,<br />

∂x2<br />

∂<br />

<br />

.<br />

∂xm<br />

Vsak pol<strong>in</strong>om pn ∈ Πn(R m ) lahko zapiˇsemo v Taylorjevo vrsto<br />

Razcvet monoma x γ je enak<br />

pn(x) = <br />

|γ|≤n<br />

γ∈Z m +<br />

B(x γ <br />

) x (1) ,x (2) ,...,x (n)<br />

<br />

=<br />

1<br />

γ! Dγ pn(0)x γ . (6.3)<br />

−1 n<br />

σγ(x<br />

γ<br />

(1) ,x (2) ,...,x (n) ). (6.4)


80 Posploˇsitev Bézierovih krivulj <strong>in</strong> razcvet v sploˇsnem<br />

Tako iz (6.3) <strong>in</strong> (6.4) dobimo razcvet pol<strong>in</strong>oma pn,<br />

<br />

B(pn) x (1) ,x (2) ,...,x (n)<br />

<br />

= <br />

|γ|≤n<br />

1<br />

γ! Dγ pn(0)<br />

−1 n<br />

γ<br />

S tem je osnovni izrek razcvetnega pristopa dokazan.<br />

Za elementarne simetrične funkcije več spremenljivk (6.2) velja<br />

<br />

n<br />

σα(x,...,x) = x<br />

α<br />

α ,<br />

σγ<br />

x (1) ,x (2) ,...,x (n) .<br />

σα(tx (1) ,tx (2) ,...,tx (n) ) = t |α| σα(x (1) ,x (2) ,...,x (n) ), t ∈ R,<br />

σα(x (1) ,x (2) ,...,x (r) ,x (r+1) ,x (r+2) ,...,x (n) )<br />

= <br />

β≤α<br />

σβ(x (1) ,x (2) ,...,x (r) )σα−β(x (r+1) ,x (r+2) ,...,x (n) ).<br />

Za izračun vrednosti razcveta B(pn) v točki x (1) ,x (2) ,...,x (n) lahko<br />

uporabimo modificirani de Casteljauov algoritem. Naj bodo λ k baricentrične<br />

koord<strong>in</strong>ate točke x (k) glede na m-simpleks S. Predpostavimo ˇse, da so znani<br />

B-koeficienti cα, |α| = n, pol<strong>in</strong>oma pn glede na m-simpleks S. Potem je<br />

modificirani de Casteljauov algoritem:<br />

for k = 1,2,...,n<br />

end<br />

for |α| = n−k<br />

end<br />

cα =<br />

m+1 <br />

i=1<br />

λ k ic α+e i<br />

pr<strong>in</strong>t “vrednost B(pn) v točki x (1) ,x (2) ,...,x (n) je enaka c0”.<br />

V posebnem primeru, če so vse točke enake, x (1) = x (2) = ··· = x (n) , modificirani<br />

deCasteljauov algoritempostanestandardni deCasteljauov algoritem.<br />

6.2 Pogoji gladkosti v razcvetni obliki<br />

Za ˇstudij pogojev gladkosti potrebujemo smerne odvode. Smerni odvod<br />

funkcije f v smeri vektorja med točkama A <strong>in</strong> B, izračunan v x, je def<strong>in</strong>iran


6.2 Pogoji gladkosti v razcvetni obliki 81<br />

z<br />

(DB−Af)(x) := d<br />

f (x+t(B −A))|t=0<br />

dt <br />

∂<br />

= (B −A)· f(x),<br />

∂x1<br />

∂<br />

f(x),...,<br />

∂x2<br />

∂<br />

<br />

f(x)<br />

∂xm<br />

Če je y = (y1,y2,...,ym) = B −A, lahko krajˇse zapiˇsemo<br />

Dy := DB−A =<br />

m<br />

i=1<br />

yi<br />

∂<br />

.<br />

∂xi<br />

Za y = v (i) −v (j) ,i = j, bomo uporabljali krajˇso oznako<br />

Vpeljimo notacijo<br />

Dij := D v (i) −v (j), i = j.<br />

Ei(aα) := a(α1,...,αi−1,αi+1,αi+1,...,αm+1),<br />

za priˇstevanje 1 k i-ti komponenti <strong>in</strong>deksa α = (α1,...,αm+1). Def<strong>in</strong>irajmo<br />

ˇse diferenčni operator<br />

∆ijaα := Eiaα −Ejaα. (6.5)<br />

Lema 2. Naj bo pn(x) = <br />

|α|=n cαBα(λ) pol<strong>in</strong>om v B-obliki glede na msimpleks<br />

〈v (1) ,...,v (m+1) 〉. Za i = j velja<br />

(Dijpn)(x) = n· <br />

|α|=n−1<br />

∆ijcαBα(λ). (6.6)<br />

Dokaz. Ker je x = (x1,x2,...,xm) <strong>in</strong> v (i) := (vi 1 ,vi 2 ,...,vi m ), velja<br />

Sledi<br />

xk =<br />

m+1 <br />

ℓ=1<br />

m+1 <br />

(Dijpn)(x) =<br />

λℓx k ℓ, k = 1,2,...,m+1.<br />

k=1<br />

<br />

∂<br />

=<br />

∂λi<br />

(v i k −vj<br />

k<br />

− ∂<br />

∂λj<br />

∂<br />

) pn(x)<br />

∂xk<br />

<br />

pn(x).<br />

.


82 Posploˇsitev Bézierovih krivulj <strong>in</strong> razcvet v sploˇsnem<br />

S premikom <strong>in</strong>deksov v<br />

<br />

α1+α2+···+αm+1=n<br />

n!<br />

α1!α2!···αm+1! cα<br />

<br />

∂<br />

∂λi<br />

− ∂<br />

<br />

λ<br />

∂λj<br />

α1<br />

1 λ α2<br />

2 ···λ αm+1<br />

m+1<br />

dobimo (6.6).<br />

Poglejmo, kako se odvod pol<strong>in</strong>oma pn izraˇza z njegovim razcvetom B(pn).<br />

Lema 3. Naj bo pn ∈ Πn(R m ), <strong>in</strong> naj bo<br />

B(pn) : R m ×R m ×···×R m<br />

<br />

→ R<br />

n<br />

njegov razcvet. Potem je za vsak γ ∈ Z m + , γ-ti odvod pn v točki x podan z<br />

D γ n! <br />

<br />

γ<br />

pn(x) = (−1)<br />

(n−|γ|)! η<br />

η≤γ<br />

|γ−η|<br />

<br />

·B(pn) x,...,x ,x+e<br />

<br />

n−|η|<br />

1 ,...,x+e 1<br />

<br />

η1<br />

Dokaz. Naj bo T standardni m-simpleks,<br />

<br />

m<br />

T := λie i , λi ≥ 0 ∀i,<br />

i=1<br />

Potem lahko za u ∈ x+T zapiˇsemo<br />

u = x+λ1e 1 +λ2e 2 +···+λme m<br />

<br />

<br />

.<br />

<br />

,...,x+e m ,...,x+e m<br />

ηm<br />

m<br />

<br />

λi ≤ 1 . (6.7)<br />

i=1<br />

= λ0x+λ1(x+e 1 )+λ2(x+e 2 )+···+λm(x+e m ),<br />

kjer je λ0 = 1−λ1 −λ2 −···−λm. Pol<strong>in</strong>om pn lahko izrazimo kot<br />

pn(u) = <br />

|α|=n<br />

<br />

B(pn) x,...,x<br />

<br />

α1<br />

,x+e 1 ,...,x+e 1<br />

,...,x+e m ,...,x+e m<br />

<br />

α2<br />

<br />

<br />

Bα(λ),<br />

<br />

αm+1<br />

kjer je λ := (λ0,λ1,...,λm) baricentrična koord<strong>in</strong>ata točke u glede na m-


6.2 Pogoji gladkosti v razcvetni obliki 83<br />

simpleks x+T. Za vsak γ ∈ Z m + velja<br />

n!<br />

(n−|γ|)! ∆γ1<br />

21 ∆γ2<br />

31 ...∆γm<br />

m+1,1 c(n−|γ|,0,...,0)<br />

D γ pn(x) =<br />

n! <br />

<br />

γ<br />

= (−1)<br />

(n−|γ|)! η<br />

η≤γ<br />

|γ−η| c(n−|η|,η1,...,ηm)<br />

n! <br />

<br />

γ<br />

= (−1)<br />

(n−|γ|)! η<br />

η≤γ<br />

|γ−η|<br />

<br />

·B(pn) x,...,x ,x+e<br />

<br />

n−|η|<br />

1 ,...,x+e 1<br />

,...,x+e<br />

<br />

η1<br />

m ,...,x+e m<br />

<br />

,<br />

<br />

ηm<br />

kjer smo uporabili lemo 2 <strong>in</strong> notacijo (6.5).<br />

Zdaj lahko zapiˇsemo pogoje gladkosti za zlepke v več spremenljivkah<br />

v razcvetni obliki. Recimo, da imamo pol<strong>in</strong>oma pn <strong>in</strong> qn totalne stop-<br />

nje n, ki sta def<strong>in</strong>irana na sosednjih m-simpleksih T1 <strong>in</strong> T2.<br />

Če je zlepek,<br />

sestavljen iz pn <strong>in</strong> qn r-krat zvezno odvedljiv, morajo biti določeni pogoji<br />

gladkosti izpolnjeni tudi za razcveta pol<strong>in</strong>omov pn <strong>in</strong> qn. Naj bo T1 :=<br />

〈v (1) ,v (2) ,...,v (k+1) ,v (k+2) ,...,v (m+1) 〉 <strong>in</strong> T2 := 〈v (1) ,v (2) ,...,v (k+1) ,u (k+2) ,<br />

u (k+3) ,...,u (m+1) 〉, <strong>in</strong> naj imata simpleksa T1 <strong>in</strong> T2 skupni k-simpleks K :=<br />

〈v (1) ,v (2) ,...,v (k+1) 〉. Za r-kratno zvezno odvedljivost mora veljati<br />

D β pn(x) = D β qn(x), ∀|β| ≤ r <strong>in</strong> ∀x ∈ 〈v (1) ,v (2) ,...,v (k+1) 〉.<br />

Po lemi 3 je ta pogoj izpolnjen natanko tedaj, ko velja<br />

<br />

B(pn) x,...,x<br />

<br />

n−|β|<br />

,x+e 1 ,...,x+e 1<br />

,...,x+e m ,...,x+e m<br />

<br />

β1<br />

<br />

= B(qn) x,...,x<br />

<br />

n−|β|<br />

<br />

<br />

βm<br />

,x+e 1 ,...,x+e 1<br />

,...,x+e m ,...,x+e m<br />

β1<br />

<br />

<br />

βm<br />

<br />

(6.8)<br />

za |β| ≤ r <strong>in</strong> x ∈ 〈v (1) ,v (2) ,...,v (k+1) 〉.<br />

Na m-simpleksu x+T def<strong>in</strong>irajmo pol<strong>in</strong>oma p r <strong>in</strong> q r preko njunih razcve-<br />

tov<br />

<br />

B(pr) w 1 ,w 2 ,...,w r<br />

<br />

:= B(pn)<br />

<br />

B(qr) w 1 ,w 2 ,...,w r<br />

<br />

:= B(qn)<br />

x,...,x<br />

<br />

n−r<br />

<br />

x,...,x<br />

<br />

n−r<br />

,w 1 ,w 2 ,...,w r<br />

,w 1 ,w 2 ,...,w r<br />

<br />

,<br />

<br />

.


84 Posploˇsitev Bézierovih krivulj <strong>in</strong> razcvet v sploˇsnem<br />

Izpogoja(6.8)sledi, daimata pol<strong>in</strong>oma p r <strong>in</strong>q r enake B-koeficiente na x+T,<br />

kjer je T standardni m-simpleks (6.7). To pa pomeni, da sta enaka, zato sledi<br />

<br />

B(pn) x,...,x ,w<br />

<br />

n−r<br />

1 ,...,w r<br />

<br />

= B(qn) x,...,x ,w<br />

<br />

n−r<br />

1 ,...,w r<br />

<br />

.<br />

ˇSe več, ker lahko vsak x ∈ K zapiˇsemo kot konveksno komb<strong>in</strong>acijo v (1) ,v (2) ,<br />

...,v (k+1) , dobimo naslednji izrek. Trditev je tudi zadostna.<br />

Izrek 21. Naj bosta pn <strong>in</strong> qn pol<strong>in</strong>oma, def<strong>in</strong>irana nad m-simpleksoma T1<br />

<strong>in</strong> T2. Naj velja ˇse F(x) := pn(x) za x ∈ T1 <strong>in</strong> F(x) := qn(x) za x ∈ T2.<br />

Naj imata T1 <strong>in</strong> T2 skupni k-simpleks K. Potem je F ∈ C r (T1∪T2) natanko<br />

takrat, ko velja<br />

<br />

B(pn) v i1<br />

<br />

i2 <strong>in</strong>−r 1 r<br />

,v ,...,v ,w ,...,w<br />

<br />

= B(qn) v i1<br />

<br />

i2 <strong>in</strong>−r 1 r<br />

,v ,...,v ,w ,...,w<br />

za vse w 1 ,w 2 ,...,w r ∈ R m <strong>in</strong> i1,i2,...,<strong>in</strong>−r ∈ {1,2,...,k +1}.<br />

Oglejmo si nekaj zanimivih posebnih primerov.<br />

Če je k = 0, torej, če imata T1 <strong>in</strong> T2 skupno točko v (1) , je F ∈ C r (T1∪T2)<br />

natanko tedaj, ko velja<br />

<br />

B(pn) v (1) ,v (1) ,...,v (1)<br />

,w<br />

<br />

n−r<br />

1 ,...,w r<br />

<br />

= B(qn) v (1) ,v (1) ,...,v (1)<br />

,w<br />

<br />

n−r<br />

1 ,...,w r<br />

<br />

za vse w 1 ,w 2 ,...,w r ∈ R m .<br />

Če je k = m − 1, imata T1 <strong>in</strong> T2 skupno (m − 1)-lice K. Vemo, da je<br />

F ∈ Cr (T1 ∪T2) natanko tedaj, ko je<br />

<br />

B(pn) x,...,x ,w<br />

<br />

n−r<br />

1 ,...,w r<br />

<br />

= B(qn) x,...,x<br />

<br />

n−r<br />

,w 1 ,...,w r<br />

za vse w 1 ,w 2 ,...,w r ∈ R m <strong>in</strong> x ∈ 〈v (1) ,v (2) ,...,v (m) 〉. Vemo, da je T2 =<br />

〈u (m+1) ,K〉. Naj bo<br />

Potem je<br />

u (m+1) =<br />

m+1 <br />

i=1<br />

λ 0 i v(i) ,<br />

<br />

B(qn) x,...,x ,u<br />

<br />

n−1<br />

(m+1)<br />

<br />

=<br />

m+1 <br />

i=1<br />

m+1 <br />

i=1<br />

λ 0 i<br />

λ 0 iB(qn) <br />

= 1.<br />

x,...,x ,v<br />

<br />

n−1<br />

(i)<br />

<br />

.


6.2 Pogoji gladkosti v razcvetni obliki 85<br />

Podobno lahko zapiˇsemo<br />

<br />

B(qn) x,...,x<br />

<br />

n−r<br />

= <br />

|α|=r<br />

α∈Z m+1<br />

+<br />

= <br />

|α|=r<br />

α∈Z m+1<br />

+<br />

,u (m+1) ,u (m+1) ,...,u (m+1)<br />

<br />

<br />

r<br />

B(qn) x,...,x ,v<br />

<br />

n−r<br />

(1) ,...,v (1)<br />

<br />

<br />

B(pn)<br />

x,...,x<br />

<br />

n−r<br />

α1<br />

<br />

<br />

<br />

Bα(λ<br />

<br />

0 )<br />

,...,v (m+1) ,...,v (m+1)<br />

αm+1<br />

,v (1) ,...,v (1)<br />

,...,v (m+1) ,...,v (m+1)<br />

<br />

α1<br />

<br />

<br />

Bα(λ<br />

<br />

0 )<br />

αm+1<br />

za vsak x ∈ 〈v (1) ,v (2) ,...,v (m) 〉. Vsak x lahko zapiˇsemo kot konveksno komb<strong>in</strong>acijo<br />

točk v (1) ,v (2) ,...,v (m) . Tako dobimo<br />

<br />

B(qn)<br />

<br />

|α|=r<br />

α∈Z m+1<br />

+<br />

<br />

<br />

=<br />

<br />

(6.9)<br />

r<br />

<br />

,...,v<br />

<br />

(m+1) ,...,v (m+1)<br />

<br />

Bα(λ<br />

<br />

0 ).<br />

v (i1) ,...,v (<strong>in</strong>−r) ,u (m+1) ,u (m+1) ,...,u (m+1)<br />

<br />

B(pn)<br />

v (i1) ,...,v (<strong>in</strong>−r) ,v (1) ,...,v (1)<br />

α1<br />

αm+1<br />

Enačba (6.9) je posploˇsitev znanega pogoja za r-kratno zvezno odvedljivost<br />

med dvema pol<strong>in</strong>omoma (5.23), če upoˇstevamo, da so vrednosti razcvetov<br />

B(pn)<strong>in</strong>B(qn)vtočkahsimpleksovT1 <strong>in</strong>T2 natančnoB-koeficientipol<strong>in</strong>omov<br />

pn <strong>in</strong> qn (lema 1).<br />

Oglejmo si ˇse sploˇsni primer, 0 ≤ k ≤ m−1. Naj bo<br />

u (j) =<br />

m+1 <br />

i=1<br />

λ j<br />

i v(i) ,<br />

m+1 <br />

i=1<br />

zaj = k+2,k+3,...,m+1. Označimo λ j := (λ j<br />

λ j<br />

i<br />

= 1,<br />

1,λ j<br />

2,...,λ j<br />

m+1). Zaizpeljavo<br />

pogojev gladkosti v razcvetni obliki uporabimo enako idejo kot v prejˇsnjih<br />

primerih.<br />

Izrek 22. Naj bo K := T1 ∩T2 k-simpleks za nek 0 ≤ k ≤ m−1. Potem je


86 Posploˇsitev Bézierovih krivulj <strong>in</strong> razcvet v sploˇsnem<br />

F ∈ Cr (T1 ∪T2) natanko takrat, ko za vse γ ∈ Z m+1<br />

+ , kjer je |γ| ≤ r, velja<br />

<br />

B(qn) v (i1) (<strong>in</strong>−r) (1) (1)<br />

,...,v ,v ,...,v ,...,v<br />

<br />

(k+1) ,...,v (k+1)<br />

,<br />

<br />

=<br />

γ1<br />

γk+1<br />

u (k+2) ,...,u (k+2)<br />

,...,u (m+1) ,...,u (m+1)<br />

<br />

<br />

γk+2<br />

|α(i)|=γi,i=k+2,...,m+1<br />

α(i)∈Z m+1<br />

+<br />

<br />

γm+1<br />

Bα(k+2)(λ k+2 )Bα(k+3)(λ k+3 )···Bα(m+1)(λ m+1 )<br />

<br />

·B(pn) v (i1) (<strong>in</strong>−r) (1) (1)<br />

,...,v , v ,...,v<br />

<br />

α k+2<br />

1 +αk+3<br />

1 +···+αm+1 1<br />

<br />

,..., v (m+1) ,...,v (m+1)<br />

<br />

<br />

α k+2<br />

m+1 +αk+3<br />

m+1 +···+αm+1 m+1<br />

za i1,i2,...,<strong>in</strong>−r ∈ {1,2,...,k + 1}, kjer je α(j) = (α j<br />

1 ,αj 2 ,...,αj m+1 ) za<br />

j = k +2,k +3,...,m+1.<br />

Pogojegladkostilahkozapiˇsemoˇseboljsploˇsno, zapoljubenparrazcvetov<br />

BT,BT ′ nad simpleksoma T,T′ ∈ △. Čeprav simpleksa nista sosednja, mora<br />

med razcvetoma veljati določena zveza.<br />

Potrebujemo dodatne oznake. Naj bo ¯ V mnoˇzica točk dane simpleksne<br />

particije △. Fiksirajmo m-simpleks T0, def<strong>in</strong>irajmo L0(T0) := {T0} <strong>in</strong> naj<br />

bo L1(T0) mnoˇzica vseh m-simpleksov particije △, različnih od T0, ki imajo<br />

neprazen presek s T0,<br />

L1(T0) := {T ∈ △, T ∩T0 = ∅}\L0(T0).<br />

Podobno za 1 ≤ k ≤ r0 <strong>in</strong>duktivno def<strong>in</strong>irajmo<br />

Lk(T0) := {T ∈ △, T ∩T0 = ∅ za nek T ′ ∈ Lk−1(T0)}\Lk−1(T0),<br />

kjer je r0 := ⌊n/(n − r)⌋. Potem za vsak Tk ∈ Lk(T0) obstaja veriga msimpleksov<br />

T1,...,Tk−1, tako, da velja Ti ∈ Li(T0), i = 1,2,...,k <strong>in</strong> Ti ∩<br />

Ti+1 = ∅, i = 1,2,...,k − 1. Očitno je T0 ∩ T1 = ∅, zato ta veriga msimpleksov<br />

povezuje T0 <strong>in</strong> Tk.<br />

Zdaj lahko zapiˇsemo karakterizacijski izrek za zlepke v S r n(△).<br />

Izrek 23. Naj bo s ∈ Sr n (△) <strong>in</strong> naj bo BT razcvet za s|T,∀T ∈ △. Potem za<br />

vsak Tk ∈ Lk(T),1 ≤ k ≤ r0, razcveta BT <strong>in</strong> BTk zadoˇsčata pogojem gladkosti<br />

na k-tem kolobarju<br />

<br />

1,1 1,n−r k,1 k,n−r 1 n−k(n−r)<br />

v ,...,v ,...,v ,...,v ,x ,...,x <br />

BT<br />

= BTk<br />

v 1,1 ,...,v 1,n−r ,...,v k,1 ,...,v k,n−r ,x 1 ,...,x n−k(n−r)


6.2 Pogoji gladkosti v razcvetni obliki 87<br />

za vse v i,1 ,v i,2 ,...,v i,n−r ∈ Ti−1 ∩ Ti ∩ ¯ V, i = 1,2,...,k, za vse x 1 ,x 2 ,...,<br />

x n−k(n−r) ∈ R m , <strong>in</strong> za poljubno izbiro verig {T0,T1,...,Tk}, ki povezujejo<br />

T0 := T <strong>in</strong> Tk.<br />

Velja tudi obrat, če odsekoma pol<strong>in</strong>omska funkcija s, s|Ti ∈ Πn(R m ),<br />

zadoˇsča pogojem gladkosti na k-tem kolobarju za 1 ≤ k ≤ r0, je s ∈ S r n(△).<br />

Dokaz. Vzemimo T1 ∈ L1(T0). Po izreku 21 morajo biti izpolnjeni pogoji<br />

gladkosti<br />

<br />

1,1 1,n−r 1 r<br />

v ,...,v ,w ,...,w <br />

1,1 1,n−r 1 r<br />

= BT1 v ,...,v ,w ,...,w <br />

BT0<br />

za vse v 1,1 ,v 1,2 ,...,v 1,n−r ∈ T0 ∩T1 ∩ ¯ V <strong>in</strong>w 1 ,w 2 ,...,w r ∈ R m . Zasimpleks<br />

T2 ∈ L2(T0), za katerega velja T1 ∩ T2 = ∅, velja<br />

BT1<br />

<br />

1,1 1,n−r 2,1 2,n−r 1 r−(n−r)<br />

v ,...,v ,v ,...,v ,w ,...,w =<br />

1,1 1,n−r 2,1 2,n−r 1 r−(n−r)<br />

v ,...,v ,v ,...,v ,w ,...,w <br />

BT2<br />

za vse v 2,1 ,v 2,2 ,...,v 2,n−r ∈ T1 ∩T2 ∩ ¯ V <strong>in</strong> w 1 ,w 2 ,...,w r−(n−r) ∈ R m . Tako<br />

dobimo pogoj<br />

1,1 1,n−r 2,1 2,n−r 1 r−(n−r)<br />

BT0 v ,...,v ,v ,...,v ,w ,...,w =<br />

1,1 1,n−r 2,1 2,n−r 1 r−(n−r)<br />

v ,...,v ,v ,...,v ,w ,...,w .<br />

BT2<br />

Za sploˇsni primer nadaljujemo gornji razmislek s pomočjo <strong>in</strong>dukcije.<br />

Dokaˇzimo ˇse obrat. Naj bo s, s|Ti ∈ Πn(R m ), odsekoma pol<strong>in</strong>omska<br />

funkcija nad △, ki zadoˇsča pogojem gladkosti na vseh k-kolobarjih, k =<br />

1,2,...,r0. Potem s zadoˇsča tudi pogojem gladkosti na prvem kolobarju, to<br />

pa so natanko pogoji gladkosti v razcvetni obliki iz izreka 21. Torej velja<br />

s ∈ S r n (△).<br />

Primer: Oglejmo si primer m = 1. Naj bo △ = {v (i) : v (i) < v (i+1) ∀i}. Za<br />

zlepek s ∈ S n−1<br />

n (△) naj bo Bi razcvet za s| [v (i) ,v (i+1) ] za vsak i. Potem velja<br />

Bi<br />

<br />

(i+1) (i+2) (i+k)<br />

v ,v ,...,v ,w1,w2,...,wn−k =<br />

<br />

(i+1) (i+2) (i+k)<br />

Bi+k v ,v ,...,v ,w1,w2,...,wn−k<br />

za vse w1,w2,...,wn−k ∈ R <strong>in</strong> 1 ≤ k ≤ n. Ta pristop ima pomembno vlogo<br />

pri konstrukciji zlepkov <strong>in</strong> se precej razlikuje od klasičnega, ki uporablja za<br />

bazo B-zlepke.<br />

Primer: Naj bo m = 2 <strong>in</strong> naj bo △ triangulacija tipa 1 (glej sliko 6.1). Za<br />

zlepek s ∈ S 2 4 (△) naj bodo BT1,BT2,BT3 razcveti za s|T1,s|T2,s|T3, kjer so<br />

T1,T2,T3 označeni na sliki 6.1. Potem velja<br />

BT1(x,y,u,v) = BT2(x,y,u,v), <strong>in</strong> BT1(y,y,v,v)= BT3(y,y,v,v).<br />

Pri tem niti trikotnika T1 <strong>in</strong> T2, niti T1 <strong>in</strong> T3 nista sosednja.


88 Posploˇsitev Bézierovih krivulj <strong>in</strong> razcvet v sploˇsnem<br />

Slika 6.1: Pogoji gladkosti nad triangulacijo tipa 1.


Literatura<br />

[1] C.deBoor,B-formbasics, <strong>in</strong>G.Far<strong>in</strong>(ed.), GeometricModel<strong>in</strong>g, SIAM,<br />

Philadelphia, 1997, 131–148.<br />

[2] C. de Boor, A Practical Guide to Spl<strong>in</strong>es, Revised Edition, Spr<strong>in</strong>ger-<br />

Verlag, New York, 2001.<br />

[3] C. de Boor, K. Höllig, B-spl<strong>in</strong>es without divided differences, <strong>in</strong>: G. E.<br />

Far<strong>in</strong>, ed., Geometric Model<strong>in</strong>g: Algorithms and New Trends, SIAM,<br />

Philadelphia, PA, 21–27.<br />

[4] T. DeRose, R. Goldman, A tutorial <strong>in</strong>troduction to blossom<strong>in</strong>g, In H.<br />

Hagen and D. Roller (eds.), Geometric Model<strong>in</strong>g, Spr<strong>in</strong>ger, 1991.<br />

[5] G. Far<strong>in</strong>, editor, Geometric Model<strong>in</strong>g - algorithms and new trends,<br />

SIAM, Philadelphia, 1987.<br />

[6] G. Far<strong>in</strong>, Curves and Surfaces for Computer Aided Geometric Design,<br />

Academic Press, Inc., 2002.<br />

[7] G. Far<strong>in</strong>, J. Hoschek & M.-S. Kim, editors, Handbook of Computer<br />

Aided Geometric Design, Elsevier Science (North Holland), 2002.<br />

[8] F. Kriˇzanič, L<strong>in</strong>earna algebra <strong>in</strong> l<strong>in</strong>earna analiza, DZS d.d., 1993.<br />

[9] J. Lane, R. Riesenfeld, A theoretical development for the computer generation<br />

and display of piecewise polynomial surfaces. IEEE Trans. Pattern<br />

Analysis Mach<strong>in</strong>e Intell., 2(1): 35-46, 1980.<br />

[10] E. Lee, A note on blossom<strong>in</strong>g, CAGD, 6(4), 1989, pp. 359–362.<br />

[11] L. Piegl, W. Tiller, The NURBS book, Spr<strong>in</strong>ger, Berl<strong>in</strong>, 1995.<br />

[12] L. Ramshaw, Blossoms arepolar forms, CAGD, 6(4), 1989, pp. 323–359.<br />

[13] T. W. Sederberg, Computer aided geometric design, course notes, 2009.<br />

89


90 LITERATURA<br />

[14] L. L. Schumaker, M-J. Lai, Spl<strong>in</strong>e functions on triangulations, Encyclopedia<br />

of mathematics and its applications, Cambridge University Press,<br />

2007.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!