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 ...
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.