FERGUSONOVA KUBIKA C F F F ( u) = Q F ( u) + Q F ( u) + Q F ( u) + Q F ( u), u F ( u) = u ( u) = u + ( u) = u u ( u) = u u u + u + u Q Q Q Q C napojení Fergusonových kubk Kubcký splne C má dva stupně volnost Q + ( = ) = ( = ) X s X s ( ) Q Q = Q + 4Q + Q ( ) Q Q = Q + 4Q + Q n n n n n Q Q Q Q
Cardnal Splnes Tečna v bodě P je určena pomocí bodů P + P - ( c) ( P P ) = τ k k + k c parametr napětí spec.pro c=o dostáváme Catmull-Rom Splnes C spojtost, lokalta změn, Catmull-Rom Splnes 4 Tečný vektor v bodě P je rovnoběžný s vektorem P - P + Výpočet oblouků probíhá postupně a to nejprve pomocí bodů P, P, P, P, poté body P, P, P, P 4 atd. Př dvojnásobném výskytu prvního a posledního bodu tj. např. P, P, P, P,..., P n-, P n, P n bude křvka nterpolovat všem body. ( ) ( ) R u = R u P, u = R := + t t t 5 R := + t t R := + t t t R := t t
COONSOVA KUBIKA 5 C ( u) = C ( u), u C ( ) u = ( u) 6 P = C C C ( u) = ( u 6u + 4) 6 ( u) = ( u + u + u + ) 6 ( u) = u 6 COONSOVA KUBIKA 6 C ( u) = C ( u), u P = Q P V V P Q = V Q = V Q P P
COONSŮV V KUBICKÝ B-SPLINE B 7 BÉZIEROVA KUBIKA 8 ( ), ( ) C u = B u V, u B B B B,,, = ( u) = ( u) ( u) = u( u) ( u) = u ( u),( u) = u V V V V 4
BÉZIEROVA A FERGUSONOVA KUBIKA 9 Fergusonovu kubku můžeme vyjádřt jako Bezerovu kubku. Nechť je Fergusonova kubka dána body Q, Q a tečným vektory Q, Q. Pak pro vrcholy Bezerovy kubky V, V, V, V jednoduše odvodíme vztah Q = V Q = Q = Q = V ( V V ) ( V V ) Q = V Q V V Q = V V = Q V = Q + V = Q V = Q Q Q Q Coonsova kubka a Bezerova kubka Coonsův kubcký splne můžeme vyjádřt jako Bezerovu kubku. Nechť je Coonsův kubcký splne dán řídícím polygonem P,P,P,P. Pak pro vrcholy Bezerovy kubky V, V, V, V platí: (V, V anttěžště, V =V +(P -P )/6, V =V +(P -P )/6) V = P + P + P 6 6 V = P + P V = P + P V = P + P P 6 6 5
Bézerova křvka st. k k ( ), k ( ) C u = B u V, u = k B, k u t t ( ) = ( ) k Bezerovy křvky jsou symetrcké Jestlže obrátíme pořadířídících bodů, dostaneme stejnou křvku ( ) = ( ) B t B t, n n, n n n n n ( ) = ( ) n t t t t De Castaljau algortmus Je dáno pole řídících bodů arrvrcholy(), =..n For j = To n- For = To n-j- arrvrcholy()()=(-t)*arrvrcholy()()+t* arrvrcholy(+)() arrvrcholy()()=(-t)*arrvrcholy()()+t* arrvrcholy(+)() arrvrcholy()()=(-t)*arrvrcholy()()+t* arrvrcholy(+)() Next Next Rhno.AddPont arrvrcholy() 6
Napojení Bezerových křvek n n n X ( t) = n B, n ( t) ( V + V ) = n B, n ( t) V + B, n ( t) V = = = Dervace je určena rozdílem Bezerových křvek nžšího stupně s řídícím polygony V, V,, V n- a V, V,, V, C Bezerův splne shodnost druhé dervace odpovídá shodným druhým dferencím n n X t = n n B t R R = n n B t V V + V = = ( ) ( ), n ( ) ( + ) ( ), n ( )( + + ) P P + P = Q Q + Q ( P P ) ( P P ) = ( Q Q ) ( Q Q ) ( P P ) = ( P P ) + ( Q Q ) =Q =Q Q =Q Napojení Bezerových křvek 4 C Bezerův splne shodnost druhé dervace odpovídá shodným druhým dferencím ( P P ) = ( P P ) + ( Q Q ) PQ = P Q P P =Q Q P Q P Q 7
Zvýšen ení stupně Bezerovy křvky 5 ( α ) Q P P = α + α = =... n + n + Př: Kvadratcká Bezerova křvka je dána body P, P, P. Zadejte tutéž parabolu pomocí 4 řídících bodů. Q = P ; Q = P + P ; Q = P + P ; Q = P X( t ) = ( t) Q+ t ( t) Q+ t ( t) Q+ t Q X( t ) = P Pt + Pt + t P t P+ t P X( t ) = ( t + t ) P + ( t + t) P+ t P N B-SPLINE t t, t pro jnde + m = = ( ) k X ( u) PN u k k + k + = ( ) ( ) k N t = N t + N ( t) t t t t + t+ k t t+ k + t+ 6 Cox de Boorova formule 8
B-SPLINE BÁZOVB ZOVÉ FUNKCE 7 N k k + k + k N ( t) = N ( t) + N+ ( t) = t+ k t t+ k + t+ t t, t pro jnde + t t t t [,] [ ] t t N = t t, jnde [ ] [ ] t t, N = t t, jnde [ ] [ ] t t, N = 4 t t, 4 jnde BÁZOVÉ FUNKCE KUBICKÉHO B-SPLINEB 8 t t, t+ N = pro jnde N, N, N, N, 9
OTEVŘEN ENÁ B-SPLINE KŘIVKAK 9 P P C n ( u) = N, p ( u) P, u p u um p = u = u = U = {,,,,,,, 4} P u = u = u = u = u = 4 u = P N, N, N, N, B-SPLINE Křvka je zadaná: m+ řídícím body P Stupněm křvky k m = = ( ) k X ( t) PN t Uzlovým vektorem parametru {t, t,, t m+k+ } Na každém ntervalu uzlového vektoru je nejvýše k+ bázových funkcí nenulových
Lokalta změn N t t, t pro jnde k k + k + = ( ) ( ) k N t = N t + N+ ( t) + t t t t t t t t + k + k + + N k je nenulová na ntervalu [t,t +k+ ] Vlv stupně křvky Změna vrcholu P má vlv na křvku vykreslenou v ntervalu [t, t +k+ ] Čím nžšího stupně křvka je, tím těsněj přmyká k řídícímu polygonu k = 7 k=5 k=
Násobnost uzlu parametrů B-splne Nechť t je r násobný uzel vektoru parametrů {t, t,, t m+k+ } B- splne křvky stupně k. Pak v bodě X(t ) je křvka C k-r spojtá. m = 7, k = 4 u - u 4 u 5 u 6 - u 7 u 8 u 9 - u u u - u 6 u 7 u 8 - u.5.5.75.5.65.75.875 Ukotvená B-splne 4 B-splne křvka stupně k s uzlovým vektorem parametrů { t = t =... = t, t,..., t = t = t } k k + n k n k + n je Bezerovou křvkou stupně k. Počet ntervalů uzlového vektoru nenulové délky je roven počtu segmentů křvky Bernstenovy polynomy jsou specální B-splne bazí. Důkaz-m... k=, u=(,,,). C(t)=(-t)V +tv. Nechť věta platí pro k k + t t t+ k + t N ( t) = B, k ( t) + B +, k ( t) t t t t + k + k + + ( ) = ( ) + ( ) ( ) = ( ) N t tb t t B t B t k +, k +, k, k + NURBS
Podmínka konvexního obalu 5 Pro každou hodnotu u v ntervalu [u, u + ] křvka leží v konvexním obalu řídícího polygonu P, P +,, P -k. (Segment křvky leží v konvexním obalu k+ řídících bodů) [u 4,u 5 ] [u 9,u ] B-splne m=, k= u u u u u 4 u 5 u 6 u 7 u 8 u 9 u u u u u 4..5.7.5.6.75.87 Varaton Dmnshng property, Affne nvarance 6 Křvka protne přímku v nejvýše tolka bodech, v kolka protne její řídící polygon Afnní nvarance
Vložen ení nového uzlu 7 Je dána množna m+ řídících bodů P, P,..., P m, stupeň k, uzlový vektor parametrů T = { t, t,..., t m+k+ }. Chceme vložt nový uzel t, anž by se změnla křvka. Pro hodnotu t v ntervalu [t, t + ] křvka leží v konvexním obalu řídícího polygonu P, P +,, P -k, ostatní bázové funkce jsou nula. ( α ) Q = P + α P Vložen ení nového uzlu 8 Je dána množna m+ řídících bodů P, P,..., P m, položíme P m+ =o m m t t t t + = = t+ k t = t+ k + t+ k k + k + ( ) ( ) ( ) k ( ) C t = P N t = P N t + P N t = t t t t = P N t + P N t = m m+ k k = t+ k t = t+ k t t t t t Q = P + P + k t+ k t t+ k t ( α ) + k ( ) ( ) m+ t t t+ k t k = P + P N t = t+ k t t+ k t Q = P + α P ( ) 4
9 Stupeň n, m+ bodů P Násobné vložen ení uzlu Hodnotu t vložíme do uzlového vektoru h-krát. ( α ) Q = P + α P, h, h, h, h, h α, h = t t t t + k ( h ) for r = to h do for = k-p+r to k-s do begn a,r := (t - u ) / ( u +p-r+ - u ) P,r := ( - a,r ) P -,r- + a,r P,r- end s=násobnost t (pokud je uzlem původního vektoru) 5
De Boorův algortmus Je-l násobnost uzlu t rovna stupn křvky, pak bod C(t) je bodem křvky. (Zvolíme hodnotu uzlu t, vložíme j k-krk krát a dostáváme bod na křvce) k Algortmus. Vstup: stupeň křvky k, řídící body, uzlový vektor, hodnota parametru t. Nalézt nterval [t, t + ] v němž t leží. Pokud t=t, je nutné určt násobnost uzlu s. 4. Opakované vložení uzlu (k-s)- krát De Casteljau a Boorův algortmus B-splne křvka C(t) stupně k defnovaná k+řídícím body P,..., P k a uzlovým vektorem ve kterém je prvních a posledních k+ hodnot splývá je Bezerova křvka stupně k. Oba algortmy generují pro všechna t (,) body stejné křvky. C() = P, C() = P k. Nechť t = t =... = t k = a t k+ = t k+ =... = t k+ =, tedy t [t k, t k+ ). t +k - t k =, t = pro každé =,,,k t t α = = t; =,,..., k t t + k k Všechny strany řídícího polygonu jsou rozděleny ve stejném poměru α :-α, tedy první vložení uzlu de Boorova algortmu dává první terac de Casteljau's algortmu. 6
Raconáln lní Bezerovy křvky z= rovna D Bezer D raconální Bezer Změna Váhy V bodů 4 Pohyb řídícího bodu (vlevo) působí na tvar křvky odlšně než změna váhy (vpravo) 7
Kružnce jako kvadratcký NURBS 5 Oblouk - Bezerova kvadrka. Délka úseků na tečnách musí být shodná. Vektor uzlových bodů [,,,,,] w = w = w = Kružnce kvadratcký NURBS. Řídící vrcholy jsou tvořeny vrcholy opsaného čtverce a středy stran w 4 =. Vektor uzlových bodů,,,,,,,,,,, 4 4 4 4 w = 5 w = w 6 = w = w = w8 = w = 7 Cvčen ení - Oskulační kružnce elpsy 6 8
Cvčen ení - KUBICKÝ NURBS-RHINO RHINO 7 stupeň stupeň 9