Počítačová grafika Křivky Jana Dannhoferová (jana.dannhoferova@mendelu.cz) Ústav informatiky, PEF MZLU Základní vlastnosti křivek křivka soustava parametrů nějaké rovnice, která je posléze generativně zobrazována vyjádření může být trojího druhu: Explicitní může být zadána např. jako spojitá funkce ve tvaru: y = f(x) použití pouze pro křivky, které jsou funkcemi Implicitní má tvar: F(x,y) = 0 obtížně zobrazitelné v porovnání s ostatními Parametrické chápeme ji fyzikálně jako dráhu pohybujícího se bodu, jehož souřadnice jsou funkcemi parametru t 2 Parametricky zadaná křivka Parametricky zadaná křivka parametrické vyjádření křivky: x = x(t) y = y(t) z = z(t) parametr t je z intervalu <t min, t max > (nejčastěji je volen z rozsahu <0,1>) vektorový zápis: q(t) = [x(t),y(t),z(t)], kde q(t) je tzv. polohový vektor (pro t = 0 a t = 1 jsou vyjádřeny krajní body) výhoda: závislost souřadnic křivky pouze na jediném parametru možnost vyjádřit průběh (postupný výpočet) 3 4 Tečný vektor Segmenty parametrická reprezentace umožňuje snadno vytvářet tečny ke křivce (využití při navazování křivek, skládání složitých tvarů z jednoduchých) tečna přímka, která se dotýká křivky v bodě Q(t) tečný vektor v bodě Q(t) je určen derivacemi parametricky vyjádřené křivky po složkách nechť Q 1 (t) a Q 2 (t) jsou dvě části (segmenty) jediné křivky Q(t) spojené v bodě Q 1 (1)=Q 2 (0) uzel = bod, ve kterém se křivky stýkají důležitou vlastností segmentů je způsob jejich napojení (tzv. spojitost v uzlu) = hladkost navázání křivek 5 6 1
Parametrická spojitost Parametrická spojitost C n parametrická spojitost stupně n křivka je třídy C n, má-li ve všech bodech spojité derivace až do řádu n spojení třídy C 0 (dva segmenty jsou spojitě navázány, pokud koncový bod prvního segmentu je počátečním bodem druhého segmentu) spojení třídy C 1 (tečný vektor v koncovém bodě segmentu Q 1 je roven tečnému vektoru segmentu Q 2 v jeho počátečním bodě) spojení třídy C 2 (analogicky je požadována rovnost první a druhé derivace) čím vyšší spojitost je požadována, tím delší dobu se oba segmenty přimykají ke stejnému směru 7 C 0 bod se pohybuje po spojité dráze, ale v uzlu může měnit skokem směr pohybu, rychlost i zrychlení C 1 směr pohybu a velikost rychlosti se nemůže měnit skokem C 2 zrychlení zůstává nezměněné 8 cíl: složitý tvar vytvořit pomocí jednoduše tvarovatelných částí (využití segmentů) křivkové segmenty definujeme tak, aby splňovaly některé z podmínek: průchod krajními body tečné vektory spojitost mezi navazujícími segmenty běžné geometrické podmínky pro křivky: 2 body + 2 tečné vektory (Hermite/Fergusson) 2 koncové body + 2 řídicí body (Bezier) 4 řídicí body (splajny) 9 základním druhem parametrických křivek používaných v PG jsou tzv. polynomiální křivky (rychlý výpočet) p n (t) = a 0 +a 1 t+ +a n t n z nich se skládají křivky po částech polynomiální (křivky, jejichž segmenty jsou polynomiálními křivkami) nejčastěji používané jsou křivky třetího stupně kubiky křivky vyššího stupně mohou způsobovat nežádoucí vlnění a oscilace a jsou náročnější na výpočet modelování křivek je definováno několik řídicích bodů (matematický aparát z jejich polohy určí průběh křivky) existují dva základní druhy interpretace řídicích bodů: interpolace aproximace 10 Hermit/Fergussonova kubika aproximační křivka interpolační křivka je určena 2 řídicími body a 2 tečnými vektory P 0,P 1 počáteční a koncový bod křivky, počáteční a koncový tečný vektor (v bodech P 0 a P 1 ) body P 0 a P 1 určují polohu křivky směr a velikost tečných vektorů určuje míru jejího vyklenutí dále budeme označovat: Q(t) křivka, P i řídicí body křivky 11 14 2
Aproximační křivky Beziérovy křivky aproximací bodů rozumíme vytvoření takové křivky, která je těmito body vhodně řízena není kladen požadavek na procházení opěrnými body (ani prvním a posledním bodem) smyslem není interpretace bodů, ale generování křivky křivka může být řízena body (tzv. řídicí polygon) nebo body a vektory metoda, která křivku vytváří, zaručuje její vlastnosti (např. hladkost, spojitost) aproximuje se po částech a pomocí kubik (pružné, dá se jimi vyjádřit vše, co je v PG třeba) nejpopulárnější aproximační křivky obecné Beziérovy křivky n-tého stupně Beziérovy kubiky Beziérova kubika je zadaná 4 body: P 0, P 1, P 2, P 3 (vychází z prvního řídicího bodu a končí v posledním) Beziérovy křivky n-tého stupně jsou určeny n+1 body řídícího polygonu a vztahem: Q(t) = ΣP i B in (t), i=0,,n kde B in ju tzv. Bernsteinovy polynomy n-tého stupně 16 17 Beziérovy kubiky Beziérovy kubiky nevýhoda: při změně polohy jediného řídicího bodu P i dojde ke změně tvaru celé křivky důvod, proč se dělí na segmenty nižšího stupně, které se postupně navazují 20 při navazování segmentů se sledují třídy spojitosti 21 Algoritmus decasteljau Algoritmus decasteljau jedna z metod, jak vypočítat Beziérovu křivku stupně n Beziérova křivka může být rozdělena v libovolném místě vstup: body řídicího polygonu výstup: hodnota křivky v bodě Q(t) (vypočítá se pomocí rekurentního vztahu) výpočet bodu Q(2/3) a schéma výpočtu aplikace: rozdělení Beziérovy křivky na dvě části v libovolném místě (nejjednodušší je dělení ve středu křivky) Q(t) je bod, ve kterém dojde k rozdělení 22 23 3
Spline křivky Uniformní kubický B-spline spline křivka stupně n je dáno n + 1 opěrných bodů (P 0,, P n ) je po částech polynomiální křivka, která je třídy C n (název odvozen od pružného pravítka/křivítka) přirozený spline interpoluje své řídicí body přirozený kubický spline interpolační křivka skládající se z polynomiálních křivek stupně tři teorie spline křivek je velice obsáhlá a patří spíše do matematiky než do počítačové grafiky v PG se nejčastěji používají B-spline kubiky (nejsou přirozené, jsou aproximační) 24 Uniformní stejná vzdálenost uzlů (segment Q i je určen body P i-3, P i-2, P i-1 a P i, následující segment Q i+1 je definován body P i-2, P i-1, P i a P i+1 ) je určen n 4 body a skládá se z n 3 segmentů spojistost: segment Q i+1 vychází z posledního bodu segmentu Q i jsou identické první a druhé derivace v daném bodě (C 2 ) 25 Uniformní kubický B-spline NURBS lokalita změny = pokud změníme polohu některého z řídicích bodů, změní se tvar pouze té části křivky, která je tímto bodem určena pokud posuneme bod P i kubiky Q(t), změní se tvar čtyř segmentů Q i, Q i+1, Q i+2, Q i+3 změnila se také poloha uzlů t, t a t 5 6 7 26 zobecnění B-spline křivek (jde o aproximační křivky) neuniformní racionální B-spline neuniformní (vzdálenost uzlů nemusí být u těchto křivek konstantní), racionální (body jsou reprezentovány jejich homogenními souřadnicemi) NURBS křivka je určena: n + 1 body řídicího polygonu (P 0,, P n, kde n 3) křivka prochází prvním a posledním bodem řídícího polygonu leží v konvexní obálce svého řídícího polygonu uzlovým vektorem U délky m + 1 (prochází prvním a posledním bodem řídicího polygonu) stupněm křivky p NURBS umožňují velice přesné vyjádření kuželoseček 27 NURBS řádu k NURBS řádu k Σw i P i N i,p (t) Q(t) = Σw i N i,p (t), kde i = 0,1,,n w i váha i-tého bodu řídícího polygonu N i,p (t) normalizované B-spline bázové funkce 28 29 4
NURBS Literatura pokud posuneme některý z řídicích bodů, změní se tvar pouze v té části, která je tímto bodem generována změnou polohy či váhy dochází ke změně lokální křivky, nikoliv však křivky celé tvar křivky lze také měnit odebráním či přidáním bodů ke křivce NURBS umožňují přesné vyjádření kuželoseček Beneš, B., Felkel, P., Sochor, J., Žára, J. Moderní počítačová grafika. Computer Press: Brno, 2004. Beneš, B., Sochor, J., Žára, J. Algoritmy počítačové grafiky. ČVUT: Praha, 1996. Sochor, J.: Základy počítačové grafiky. FI MU: Brno, 2001. 30 31 5