KŘIVKY A PLOCHY JANA ŠTANCLOVÁ jana.stanclova@ruk.cuni.cz Obrázky (popř. slajdy) převzaty od RNDr. Josef Pelikán, CSc., KSVI MFF UK
Obsah matematický popis křivek a ploch modelování křivek a ploch křivky v rovině implicitní tvar křivky, explicitní vyjádření, parametrický tvar, tečný vektor, tečna ke křivce křivky v prostoru plochy modelování křivek a ploch aproximace, interpolace interpolační křivky a plochy Fergusonovy kubiky aproximační křivky a plochy Beziérovy křivky a plochy Coonsovy (B-spline) křivky a plochy β-spline křivky a plochy 2/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
MATEMATICKÝ POPIS KŘIVEK A PLOCH 3/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině implicitní tvar křivky rovnice F(x,y) = 0 př. F spojitá funkce dvou proměnných př. přímka: ?? kružnice: ?? 4/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině implicitní tvar křivky rovnice F(x,y) = 0 př. F spojitá funkce dvou proměnných př. přímka: ax + by + c = 0 kružnice: x2 + y2 – r2 = 0 5/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině implicitní tvar křivky explicitní vyjádření křivky rovnice F(x,y) = 0 F spojitá funkce dvou proměnných př. přímka: ax + by + c = 0 kružnice: x2 + y2 – r2 = 0 explicitní vyjádření křivky jedna souřadnice funkcí druhé proměnné y = Y(x) dosazování přípustných hodnot za x → body na křivce [x,Y(x)] př. přímka: ?? 6/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině implicitní tvar křivky explicitní vyjádření křivky rovnice F(x,y) = 0 F spojitá funkce dvou proměnných př. přímka: ax + by + c = 0 kružnice: x2 + y2 – r2 = 0 explicitní vyjádření křivky jedna souřadnice funkcí druhé proměnné y = Y(x) dosazování přípustných hodnot za x → body na křivce [x,Y(x)] př. přímka: y = kx + q lze vyjádřit všechny křivky ?? 7/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině implicitní tvar křivky explicitní vyjádření křivky rovnice F(x,y) = 0 F spojitá funkce dvou proměnných př. přímka: ax + by + c = 0 kružnice: x2 + y2 – r2 = 0 explicitní vyjádření křivky jedna souřadnice funkcí druhé proměnné y = Y(x) dosazování přípustných hodnot za x → body na křivce [x,Y(x)] př. přímka: y = kx + q lze vyjádřit všechny křivky ?? nelze: uzavřené křivky 8/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině parametrický tvar křivky výhodné pro počítačovou geometrii poloha bodu na křivce vyjádřena parametrem → souřadnice bodů závislé na parametru křivka K K = { [x,y]; x = X(t), y = Y(t), t ∈ < tmin, tmax > } X(t) a Y(t) funkce závislosti souřadnic x, y na parametru t počáteční bod: [ X(tmin) , Y(tmin) ] koncový bod: [ X(tmax) , Y(tmax) ] bod křivky: K(t) = [ X(t) , Y(t) ] 9/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině parametrický tvar křivky přímka kružnice x = ?? y = ?? 10/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině parametrický tvar křivky přímka kružnice x = t y = kt + q → parametr t ∈ R kružnice x = x0 + r cos(α) y = y0 + r sin(α) → parametr α ∈ <0,2π> 11/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině tečný vektor tečna křivky v bodě K(t) K’ = [ X’(t) , Y’(t) ] ... vektor parciálních derivací předpoklady X(t) a Y(t) spojité a mají derivace alespoň jedna z derivací X’(t) a Y’(t) v bodě t nenulová spojitá změna vektoru K’ křivky → hladký půběh křivky nejsou „ostré vrcholy“ tečna křivky v bodě K(t) přímka: T(u) = K(t) + u K‘(t) 12/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině tečný vektor tečna křivky v bodě K(t) K’ = [ X’(t) , Y’(t) ] ... vektor parciálních derivací předpoklady X(t) a Y(t) spojité a mají derivace alespoň jedna z derivací X’(t) a Y’(t) v bodě t nenulová spojitá změna vektoru K’ křivky → hladký půběh křivky nejsou „ostré vrcholy“ tečna křivky v bodě K(t) přímka: T(u) = K(t) + u K‘(t) bod křivky K(t) parametr tečný vektor K’(t) 13/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině - příklad spočítat tečnu v bodě [0,2] ke kružnici se středem v počátku a poloměrem 2 14/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině - příklad spočítat tečnu v bodě [0,2] ke kružnici se středem v počátku a poloměrem 2 řešení rovnice kružnice ?? 15/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině - příklad spočítat tečnu v bodě [0,2] ke kružnici se středem v počátku a poloměrem 2 řešení rovnice kružnice x = 2 cos(α) y = 2 sin(α) tečný vektor kružnice ?? 16/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině - příklad spočítat tečnu v bodě [0,2] ke kružnici se středem v počátku a poloměrem 2 řešení rovnice kružnice x = 2 cos(α) y = 2 sin(α) tečný vektor kružnice x = - 2 sin(α) y = 2 cos(α) tečna ke kružnici v bodě [0,2] ... tečna ke kružnici v bodě ?? 17/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině - příklad spočítat tečnu v bodě [0,2] ke kružnici se středem v počátku a poloměrem 2 řešení rovnice kružnice x = 2 cos(α) y = 2 sin(α) tečný vektor kružnice x = - 2 sin(α) y = 2 cos(α) tečna ke kružnici v bodě [0,2] ... tečna ke kružnici v bodě α = π / 2 18/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině - příklad pokračování řešení: rovnice tečny v bodě α = π/2 x = ?? y = ?? 19/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině - příklad pokračování řešení: rovnice tečny v bodě α = π/2 x = 2 cos(π/2) – 2u sin(π/2) y = 2 sin(π/2) + 2u cos(π/2) po úpravách x = ?? y = ?? 20/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v rovině - příklad pokračování řešení: rovnice tečny v bodě α = π/2 x = 2 cos(π/2) – 2u sin(π/2) y = 2 sin(π/2) + 2u cos(π/2) po úpravách x = 0 – 2u = – 2u y = 2 + 0u = 2 → přímka y = 2 (x libovolné) [0,2] 21/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Křivky v prostoru explicitní tvar křivky parametrický tvar křivky vyjádření souřadnic y a z v závislosti na souřadnici x y = Y(x), z = Z(x) → tento tvar nemusí vždy existovat parametrický tvar křivky nejobvyklejší křivka: K = { [x,y,z] ; x=X(t), y=Y(t), z=Z(t), t ∈ <tmin, tmax>} tečný vektor v bodě K(t) vektor parciálních derivací K‘(t) = [X’(t),Y’(t), Z’(t)] 22/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Plochy (v prostoru) implicitní tvar plochy explicitní tvar plochy rovnice F(x,y,z) = 0 explicitní tvar plochy jen pro některé plochy jedna souřadnice vyjádřena v závislosti na zbylých dvou proměnných z = Z(x,y) parametrický tvar plochy nejobvyklejší souřadnice závislé na hodnotách dvou parametrů u a v P = {[x,y,z]; x=X(u,v), y=Y(u,v), z=Z(u,v), u ∈ <umin, umax>, v ∈ <vmin, vmax>} X(u,v), Y(u,v), Z(u,v) ... parametrické funkce plochy P jeden z parametrů plochy fixován → ?? 23/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Plochy (v prostoru) implicitní tvar plochy explicitní tvar plochy rovnice F(x,y,z) = 0 explicitní tvar plochy jen pro některé plochy jedna souřadnice vyjádřena v závislosti na zbylých dvou proměnných z = Z(x,y) parametrický tvar plochy nejobvyklejší souřadnice závislé na hodnotách dvou parametrů u a v P = {[x,y,z]; x=X(u,v), y=Y(u,v), z=Z(u,v), u ∈ <umin, umax>, v ∈ <vmin, vmax>} X(u,v), Y(u,v), Z(u,v) ... parametrické funkce plochy P jeden z parametrů plochy fixován → parametrická rovnice křivky na ploše 24/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
MODELOVÁNÍ KŘIVEK A PLOCH 25/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Modelování křivek a ploch idea nelze zadat všechny body křivky/plochy → je jich nekonečně zadají se nejdůležitější uzlové body např. body, kde křivka/plocha mění směr, obrací se, ... typicky požadavek na hladkost křivky/plochy bez ostrých vrcholů základní metody interpolace křivka/plocha prochází uzlovými body aproximace křivka/plocha nemusí procházet uzlovými body křivka „probíhá“ okolo uzlových bodů a „kopíruje“ je 26/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Modelování křivek a ploch Aproximace Interpolace 27/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
FERGUSONOVY KUBIKY Fergusonovy kubiky 28/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Fergusonovy kubiky interpolační křivka Fergusonova kubika J. C. Ferguson, 1964 Fergusonova kubika dva řídící body P0 a P1 krajní body křivky → křivka jimi prochází určují polohu křivky dva tečné vektory P‘0 a P’1 v řídících bodech P0 a P1 směr a velikost tečných vektorů → míra vyklenutí křivky větší velikost vektorů → křivka se více přimyká k vektoru rovnice křivky P(t) = P0F1(t) + P1F2(t) + P’0F3(t) + P’1F4(t) kde F1,..., F4 jsou kubické Hermitovské polynomy F1(t) = 2t3 – 3t2 + 1 F3(t) = t3 – 2t2 + t F2(t) = -2t3 + 3t2 F4(t) = t3 – t2 29/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Fergusonovy kubiky vektor P‘0 konstantní ... vektor P’1 se mění 30/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Fergusonovy kubiky applet: http://www2.mat.dtu.dk/info/mathematics/VIDIGEO/applets/book5.html 31/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Fergusonovy kubiky výhody snadné navazování Fergusonových kubik ?? 32/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Fergusonovy kubiky výhody snadné navazování Fergusonových kubik poslední bod předchozího segmentu = první bod následujícího segmentu hladkost spojených dvou kubik ?? 33/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Fergusonovy kubiky výhody nevýhody snadné navazování Fergusonových kubik poslední bod předchozího segmentu = první bod následujícího segmentu hladkost spojených dvou kubik ztotožnění tečných vektorů ztotožněných bodů nevýhody poměrně nesnadná editace tečného vektoru ve 3D 34/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
BEZIÉROVY KŘIVKY Beziérovy křivky 35/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy křivky aproximační křivka vlastnosti křivka prochází prvním a posledním uzlem k ostatním bodům se křivka pouze přibližuje úsečky spojující dva krajní uzly se dotýkají křivky v koncových bodech spojnice prvního a druhého bodu, posledního a předposledního bodu jinak průběh křivky zcela hladký rovnice kde Bin jsou Bernsteinovy polynomy 36/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy křivky applet: http://www.math.ubc.ca/~cass/gfx/bezier.html win → program Paint: kliknout a táhnout → počáteční a koncový bod kliknout a táhnout → vytváří se oblouk (a ještě jednou zopakovat) 37/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy křivky nevýhody → řešení: ?? křivka určena velkým počtem bodů → složitý výpočet bodu na křivce vnitřní bod křivky závisí na všech uzlech posun jednoho uzlu → změna tvaru celé křivky → řešení: ?? 38/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy křivky nevýhody křivka určena velkým počtem bodů → složitý výpočet bodu na křivce vnitřní bod křivky závisí na všech uzlech posun jednoho uzlu → změna tvaru celé křivky → řešení: složitější křivky spojení několika kratších křivek lepší výpočet kratších křivek lokální oprava tvaru křivky změna polohy jednoho uzlu → změna jednoho úseku křivky ostatní úseky nezměněny 39/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy křivky spojování dvou Beziérových křivek ?? 40/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy křivky spojování dvou Beziérových křivek hladké spojení ?? ztotožnění krajních vrcholů → spojení křivek nemusí být hladké hladké spojení ?? 41/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy křivky spojování dvou Beziérových křivek hladké spojení ztotožnění krajních vrcholů → spojení křivek nemusí být hladké hladké spojení 3 krajní body na jedné přímce předposlední uzel křivky Q1 poslední uzel křivky Q1 = první uzel křivky Q2 druhý uzel křivky Q2 42/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy křivky v praxi použití Beziérovy křivky druhého stupně kvadratické křivky definované 3 uzly Beziérovy křivky třetího stupně kubické křivky definované 4 uzly použití definice znakových fontů hladký průběh obrysů písmen jednoduché zadávání → možnost libovolně font zvětšovat bez znehodnocení 43/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
BEZIÉROVY PLOCHY Beziérovy plochy 44/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy plochy aproximační plochy zadány sítí bodů v prostoru stejné principy jako Beziérovy křivky zadány sítí bodů v prostoru obdélníková tabulka bodů/uzlů libovolné velikosti rohové uzly poloha rohů plochy okrajové řady/sloupce uzlů okrajové Beziérovy křivky vnitřní uzly tvar uvnitř plochy 45/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy plochy – editace uzlů 46/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérovy plochy nevýhody vnitřní bod plochy závisí na všech ostatních uzlech definiční sítě → řešení: jako u Beziérových křivek složitější plochy: spojování více plátů dohromady plát = jedna Beziérova plocha typicky bikvadratický Beziérový plát plocha zadaná 3×3 uzly bikubický Beziérový plát plocha zadaná 4×4 uzly výhody lokální oprava komplikované plochy rychlejší výpočet i zobrazení 47/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérových plochy – napojení plátů napojení Beziérových plátů ?? 48/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérových plochy – napojení plátů napojení Beziérových plátů ztotožnění krajních řad/sloupců → napojení nemusí být hladké hladké napojení ?? 49/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Beziérových plochy – napojení plátů napojení Beziérových plátů ztotožnění krajních řad/sloupců → napojení nemusí být hladké hladké napojení vliv dalších řad uzlů sousedících se společným okrajem plátů trojice uzlů na úsečkách úsečky rozděleny prostředními uzly ve stejném poměru 50/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Speciální Beziérovy pláty speciální plát ... „záplata“ degenerace jedné/dvou okrajových křivek okrajová křivka plátu = Beziérova křivka zadaná krajní řadou/sloupcem uzlů spojení těchto uzlů do jediného → degenerace křivky do jediného bodu → výsledná plocha má méně rohů a okrajových křivek příklad: trojúhelníkový plát jeden dvojitý roh 51/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
COONSOVY (B-SPLINE) KŘIVKY 52/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
B-spline křivky aproximační křivky zadány posloupností bodů princip zadání: podobný Beziérovým křivkám bez omezující podmínky pro hladké napojení dvou křivek zadány posloupností bodů začátek křivky → antitěžiště trojúhelníka ABC směr křivky → v krajním bodě rovnoběžný se stranou trojúhelníka AC 53/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
B-spline křivky aproximační křivky zadány posloupností bodů princip zadání: podobný Beziérovým křivkám bez omezující podmínky pro hladké napojení dvou křivek zadány posloupností bodů začátek křivky → antitěžiště trojúhelníka ABC směr křivky → v krajním bodě rovnoběžný se stranou trojúhelníka AC 54/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Prodlužování B-spline křivek první úsek ... P0P1P2P3 druhý úsek ... P1P2P3P4 společný bod ... antitěžistě trojúhelníka P1P2P3 směr ve společném bodě ... rovnoběžný s úsečkou P1P3 společný pro obě křivky → hladké spojení 55/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
Prodlužování B-spline křivek snadné napojování/prodlužování křivek dvě spojené křivky → společné 3 definiční uzly prodloužení křivky o jeden úsek přidání jednoho nového uzlu napojování B-spline křivek zopakovány poslední tři uzly na kraj přidán jeden nový uzel 56/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
B-spline křivky vliv definičního uzlu na maximálně ?? úseky křivek 57/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
B-spline křivky vliv definičního uzlu na maximálně 4 úseky křivek oprava křivky → posun jednotlivých uzlů posun jednoho uzlu → lokální oprava křivky změna max. 4 sousedních částí křivek zbytek křivky nezměněn 58/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
COONSOVY (B-SPLINE) PLOCHY 59/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
B-spline plochy aproximační plochy variabilita B-spline plochy zadány sítí bodů v prostoru obdélníková tabulka bodů/uzlů libovolné velikosti B-spline plocha prochází volně zadanou soustavou uzlů variabilita B-spline plochy konstrukce složitějších tvarů → plochy složené z hodně plátů dva sousední pláty → společné 3 řady uzlů sestavená plocha vždy hladká lokální opravy plochy → posuny definičních uzlů změna jednoho uzlu → změna ?? sousedních plátů 60/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
B-spline plochy aproximační plochy variabilita B-spline plochy zadány sítí bodů v prostoru obdélníková tabulka bodů/uzlů libovolné velikosti B-spline plocha prochází volně zadanou soustavou uzlů variabilita B-spline plochy konstrukce složitějších tvarů → plochy složené z hodně plátů dva sousední pláty → společné 3 řady uzlů sestavená plocha vždy hladká lokální opravy plochy → posuny definičních uzlů změna jednoho uzlu → změna 4 - 16 sousedních plátů speciální pláty pomocí vícenásobných uzlů 61/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
B-spline plochy změna tvaru plochy – každý obrázek vznikl změnou polohy jediného uzlu 62/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
β-SPLINE KŘIVKY β-spline křivky 63/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
β-spline křivky aproximační křivky úsek křivky zobecnění kubických B-spline křivek → variabilnější úsek křivky 4 řídící uzly dva sousední úseky → společné 3 uzly sklon β1 posunutí křivky vzhledem k řídícím uzlům standardně β1 = 1 β1 < 1 ... posun k prvnímu uzlu β1 > 1 ... posun k poslednímu uzlu napětí β2 stupeň přesnosti aproximace → jak moc křivka přitahována/odpuzována od uzlů β2 = 0 → klasická B-spline křivka 64/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
β-spline křivky změna tvaru křivky při posunutí jednoho řídícího uzlu 65/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
β-SPLINE PLOCHY β-spline plochy 66/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz
β-spline plochy aproximační plochy β-spline plát zadán zobecnění bikubických B-spline ploch β-spline plát zadán 16 řídících uzlů sklony β1u a β1v sklon plochy v obou směrech napětí plochy β2 stupeň přesnosti aproximace → jak moc plocha přitahována/odpuzována od uzlů 67/67 Jana Štanclová, jana.stanclova@ruk.cuni.cz