Počítačová grafika
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
Křivky Jana Dannhoferová
(
[email protected])
Ústav informatiky, PEF MZLU
© J. Dannhoferová, Počítačová grafika
Parametricky zadaná křivka
2
Parametricky zadaná křivka
• parametrické vyjádření křivky: x = x(t) y = y(t) z = z(t) • parametr t je z intervalu
(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)
© J. Dannhoferová, Počítačová grafika
3
Tečný vektor
Segmenty • nechť Q1(t) a Q2(t) jsou dvě části (segmenty) jediné křivky Q(t) spojené v bodě Q1(1)=Q2(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
• 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
© J. Dannhoferová, Počítačová grafika
4
© J. Dannhoferová, Počítačová grafika
5
© J. Dannhoferová, Počítačová grafika
6
1
Parametrická spojitost
Parametrická spojitost
Cn – parametrická spojitost stupně n • křivka je třídy Cn, má-li ve všech bodech spojité derivace až do řádu n • spojení třídy C0
(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 C1
(tečný vektor v koncovém bodě segmentu Q1 je roven tečnému vektoru segmentu Q2 v jeho počátečním bodě)
• spojení třídy C2
• C0 – bod se pohybuje po spojité dráze, ale v uzlu může měnit skokem směr pohybu, rychlost i zrychlení • C1 – směr pohybu a velikost rychlosti se nemůže měnit skokem • C2 – zrychlení zůstává nezměněné
(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
© J. Dannhoferová, Počítačová grafika
Modelování křivek
Modelování křivek • základním druhem parametrických křivek používaných v PG jsou tzv. polynomiální křivky (rychlý výpočet) pn(t) = a0+a1t+…+antn • z nich se skládají křivky po částech polynomiální
• 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)
(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)
9
© J. Dannhoferová, Počítačová grafika
8
© J. Dannhoferová, Počítačová grafika
Modelování křivek
• existují dva základní druhy interpretace řídicích bodů: • interpolace • aproximace © J. Dannhoferová, Počítačová grafika
10
Hermit/Fergussonova kubika • je určena 2 řídicími body a 2 tečnými vektory • P0,P1 – počáteční a koncový bod křivky • R0,R1 – počáteční a koncový tečný vektor (v bodech P0 a P1) • body P0 a P1 určují polohu křivky • směr a velikost tečných vektorů určuje míru jejího vyklenutí
aproximační křivka
interpolační křivka R0
• dále budeme označovat: • Q(t) – křivka, • Pi – řídicí body křivky
R0
R1
R0
R1 R1
© J. Dannhoferová, Počítačová grafika
11
© J. Dannhoferová, Počítačová grafika
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
(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) = ΣPiBin(t), i=0,…,n • kde Bin ju tzv. Bernsteinovy polynomy n-tého stupně
(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)
© J. Dannhoferová, Počítačová grafika
16
Beziérovy kubiky
20
Algoritmus deCasteljau • • • •
© J. Dannhoferová, Počítačová grafika
17
Beziérovy kubiky
• nevýhoda: při změně polohy jediného řídicího bodu Pi dojde ke změně tvaru celé křivky důvod, proč se dělí na segmenty nižšího stupně, které se postupně navazují © J. Dannhoferová, Počítačová grafika
• 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: P0, P1, P2, P3
• při navazování segmentů se sledují třídy spojitosti © J. Dannhoferová, Počítačová grafika
21
Algoritmus deCasteljau • výpočet bodu Q(2/3) a schéma výpočtu
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)
• 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í © J. Dannhoferová, Počítačová grafika
22
© J. Dannhoferová, Počítačová grafika
23
3
Spline křivky
Uniformní kubický B-spline • Uniformní – stejná vzdálenost uzlů
• spline křivka stupně n • je dáno n + 1 opěrných bodů (P0, …, Pn) • je po částech polynomiální křivka, která je třídy Cn
(segment Qi je určen body Pi-3, Pi-2, Pi-1 a Pi, následující segment Qi+1 je definován body Pi-2, Pi-1, Pi a Pi+1)
• je určen n 4 body a skládá se z n – 3 segmentů
(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í)
© J. Dannhoferová, Počítačová grafika
24
• spojistost: • segment Qi+1 vychází z posledního bodu segmentu Qi • jsou identické první a druhé derivace v daném bodě (C2)
NURBS
Uniformní kubický B-spline • 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
25
© J. Dannhoferová, Počítačová grafika
• 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 (P0, …, Pn, kde n3) • 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
• pokud posuneme bod Pi kubiky Q(t), změní se tvar čtyř segmentů Qi, Qi+1, Qi+2, Qi+3 • změnila se také poloha uzlů t5, t6 a t7 © J. Dannhoferová, Počítačová grafika
(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 26
NURBS řádu k
NURBS řádu k Q(t) =
© J. Dannhoferová, Počítačová grafika
27
© J. Dannhoferová, Počítačová grafika
28
ΣwiPiNi,p(t) ΣwiNi,p(t)
, kde i = 0,1,…,n
© J. Dannhoferová, Počítačová grafika
• wi – váha i-tého bodu řídícího polygonu • Ni,p(t) – normalizované B-spline bázové funkce
29
4
Literatura
NURBS • 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
© J. Dannhoferová, Počítačová grafika
• 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
© J. Dannhoferová, Počítačová grafika
31
5