Kapitola 7 Kˇ rivky a plochy technick´ e praxe V technick´e praxi se setk´av´ame s t´ım, ˇze potˇrebujeme kˇrivky a plochy, kter´e se daj´ı libovolnˇe upravovat a z´aroveˇ n je jejich matematick´e vyj´adˇren´ı jednoduch´e. V ˇsedes´at´ ych letech minul´eho stolet´ı se objevily Fergusonovy, pozdˇeji B´ezierovy a Coonsovy kˇrivky a plochy. Na nˇe nav´azaly splajny a v souˇcasn´e dobˇe se v modern´ıch CAD syst´emech pouˇz´ıvaj´ı NURBS kˇrivky a plochy. V roce 2003 se ve studiu Maya objevily plochy T-spline.
7.1
Z´ akladn´ı princip
Z´akladem vˇsech v´ yˇse uveden´ ych ploch a kˇrivek jsou ˇr´ıdic´ı body. Kˇrivka ˇci plocha jimi obecnˇe neproch´az´ı, jedn´a se tedy o aproximaˇcn´ı kˇrivky a plochy. K tˇemto bod˚ u jsou podle typu vybr´any ˇr´ıdic´ı – b´ azov´ e funkce - bersteinovy polynomy pro b´ezierovy kˇrivky a plochy, B-spline funkce pro splajny a NURBS. V´ ysledn´ y bod na kˇrivce ˇci ploˇse je d´an jako line´arn´ı kombinace ˇr´ıdic´ıho bodu s funkci k nˇemu patˇr´ıc´ı. Vysvˇetl´ıme si to na B´ezierovˇe kˇrivce. M´ame d´any ˇctyˇri ˇr´ıdic´ı body P0 , P1 , P2 , P3 a b´azov´e bersteinovy polynomy:
B0 (t) B1 (t) B2 (t) B3 (t)
= = = =
(1 − t)3 3t (1 − t)2 3t2 (1 − t) t3
(7.1)
Parametr t prob´ıh´a v intervalu od nuly do jedn´e a pro kaˇzdou hodnotu urˇc´ı jeden bod na v´ ysledn´e kˇrivce. Vezmeme pevnˇe parametr t roven 0, 25 a vypoˇc´ıt´ame v´ ysledn´ y bod jako kombinaci C(0, 25) = P0 B0 (0, 25) + P1 B1 (0, 25) + P2 B2 (0, 25) + P3 B3 (0, 25) 1
2
ˇ ´ PRAXE KAPITOLA 7. KRIVKY A PLOCHY TECHNICKE
Vypoˇc´ıt´ame hodnoty bersteinov´ ych polynom˚ u a pak postupnˇe vezmeme x, y, zovou souˇradnici jednotliv´ ych bod˚ u a dostaneme tˇri ˇc´ısla, kter´a ud´avaj´ı v´ ysledn´ y bod na kˇrivce. Matematick´ y z´apise je: Q(t) =
3 X
Pi Bi (t), t ∈ h0, 1i
(7.2)
i=0
Pro plochy je v´ ypoˇcet obt´ıˇznˇejˇs´ı. Jako vstup m´ame s´ıt’ ˇr´ıdic´ıch bod˚ u a tedy kaˇzd´ y bod m´a dva indexy – ˇr´adkov´ y a sloupcov´ y. Pˇri v´ ypoˇctu pˇriˇrad´ıme kaˇzd´emu bodu dvˇe b´azov´e funkce, kter´e odpov´ıdaj´ı index˚ um dan´eho bodu, tzn. bod P31 bude n´asoben bersteinov´ ymi polynomy B3 a B1 . Jak v´ıme plocha je d´ana dvˇema parametry, proto prvn´ı funkce bude vyˇc´ıslena s prvn´ım parametrem a druh´a s druh´ ym parametrem. Matematicky m˚ uˇzeme vˇsechny tyto kombinace zapsat jako: 3 X 3 X
S(r, s) =
Pij Bi (r)Bj (s),
(7.3)
i=0 j=0
Tento princip funguje i pro dalˇs´ı typy kˇrivek a ploch jen s r˚ uzn´ ymi tvary b´azov´ ych polynom˚ u.
7.1.1
Fergusonovy kˇ rivky a plochy
Z´akladn´ı oblouk je urˇcen ˇctyˇrmi body P0 , P1 , P2 , P3 . Kˇrivka m´a krajn´ı body P0 , P3 . −−→ −−→ Teˇcn´e vektory v tˇechto bodech jsou P0 P1 , P3 P2 . Velikost tˇechto vektor˚ u ovlivˇ nuje tvar kˇrivky – ˇc´ım je vektor vˇetˇs´ı, t´ım v´ıce se kˇrivka k vektoru pˇribliˇzuje. Kˇrivka je definov´ana parametrick´ ymi rovnicemi: Q(t) =
3 X
Pi Fi (t), t ∈ h0, 1i
(7.4)
i=0
F0 (t) F1 (t) F2 (t) F3 (t)
= = = =
t3 − t2 − t + 1 t3 − 2t2 + t −3t3 + 4t2 t3 − t2
(7.5)
Dvojrozmˇern´ ym zobecnˇen´ım Fergusonov´ ych kˇrivek dostaneme Fergusonovy plochy. Jsou d´any s´ıt´ı re´aln´ ych bod˚ u Pij a jejich rovnice je: Q(r, s) =
3 X 3 X
Pij Fi (r)Fj (s),
i=0 j=0
kde Fi jsou polynomy definovan´e v rovnici (6.5) a (r, s) ∈ h0, 1i × h0, 1i .
(7.6)
´ ´I PRINCIP 7.1. ZAKLADN
3
. Obr´azek 7.1: Fergusonova plocha
7.1.2
B´ ezierovy kˇ rivky a plochy
B´ezierovy kˇrivky a plochy jsou velmi ˇcasto pouˇz´ıv´any v technick´e praxi. Za jejich zakladatele je povaˇzov´an P. E. B´ezier a nez´avisle na nˇem tak´e P. de Casteljau. Kˇrivka je −−→ −−→ urˇcena ˇctyˇrmi body a proch´az´ı prvn´ım a posledn´ım z nich. Vektory P0 P1 , P3 P2 urˇcuj´ı teˇcny v krajn´ıch bodech. Jejich smˇernice jsou rovny tˇretinˇe d´elky tˇechto u ´seˇcek. Kˇrivka je definov´ana parametrick´ ymi rovnicemi: Q(t) =
3 X
Pi Bi (t), t ∈ h0, 1i
(7.7)
i=0
B0 (t) B1 (t) B2 (t) B3 (t)
= = = =
(1 − t)3 3t (1 − t)2 3t2 (1 − t) t3
(7.8)
Obecn´a B´ezierova kˇrivka vznikne zobecnˇen´ım pˇredchoz´ıho pˇr´ıpadu. B´azov´e polynomy tvoˇr´ı binomick´ y rozvoj. Mˇejme d´ano n + 1 ˇr´ıdic´ıch bod˚ u, potom je B´ezierova kˇrivka tvaru: Q(t) =
n X i=0
Pi Bin (t), t ∈ h0, 1i ,
(7.9)
4
ˇ ´ PRAXE KAPITOLA 7. KRIVKY A PLOCHY TECHNICKE
. Obr´azek 7.2: B´ezierova kˇrivka a plocha
Bin (t)
n i = t (1 − t)n−i . i
Dvojrozmˇern´ ym zobecnˇen´ım B´ezierov´ ych kˇrivek dostaneme B´ezierovy plochy. Jsou d´any s´ıt´ı re´aln´ ych bod˚ u Pij a rovnice plochy je:
Q(r, s) =
3 X 3 X
Pij Bi (r)Bj (s),
(7.10)
i=0 j=0
kde Bi jsou polynomy definovan´e v rovnici (6.8) a (r, s) ∈ h0, 1i × h0, 1i.
7.1.3
Coonsovy kˇ rivky a plochy
Podobn´e Fergusonov´ ym kˇrivk´am jsou Coonsovy kˇrivky, pojmenovan´e po S. A. Coonsovi. Jedin´ ym rozd´ılem je tvar b´azov´ ych polynom˚ u. Z´akladn´ı oblouk je opˇet urˇcen ˇctyˇrmi body P0 , P1 , P2 , P3 . Kˇrivka vˇsak nezaˇc´ın´a ani nekonˇc´ı v ˇz´adn´em z tˇechto bod˚ u. Poˇc´ateˇcn´ı a koncov´ y bod leˇz´ı v antitˇeˇziˇst´ıch troj´ uheln´ık˚ u P0 P1 P2 a P1 P2 P3 . Kˇrivka je definov´ana parametrick´ ymi rovnicemi: 3
1X Q(t) = Pi Ci (t), t ∈ h0, 1i 6 i=0
(7.11)
´ ´I PRINCIP 7.1. ZAKLADN C0 (t) C1 (t) C2 (t) C3 (t)
5 = = = =
(1 − t)3 3t3 − 6t2 + 4 3t3 + 3t2 + 3t + 1 t3
(7.12)
Jednotliv´e Coonsovy kubiky je moˇzn´e hladce napojit. Pokud m´a navazuj´ıc´ı oblouk prvn´ı tˇri body shodn´e s posledn´ımi tˇremi pˇredchoz´ıho oblouku, dost´av´ame po ˇc´astech polynomi´aln´ı kˇrivku, kter´a se naz´ yv´a Coons˚ uv kubick´ y B-spline. Dvojrozmˇern´ ym zobecnˇen´ım Coonsov´ ych kˇrivek dostaneme Coonsovy plochy. Jsou d´any s´ıt´ı re´aln´ ych bod˚ u Pij a rovnice plochy je: Q(r, s) =
3 X 3 X
Pij Ci (r)Cj (s),
(7.13)
i=0 j=0
kde Ci jsou polynomy definovan´e v rovnici (6.12) a (r, s) ∈ h0, 1i × h0, 1i
7.1.4
B-spline kˇ rivky a plochy
Ve vˇsech pˇredchoz´ıch pˇr´ıpadech prob´ıhal parametr t interval od nuly do jedn´e a z´aleˇzelo pouze na tvaru b´azov´ ych funkc´ı. Pˇridejme nyn´ı k b´azov´ ych funkc´ım posloupnost re´aln´ ych ˇc´ısel, podle kter´e se budou poˇc´ıtat jednotliv´e hodnoty funkc´ı. Tyto b´azov´e funkce se naz´ yvaj´ı B-spline funkce a posloupnosti se ˇr´ık´a uzlov´ y vektor. Na uzlov´ y vektor jsou kladena dalˇs´ı omezen´ı - je neklesaj´ıc´ı, uzly se mohou opakovat jen tolikr´at, kolik je stupeˇ n kˇrivky a vˇetˇsinou b´ yv´a v intervalu od nuly do jedn´e, ale obecnˇe nemus´ı. B-spline funkce je definov´ana rekurentnˇe n´asleduj´ıc´ım pˇredpisem: Necht’ t = (t0 , t1 , . . . tn ) je uzlov´ y vektor. B-spline funkce je definov´ana jako: ( 1 pro t ∈ hti , ti+1 ) Ni0 (t) = 0 jinak Nik (t) =
t − ti ti+k+1 − t Nik−1 (t) + N k−1 (t) , ti+k − ti ti+k+1 − ti+1 i+1
(7.14)
kde 0 ≤ i ≤ n − k − 1, 1 ≤ k ≤ n − 1, 00 := 0. B-spline kˇrivka je d´ana klasicky jako kombinace bod˚ u s hodnotou pˇr´ısluˇsn´e b´azov´e funkce. V´ ypoˇcet je vˇsak n´aroˇcnˇejˇs´ı a pouˇz´ıv´a se k nˇemu deBoor˚ uv algoritmus, kter´ y je zaloˇzen na urˇcit´ ych vlastnostech B-spline funkc´ı. Mˇejme d´ano m+1 ˇr´ıdic´ıch (kontroln´ıch) bod˚ u P0 , P1 , . . . , Pm , kde Pi ∈ Rd , uzlov´ y vektor t = (t0 , t1 , . . . tm+n+1 ). B-spline kˇrivka stupnˇe n pro ˇr´ıdic´ı body Pi a uzlov´ y
6
ˇ ´ PRAXE KAPITOLA 7. KRIVKY A PLOCHY TECHNICKE
Obr´azek 7.3: Uk´azka B-spline funkc´ı - ekvidistantn´ı a neekvidistantn´ı vektor t je definov´ana jako: C(t) =
m X
Pi Nin (t),
(7.15)
i=0
kde Nin jsou b´azov´e B-spline funkce. Plocha je definov´ana nad s´ıt´ı bod˚ u se dvˇema stupni, dvˇema uzlov´ ymi vektory pro ˇr´adky a sloupce. S(r, s) =
k X l X
Pij Ni (r)Nj (s),
(7.16)
i=0 j=0
7.1.5
NURBS kˇ rivky a plochy
Zkratka NURBS b´ yv´a vtipnˇe vysvˇetlov´ana jako Nobody Understand Rational BSpline. Ve skuteˇcnosti vˇsak znamen´a neuniformn´ı racion´aln´ı B-spline. Kromˇe slova racion´aln´ı jsme se jiˇz se vˇsemi ostatn´ımi pojmy setkali. B-spline funkce a tedy i kˇrivky a plochy byly probr´any v pˇredchoz´ı ˇc´asti. Jsou to aproximaˇcn´ı kˇrivky a plochy dan´e ˇr´ıdic´ımi body a spjat´e s B-spline funkcemi. Tyto funkce jsou zad´any rekurentnˇe a jejich tvar z´avis´ı na uzlov´em vektoru. Neuniformn´ı znamen´a, ˇze rozd´ıl sousedn´ıch ˇc´ısel v uzlov´em vektoru nen´ı konstantn´ı. Tj. pr˚ ubˇeh kˇrivkou nen´ı plynul´ y, coˇz d´av´a vˇetˇs´ı moˇznosti pˇri u ´pravˇe tvaru. Pojem racion´aln´ı vznikl pˇrid´an´ım vah k bod˚ um. Kaˇzd´emu bodu je pˇriˇrazeno obvykle kladn´e ˇc´ıslo, kter´e ud´av´a, jakou silou se bude kˇrivka k dan´emu bodu pˇritahovat. Pokud je v intervalu ¡0,1¿, znamen´a to, ˇze vliv je mal´ y a kˇrivka jde od bodu d´al. Pokud je vˇetˇs´ı neˇz jedna, zvyˇsuje se s´ıla tohoto bodu a ten si kˇrivku pˇrit´ahne. Geometricky je v´ ypoˇcet plochy s v´ahami ˇreˇsen rozˇs´ıˇren´ım prostoru o dimenzi v´ yˇse.
´ ´I PRINCIP 7.1. ZAKLADN
7
Obr´azek 7.4: Vliv v´ahy na tvar kˇrivky Za ˇctvrtou souˇradnici bodu se bere v´aha a poˇc´ıt´a se s n´ı stejnˇe jako s ostatn´ımi souˇradnicemi. Na konci v´ ypoˇctu se vahou prvn´ı tˇri vypoˇcten´e hodnoty vydˇel´ı. Matematicky to lze zapsat jako: Pm wi Pi Nin (t) , C (t) = Pi=0 m n i=0 wi Ni (t)
(7.17)
NURBS kˇrivky a plochy se pouˇz´ıvaj´ı v CAD syst´emech pro jejich velmi dobr´e modelaˇcn´ı schopnosti. Zmˇenou polohy bodu, velikosti v´ahy ˇci tvarem uzlov´eho vektoru se m˚ uˇze mˇenit lok´alnˇe tvar kˇrivky ˇci plochy. Oproti pˇredchoz´ım typ˚ um kˇrivek dovedou NURBS jako jedin´e pˇresnˇe vyj´adˇrit kuˇzeloseˇcky a tedy s nimi jdou konstruovat z´akladn´ı tˇelesa (kuˇzel, v´alec, anuloid, atd.). Obecn´a NURBS plocha vypad´a matematicky jiˇz pomˇernˇe sloˇzitˇe: Pq Pr m n i=0 j=0 wij Pij Ni (u) Nj (v) Pq Pr , C (u, v) = n m i=0 j=0 Ni (u) Nj (v)
Obr´azek 7.5: NURBS plocha a jej´ı ˇr´ıdic´ı s´ıt’
(7.18)
8
7.1.6
ˇ ´ PRAXE KAPITOLA 7. KRIVKY A PLOCHY TECHNICKE
T-spline
N´asledovn´ıkem NURBS se staly T-spline plochy. Jsou ve vˇsem podobn´e NURBS ˇ ´I PRAploch´am – ˇr´ıdic´ı body, b´azov´e B-spline funkce, v´ahy ALE NEPOTREBUJ ˇ Jejich uspoˇr´ad´an´ı je libovoln´e a jsou propojeny pouze pomoc´ı VIDELNOU S´IT. lok´aln´ıch uzlov´ ych vektor˚ u, kter´e popisuj´ı jejich vztah k ostatn´ım bod˚ um v okol´ı. Nepravideln´e navazov´an´ı je naz´ yv´ano T-junctions, coˇz je m´ısto, kde v s´ıti bod˚ u leˇz´ı jeden krajn´ı bod hrany uprostˇred hrany jin´e. V´ yhodou pouˇz´ıv´an´ı T-spline je omezen´ı poˇctu kontroln´ıch bod˚ u. Kaˇzd´ y NURBS plocha je z´aroveˇ n i T-spline. Pomoc´ı algoritmu nazvan´eho T-spline simplification lze omezit poˇcet ˇr´ıdic´ıch bod˚ u p˚ uvodn´ı NURBS plochy na polovinu aˇz tˇretinu. D´ale se zbav´ıme tzv. superflous(nadbyteˇcn´ ych) bod˚ u body! superflous, kter´e jsou v NURBS s´ıti pouze pro doplnˇen´ı jej´ı pravidelnosti. Dalˇs´ı pˇrednost´ı T-spline je velmi dobr´e napojov´an´ı libovolnˇe velk´ ych ploch. Pro grafiky je tak´e velmi v´ yhodn´a funkce pˇrid´av´an´ı nov´ ych bod˚ u pomoc´ı algoritmu Tspline refinement bez zmˇeny tvaru v´ ysledn´e plochy a bez pˇrid´av´an´ı cel´eho sloupce a ˇr´adku do s´ıtˇe. Pravidla pro jejich tvorbu jsou n´aroˇcnˇejˇs´ı, ale z´ajemci je naleznou v odkazech. s 1
1
0.5
1 1 t
0.5
1
0.5
2 1 1
1.5
1.5
2
1.5 1
Obr´azek 7.6: Obecn´a T-mesh
´ ´I PRINCIP 7.1. ZAKLADN
Obr´azek 7.7: Obecn´a T-spline plocha (z = 0, z obecn´e)
9