Křivky v počítačové grafice Kristýna Bémová Univerzita Karlova v Praze 13. prosince 2007 Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 1 / 36
Pojmy - křivky a jejich parametrické vyjádření Křivka = dráha pohybujícího se bodu (fyzikálně) Parametrické vyjádření p(t) = p i (t), t 0; 1 (t si můžeme představovat jako čas) Bodová rovnice Vektorová rovnice P(t) = [x(t), y(t), z(t)] p(t) = (x(t), y(t), z(t)) Derivace křivky po složkách. Tečný vektor v bodě t 0 p (t 0 ) = (x (t 0 ), y (t 0 ), z (t 0 )) a rovnice tečny v tomto bodě p(t) = P(t 0 ) + tp (t 0 ) Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 2 / 36
Pojmy - křivky a jejich parametrické vyjádření Výhody parametrického vyjádření rychlé vypočítání tečny závislost na jediném parametru Změna parametrizace = nahrazení parametru t jiným parametrem, který je zadán jako funkce t = s(t). Nové vyjádření p(t) = (x(t ), y(t ), z(t )) popisuje tutéž křivku, tečný vektor v bodě p(t ) se stejným směrem, ale jiné velikosti (případně orientaci). Tedy: tečný vektor je závislý na parametrizaci, tečna nikoli. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 3 / 36
Pojmy - důležité přímky a roviny Normálová rovina ke křivce v bodě p 0 = rovina kolmá k tečně v bodě p 0 a procházející bodem p 0. Normála křivky v bodě p 0 = každá přímka v normálové rovině. Oskulační rovina křivky v bodě p 0 = rovina { p(t 0 ), p (t 0 ), p (t 0 ) } Hlavní normála = průsečnice oskulační a normálové roviny v tomtéž bodě p 0 dané křivky. Binormála = normála kolmá na hlavní normálu. Inflexní bod p 0 křivky p = jestliže p (t 0 ) a p (t 0 ) jsou LZ vektory. Křivost křivky v bodě t 0 k(t 0 ) = p (t 0 ) p (t 0 ) p (t 0 ) 3. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 4 / 36
Pojmy - důležité přímky a roviny Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 5 / 36
Analytická spojitost Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 6 / 36
Analytická spojitost P(t),R(t)... dva segmenty, ze kterých je složena křivka Q(t) Křivka Q(t) je třídy C n, má-li ve všech bodech spojité derivace do řádu n (tzv. parametrická spojitost). Třída C 0... dva segmenty jsou spojitě navázány, jestliže je koncový bod prvního segmentu počátečním bodem segmentu druhého. Třída C 1... tečný vektor v koncovém bodě segmentu P je roven tečnému vektoru segmentu R v jeho počátečním bodě. Třída C 2... analogicky je požadována rovnost vektoru první a druhé derivace. Atd... Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 7 / 36
Geometrická spojitost P(t),R(t)... dva segmenty, ze kterých je složena křivka Q(t). Třída G 0... dva segmenty jsou spojitě navázány, jestliže je koncový bod prvního segmentu počátečním bodem segmentu druhého. Třída G 1... jestliže tečné vektory p (1) segmentu P a r (0) druhého segmentu R jsou lineárně závislé. Třída G 2 je definována jako shoda křivostí k v uzlu obou segmentů: k P (1) = k R (0) Tato spojitost zaručuje totožnost tečen (nikoli tečných vektorů). Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 8 / 36
Geometrická vs. analytická spojitost Spojitost C 1 implikuje G 1 (obráceně však nikoliv). Je snažší zaručit G 1 nežli C 1. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 9 / 36
Modelování křivek Průběh křivky se určí z polohy několika řídících bodů (tzv. řídící polygon). (Některé metody umožňují zadávání křivek také pomocí tečných vektorů.) Dva základní druhy interpretace řídicích bodů: aproximace = řídicími body je tvar křivky určen a ta jimi však procházet nemusí interpolace = generovaná křivka probíhá danými body Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 10 / 36
Modelování křivek Základní prvek = polynomiální křivky p n (t) = a 0 + a 1 t +... + a n t n a z nich se skládají křivky po částech polynomiální. Kubiky křivky třetího stupně, nejpoužívanější široká škála tvarů snadný výpočet, snadno manipulovatelné je možné zajistit spojitosti stupně C 2, která je někdy požadovaná v CAD systémech Křivky vyšších stupňů mohou způsobit nežádoucí vlněním a jsou náročné na výpočet. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 11 / 36
Kubika Parametricky lze danou kubiku P(t) vyjádřit ve tvaru: x(t) = a x t 3 + b x t 2 + c x t + d x y(t) = a y t 3 + b y t 2 + c y t + d y z(t) = a z t 3 + b z t 2 + c z t + d z Můžeme ji také zapsat zkráceně v maticovém tvaru: P(t) = TC = [t 3, t 2, t 1, 1] a x b x c x a y b y c y a z b z c z Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 12 / 36
Kubika Matici C můžeme také rozepsat do součinu C = MG (M = bázová matice; G = vektor geometrických podmínek, obsahuje řídící prvky) Tedy: P(t) = [t 3, t 2, t 1, 1] m 11 m 12 m 13 m 14 m 21 m 22 m 23 m 24 m 31 m 32 m 33 m 34 m 41 m 42 m 43 m 44 Derivace(tečna, křivost) lze provádět pouze s T. G 1 G 2 G 3 G 4 Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 13 / 36
Vlastnosti křivek Mezi nejčastěji požadované patří: 1 Invariance k afinním transformacím a projekcím, která zaručuje, že například rotace řídicího polygonu a následné generování křivky má stejný výsledek, jako rotace každého bodu z vygenerované křivky. 2 Vlastnost konvexní obálky (angl. convex hull property) silná podmínka - celá křivka leží v konvexní obálce všech svých řídicích bodů slabá podmínka - část křivky leží v konvexní obálce některých řídicích bodů(typicky segment, v obálce svého generujícího polygonu). 3 Lokalita změn - změnou polohy řídicího bodu se mění jen část křivky, nikoli křivka celá. 4 Křivka může procházet krajními body svého řídicího polygonu. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 14 / 36
Vlastnosti křivek Mezi nejčastěji požadované patří: 1 Invariance k afinním transformacím a projekcím, která zaručuje, že například rotace řídicího polygonu a následné generování křivky má stejný výsledek, jako rotace každého bodu z vygenerované křivky. 2 Vlastnost konvexní obálky (angl. convex hull property) silná podmínka - celá křivka leží v konvexní obálce všech svých řídicích bodů slabá podmínka - část křivky leží v konvexní obálce některých řídicích bodů(typicky segment, v obálce svého generujícího polygonu). 3 Lokalita změn - změnou polohy řídicího bodu se mění jen část křivky, nikoli křivka celá. 4 Křivka může procházet krajními body svého řídicího polygonu. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 14 / 36
Vlastnosti křivek Mezi nejčastěji požadované patří: 1 Invariance k afinním transformacím a projekcím, která zaručuje, že například rotace řídicího polygonu a následné generování křivky má stejný výsledek, jako rotace každého bodu z vygenerované křivky. 2 Vlastnost konvexní obálky (angl. convex hull property) silná podmínka - celá křivka leží v konvexní obálce všech svých řídicích bodů slabá podmínka - část křivky leží v konvexní obálce některých řídicích bodů(typicky segment, v obálce svého generujícího polygonu). 3 Lokalita změn - změnou polohy řídicího bodu se mění jen část křivky, nikoli křivka celá. 4 Křivka může procházet krajními body svého řídicího polygonu. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 14 / 36
Vlastnosti křivek Mezi nejčastěji požadované patří: 1 Invariance k afinním transformacím a projekcím, která zaručuje, že například rotace řídicího polygonu a následné generování křivky má stejný výsledek, jako rotace každého bodu z vygenerované křivky. 2 Vlastnost konvexní obálky (angl. convex hull property) silná podmínka - celá křivka leží v konvexní obálce všech svých řídicích bodů slabá podmínka - část křivky leží v konvexní obálce některých řídicích bodů(typicky segment, v obálce svého generujícího polygonu). 3 Lokalita změn - změnou polohy řídicího bodu se mění jen část křivky, nikoli křivka celá. 4 Křivka může procházet krajními body svého řídicího polygonu. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 14 / 36
Vlastnosti křivek Mezi nejčastěji požadované patří: 1 Invariance k afinním transformacím a projekcím, která zaručuje, že například rotace řídicího polygonu a následné generování křivky má stejný výsledek, jako rotace každého bodu z vygenerované křivky. 2 Vlastnost konvexní obálky (angl. convex hull property) silná podmínka - celá křivka leží v konvexní obálce všech svých řídicích bodů slabá podmínka - část křivky leží v konvexní obálce některých řídicích bodů(typicky segment, v obálce svého generujícího polygonu). 3 Lokalita změn - změnou polohy řídicího bodu se mění jen část křivky, nikoli křivka celá. 4 Křivka může procházet krajními body svého řídicího polygonu. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 14 / 36
Fergusonovy kubiky Metoda pro generování křivek, která je řízena dvěma body a dvěma vektory v nich. Krajní body jsou významné pro položení křivky (křivka jimi prochází). Vektory pak určují míru vyklenutí křivky. Tedy: Čím je velikost vektoru větší, tím více se k němu křivka přimyká. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 15 / 36
Fergusonovy kubiky Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 16 / 36
Fergusonovy kubiky Křivka je zadána body P 0, P 1 a vektory P 0, P 1. Rovnice výsledné křivky má tvar: P(t) = P 0 H 1 (t) + P 1 H 2 (t) + P 0 H 3(t) + P 1 H 4(t) kde H 1, H 2, H 3, H 4 jsou kubické Hermitovské polynomy tvaru: H 1 (t) = 2t 3 3t 2 + 1 H 2 (t) = 2t 3 + 3t 2 H 3 (t) = t 3 2t 2 + t H 4 (t) = t 3 t 2, t < 0, 1 >. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 17 / 36
Fergusonovy kubiky Maticový zápis: P(t) = T 2 2 1 1 3 3 2 1 0 0 1 0 1 0 0 0 P 0 P 1 P 0 P 1 Spojitost při navazování oblouků je zaručena, pokud je roven poslední bod předchozího oblouku prvnímu bodu oblouku následujícího. Spojitost prvních derivací (hladkost) je zaručena identitou vektorů P 1 předchozího a P 0 následujícího oblouku. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 18 / 36
Kochanek-Bartels kubika - TCB-spline Je odvozená od Hermitovské kubiky. Prochází řídícími body a u každého máme vstupní a výstupní tečný vektor, které nemusí být stejné. Tečné vektory jsou závislé na vedlejších bodech a na třech parametrech: tension t (napětí) - ostrost křivky v řídícím bodě (absolutní velikost tečny) continuity c (spojitost) - spojitost v řídícím bodě bias b (sklon) - směr tečny v řídícím bodě Implicitně jsou tyto parametry nulové a v tomto případě jsou tečné vektory stejné. T I i = T O i = 1 2 ((P i+1 P i ) + (P i P i 1 )) = P i+1 P i 1 2 Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 19 / 36
Kochanek-Bartels kubika - změny parametrů Tention t < 1; 1 >, t 0: T I i = T O i = 1 t 2 ((P i+1 P i ) + (P i P i 1 )) Pro t = 0 dostáváme Catmull-Rom spline. Tedy: Tension t mění velikost tečného vektoru. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 20 / 36
Kochanek-Bartels kubika - změny parametrů Continuity c < 1; 1 >, c 0: T I i = 1+c 2 (P i+1 P i ) + 1 c T O i = 1 c 2 (P i+1 P i ) + 1+c (P 2 i P i 1 ) (P 2 i P i 1 ) Pro c = 0 má křivka spojitý tečný vektor. Tedy: Continuity c mění směr "hrotu". Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 21 / 36
Kochanek-Bartels kubika - změny parametrů Bias b < 1; 1 >, b 0: T I i = T O i = 1 b 2 (P i+1 P i ) + 1+b 2 (P i P i 1 ) Pro b = 0 mají vstupní a výstupní tečné vektory stejnou váhu. Tedy: Bias b mění míru převládání jednoho či druhého vektoru. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 22 / 36
Kochanek-Bartels kubika - kombinace efektů Kombinaci všech tří změn parametrů můžeme vyjádřit rovnicemi: T I i = (1 t)(1+c)(1 b) 2 (P i+1 P i ) + (1 t)(1 c)(1+b) 2 (P i P i 1 ) T O i = (1 t)(1 c)(1 b) 2 (P i+1 P i ) + (1 t)(1+c)(1+b) 2 (P i P i 1 ) Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 23 / 36
Catmull-Rom spline Křivka je definována posloupností bodů P 0, P 1,..., P n. Vychází z bodu P 1 a končí v bodě P n 1, tedy neprochází prvním a posledním bodem. Křivka se vypočítá dle vztahu : 1 3 3 1 P(t) = 1[t 3, t 2, t 1, 1] 2 5 4 1 2 1 0 1 0 0 2 0 0 Vlastnosti těchto křivek: P i 3 P i 2 P i 1 P i Tečný vektor v bodě P i je rovnoběžný s vektorem P i 1 P i+1. Při dvojnásobném výskytu prvního a posledního bodu tj. např. P 0, P 0, P 1, P 2,..., P n 1, P n, P n je zaručeno, že křivka bude procházet všemi body. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 24 / 36
Catmull-Rom spline Nevýhoda těchto křivek: výsledný splajn obecně neleží v konvexní obálce svých řídicích bodů. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 25 / 36
Bézierovy kubiky Jsou zadány čtyřmi body P 0, P 1, P 2 a P 3. Vychází z prvního bodu P 0 a končí v bodě posledním P 3. Vyklenutí je řízeno body P 1 a P 2. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 26 / 36
Bézierovy kubiky Bézierovy kubiky jsou určeny vztahem: P(t) = P 0 B 0 (t) + P 1 B 1 (t) + P 2 B 2 (t) + P 3 B 3 (t) = 3 i=0 P ib i (t) kde t < 0, 1 > a B 0, B 1, B 2, B 3 jsou kubické polynomy tvaru: B 0 (t) = (1 t) 3 B 1 (t) = 3t(1 t) 2 B 2 (t) = 3t 2 (1 t) B 3 (t) = t 3 Maticový zápis: P(t) = T 1 3 3 1 3 6 3 0 3 3 0 0 1 0 0 0 P 0 P 1 P 2 P 3 Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 27 / 36
Bézierovy kubiky - vlastnosti Tečné vektory mají vždy směr spojnice dvojice krajních bodů a velikost mají rovnu trojnásobku vzdálenosti bodů. Dva Bézierovy oblouky budou spojeny hladce, bude-li zaručena jejich spojitost a pokud budou identické tečné vektory. (tj. poslední bod předchozího oblouku je identický s prvním následujícího, nebo křivka prochází posledním a prvním bodem) Tedy: druhý bod následující křivky je určen posledními dvěma body křivky předchozí. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 28 / 36
Bézierovy kubiky - spojitost Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 29 / 36
Obecné Bézierovy křivky Bézierova křivka n-tého řádu je dána n+1 body řídícího polygonu P 0, P 1,..., P n. Vychází z prvního bodu P 0 a končí v bodě posledním P n. Parametrické vyjádření používá Bernsteinovy polynomy: ( ) n Bi n (t) = t i i (1 t) n i t < 0, 1 >, i = 0, 1,..., n Lze je snadno napojovat G 1 nebo C 1 spojitostí. Složitějším způsobem z nich lze postavit spline. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 30 / 36
De Casteljau algoritmus Jedná se o geometrickou konstrukci Bézierových křivek. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 31 / 36
Coonsovy kubiky Zadává se čtyřmi body P 0,P 1,P 2,P 3 a spočte se ze vztahu: P(t) = 1 6 [P 0C 0 (t) + P 1 C 1 (t) + P 2 C 2 (t) + P 3 C 3 (t)] = 1 6 3 i=0 P ic i (t) kde C 0, C 1, C 2, C 3 jsou kubické polynomy tvaru: C 0 (t) = (1 t) 3 C 1 (t) = 3t 3 6t 2 + 4 C 2 (t) = 3t 3 + 3t 2 + 3t + 1 C 3 (t) = t 3,t < 0, 1 > Maticový zápis: P(t) = 1 6 T 1 3 3 1 3 6 3 0 3 0 3 0 1 4 1 0 P 0 P 1 P 2 P 3 Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 32 / 36
Coonsovy kubiky Krajní body křivky nevychází z řídicích bodů, ale z "antitěžiště" trojúhelníků P 0 P 1 P 2 a P 1 P 2 P 3. P(0) = P 0+4P 1 +P 2 6 P(1) = P 1+4P 2 +P 3 6 Výhoda těchto křivek se ukáže při jejich použití pro skládání aproximačních křivek, tzv. B-spline. Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 33 / 36
B-spline Křivka je složena z Coonsových oblouků tak, že pro jeden oblouk použijeme vrcholy P 0 P 1 P 2 P 3, pro další P 1 P 2 P 3 P 4 atd. Vlastnosti: Ve všech vnitřních bodech má spojitost druhého řádu. Změnou jednoho řídícího bodu dojde pouze k lokální změně čtyř oblouků, jejichž konstrukce se bod účastní. Křivka leží celá ve své konvexní obálce a její segmenty leží v konvexních obálkách svých řídicích polygonů. Uzavřený B-splajn získáme opakováním n prvních bodů řídicího polygonu na jeho konci. (Pro kubický B-splajn je tedy řídícím polygonem uzavřené křivky posloupnost bodů: P 0, P 1,..., P m, P 0, P 1, P 2.) Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 34 / 36
B-spline - změna řídícího bodu Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 35 / 36
Literatura http://www.hyperkrychle.cz/curves/obsah.html (Lubomír Alexandr - Vysoké učení technické v Brně) http://cgg.ms.mff.cuni.cz/ pepca/lectures/pdf/hwmath.pdf (RNDr. Josef Pelikán - MFF UK) http://notorola.sh.cvut.cz/ bruxy/algoritmy_pocitacove_grafiky.doc Kochanek-Bartels Cubic Splines (TCB Splines) (David Eberly - Geometric Tools, Inc., http://www.geometrictools.com) Kristýna Bémová (MFF UK) Křivky v počítačové grafice 13. prosince 2007 36 / 36