Křivky a povrchy
Editovat
Note
|
Implicitní a parametrické reprezentace. Interpolace a aproximace. Cn, Gn spojitost, podmínky spojitosti pro po částech definované funkce. Bézierovy křivky, B-spline křivky, PB009, PA010 |
Druhy reprezentace
Jak povrchy tak křivky mohou být reprezentovány třemi způsoby:
Explicitní reprezentace
Křivka nebo povrch je vyjádřen pomocí funkce.
Omezení na funkce je však příliš silné. Spoustu pěkných křivek a povrchů nelze vyjádřit pomocí jediné funkce.
Implicitní reprezentace
Máme k dispozici rovnici ve tvaru:
kde je konstanta a je obvykle rovná 0.
Tato rovnice udává množinu bodů, ze které se křivka nebo povrch sestává. Takové množině se někdy říká level set a metodám, které s nimi pracují level-set methods.
Important
|
Výhodou implicitně zadaných ploch je kompaktnější reprezentace a jednodušší ray casting. Nicméně výpočty s nimi jsou časově náročné, takže se stejně nejdřív převádí na polygonové meshe — polygonizace. |
Important
|
Tahle sekce přesahuje do 3D modelování a datové struktury → Implicitní reprezentace a modelování. |
Parametrická reprezentace
Udává dráhu pohybujícího se bodu, či něco jako hladinu povrchu. Snadno se z ní vyjadřuje tečna, čehož se využívá při jejich skládání.
Pro křivky:
kde je "čas" z intervalu , nejčastěji . Výhodné je, že takto zadaná křivka se může sama křížit, uzavírat, a podobně.
Analogicky pro povrchy:
kde pro a už metafora s časem nefunguje. Obvykle obě náleží do intervalu .
Terminologie
Pro zbytek otázky je podstatné znát několik termínů:
- Dotykový / tečný / tangent vektor křivky
-
Aktuální směr křivky v daném bodě. Z parametricky vyjádřené křivky ho lze v čase získat jako derivaci:
Rovnice tečny je pak .
- Polynomiální křivka
-
Velmi častý druh křivek v počítačové grafice. Vypadají jako:
Je velmi snadné je evaluovat a derivovat. Z nich často skládáme křivky po částech.
- Kubika
-
Polynomiální křivka třetího stupně.
Parametricky:
Zapsáno pomocí matice:
Tečný vektor je pak:
U kubik platí, že , kde je bázová matice a je vektor geometrických podmínek.
-
definuje polynomiální bázi — skupinu polynomů — která je společná pro všechny křivky určitého typu.
-
pak obsahuje parametry konkrétní křivky — řídící a dotykové body.
-
udává, jestli jsme na začátku či konci křivky.
-
- Tečná rovina
-
Rovina, která se povrchu dotýká v konkrétním bodě a její normála je na povrch kolmá. Pro parametrickou plochu je tečná plocha dána jako:
kde je tečný vektor ve směru parametru , a analogicky
- Normála / kolmice
-
Normálu parametricky dané plochy určíme jako vektorový součin tečných vektorů:
- Gradient
-
Funkce, která vrací "směr a velikost největšího růstu". Nejčastěji se používá u povrchů k určení normály, ale lze ji použít v libovolné dimenzi k různým účelům. Pokud je povrch zadán implicitně, pak je gradient:
Interpolace a aproximace
- Interpolace
-
Prokládání daných bodů křivkou. Konstrukce křivky, která interpolovanými body prochází.
V případě kubiky výše to znamená, že obsahuje body, kterými křivka prochází.
Mějmě funkci , jejíž hodnotu známe v bodech . Interpolace znamená nalezení hodnot pro všechna .
- Aproximace
-
Přiblížení, odhad. Je nepřesným popisem nějaké jiné entity (např. čísla či funkce). Saháme k ní, pokud pro analytické řešení nemáme dost informací nebo výpočetní kapacity. Aproximace je méně přesná než interpolace, ale výpočetně jednodušší.
V případě kubiky výše to znamená, že obsahuje řídící body, které sice udávají směr křivky, ale ta jimi neprochází.
Spojitost
Představme si, že máme dva segmenty křivky: a , spojené v bodě , tedy . Tento bod nazýváme uzlem (knot). Spojitost je zjednodušeně způsob, jakým jsou tyhle segmenty spojeny v uzlu.
Parametrická spojitost stupně ()
Křivka patří do třídy , pokud má ve všech bodech spojitou derivaci až do řádu .
-
— dva segmenty jsou spojené; konečný bod jednoho segmentu je počátečním bodem druhého.
-
— platí a navíc je tečný vektor na konci prvního segmentu shodný s tečným vektorem na začátku druhého segmentu — první derivace v uzlu jsou si rovny.
-
— platí a druhé derivace v uzlu jsou si rovny.
-
— platí a navíc jsou si -té derivace v uzlu rovny.
-
Bod pohybující se po -spojité dráze sebou "trhne" v prostoru, když projde uzlem.
-
V případě křivky se při průchodu uzlem směr ani rychlost prudce nezmění, může se však změnit zrychlení.
-
V případě křivky se při průchodu uzlem nezmění už ani zrychlení.
Geometrická spojitost stupně ()
Je podobná parametrické spojitosti, ale vyžaduje jen "geometrickou" spojitost. Vyžaduje, aby si derivace byly sobě úměrné. [5] [6]
-
— koncový bod prvního segmentu je totožný s počátečním bodem druhého segmentu ().
-
— platí a navíc je směr tečny na konci prvního segmentu shodný s směrem tečny na začátku druhého segmentu. Velikost tečného vektoru (rychlost) se však může prudce změnit.
-
— platí a navíc mají stejný střed křivosti (center of curvature). [4]
Platí, že , ale obráceně .
Křivky
Lagrangeův interpolační polynom
Základní metoda interpolace funkce, jejíž hodnotu známe jen v diskrétních bodech . Sestává se z pomocných polynomů : [7]
Který splňuje podmínku:
Pak polynom interpoluje danou množinu bodů:
Blbé je, že musíme všechny pomocné polynomy přepočítat, když přidáme nový bod.
- Hornerovo schéma / Horner’s method
-
Metoda evaluace polynomů. Vychází z myšlenky, že násobení se dá nestovat: [15]
Vyžaduje jen násobení a sčítání, což je optimální.
Hermitovské křivky
Asi nejznámnější interpolační křivky v počítačové grafice. Jsou určeny dvěma řídícími body — a — a dvěma dotykovými vektory — a . Řídící body určují začátek a konec křivky, dotykové vektory její směr a vyklenutí. Pokud jsou oba vektory nulové, je to úsečka.
Je jednoduché je na sebe navázat v , neboť tečné vektory jsou přímo součástí definice.
Bézierova křivka
Asi nejčastěji používaná aproximační křivka. Využívá se zejména ve 2D grafice, třeba při definici fontů.
-
Bézierova křivka -tého stupně je definována řídícími body .
-
Změnou polohy jednoho bodu dojde ke změně celé křivky. Proto se často dělí na segmenty menšího stupně, které se pak navazují na sebe.
Základem jsou Bernsteinovy polynomy -tého stupně:
Mezi jejich vlastnosti patří:
-
Nezápornost: pro .
-
Jejich součet je roven jedné: .
-
Dají se vyjádřit rekurzí: .
Obrázek 1. Bernstein basis polynomials for 4th degree curve blending by VisorZ
- DeCasteljau algorithm
-
Rekurzivní algoritmus pro konstrukci Bézierových křivek. Využívá vlastností Bernsteinových polynomů.
- Bézierova kubika
-
Bézierova křivka třetího stupně. Je dána čtyřmi řídícími body :
B-spline
- Splajn / spline
-
Splajn stupně po částech definovaná polynomiální funkce stupně proměnné . [8]
TipPo částech definovaná / piecewise znamená, že má několik intervalů a pro každý z nich jiný polynom.
-
Místa, kde se části polynomu dotýkají jsou uzly a jsou značeny pomocí a řazeny v neklesajícím pořadí.
-
Pokud jsou uzly unikátní, pak je splajn v uzlech spojitý. [8]
-
Pokud je uzlů shodných, je v tomto místě pouze spojitý.
-
⁂
Basis spline / B-spline stupně je aproximační křivka / splajn daná sekvencí uzlů. Jako funkce vrací užitečné hodnoty jen mezi prvním a posledním uzlem, všude jinde je nulová. Svůj název dostala podle toho, že B-splajny slouží jako bázové funkce pro splajnové křivky.
Lze ji definovat pomocí Cox-de Boorovy rekurzivní formule:
Tip
|
de Boorův algoritmus je generalizací DeCasteljauova algoritmu ale pro B-splajny. |
Zatímco jde od k , červený výraz začíná na 1 a klesá k 0.
Podobně, zatímco jde od k , modrý výraz začíná na 0 a roste k 1.
Navíc platí .
Jejich užitečnost spočívá v tom, že libovolný splajn stupně daný sekvencí uzlů lze vyjádřit jako lineární kombinaci B-splajnů:
Note
|
Uzlů je zpravidla víc než , protože pak teprve máme víc než jeden B-spline, který kombinujeme. |
- Uniformní B-splajny
-
Uzly jsou rozloženy rovnoměrně. Tedy mezi každými dvěma uzly a je stejná vzdálenost .
Příklad:
- Coonsova kubika
-
Kubika daná 4 řídícími body . Neprochází ani jedním z kontrolních bodů. [11]
NoteNěco ohledně tohohle termínu mi hrozně smrdí. Zdá se, že jediní, kdo používají "coons cubic curve" jsme my a ČVUT.
Povrchy
Interpolace je náročná, proto se častěji používají aproximační povrchy.
Interpolační plocha
Plocha . Dáno:
-
řídících bodů .
-
hodnot a hodnot .
Platí, že pro a .
Interpolujeme vektorovým polynomem :
V případě Lagrangeova polynomu je .
Hermitovský plát
Interpolační povrch.
- 12-ti vektorová varianta
-
4 rohové body a 8 tečných vektorů.
- 16-ti vektorová varianta
-
4 rohové body, 8 tečných vektorů a 4 zkrutové vektory.
Coonsovy pláty / Coonsovy plochy / Coons patch
Plochy vzniknuvší interpolací mezi křivkami udávající jejich okraje. Dají se na sebe pěkně napojovat, právě protože jsou definovány svými okraji.
Warning
|
Coonsovy pláty jsou interpolační, zatímco Coonsovy křivky jsou aproximační. |
- Bilineární Coonsovy pláty
-
Určeny 4 křivkami , které tvoří okraj plátu.
Implicitně se dá zapsat jako:
Povrch je pak tvořen body , které tuto rovnici splňují.
Explicitně se dá zapsat jako:
Zásadním nedostatek těchto ploch je, že není snadné vyjádřit tečné vektory na okrajích, a proto není snadné je napojovat na sebe.
- Bikubické Coonsovy pláty
-
Podobné bilineárním, ale používájí Hermitovské polynomy:
Implicitně je pak tento plát dán:
Stejně jako u bilineárních ploch, i tady je těžké získat tečné vektory na okrajích.
- Obecná bikubická plocha
-
Kromě rohů je parametrizována i tečnými vektory na okrajích. Konečně tedy umožňuje snadné navazování.
Bézierovy plochy
Aproximační plochy dány řídícími body. Jsou:
-
snadno diferencovatelné,
-
jednoduše se modelují,
-
lze z nich relativně snadno spočítat průnik s paprskem,
-
speciální případ NURBS ploch.
Kde a jsou Bernsteinovy polynomy.
Při změně jendoho z bodů se změní celá plocha, proto se často více plátů spojuje dohromady. Pro spojitost se musí rovnat řídící body na okrajích. Pro musí tečné vektory na okrajích být lineárně závislé.
Zobrazují se rekurzivním dělením (patch splitting). Využívá se algoritmu de Casteljau.
B-spline plochy
Aproximační plochy analogické B-spline křivkám, ale se dvěma parametry.
-
Jsou lepší pro modelování než Hermitovské nebo Bézierovy plochy, protože se lépe navazují, jelikož B-splajny stupně garantují spojitost .
-
Změnou jednoho řídícího bodu nezměníme celou plochu, ale jen část.
-
Celá plocha leží v konvexním obalu řídících bodů.
-
Průchodu řídícím bodem lze dosáhnout zvýšením jeho násobnosti (a tak snížením spojitosti).
-
Invariantní k lineárním transformacím.
- NURBS plochy
-
Standard v průmyslovém modelování. Umožňují definovat velké množstí ploch: free-form surfaces, plochy založené na přímkách a kuželosečkách, atd. [13] Jsou invariantní k lineárním transformacím i k perspektivní projekci.
kde jsou řídící body a jsou NURBS bázové funkce:
a jsou B-spline bázové funkce stupně a . jsou váhy.
Tip
|
NURBS plochy se využívají v modelovací technice sweeping (šablonování), kdy se množina bodů pohybuje (posunuje, rotuje, …) prostorem za vniku tělesa. [14] |
Surface subdivision / rekurzivní dělení polygonů
Polygonové povrchy dělíme v případě, kdy chceme je zjemnit, vyhladit.
- Pravidla dělení
-
Dělení dodržují nějaké pravidlo.
-
Topologická pravidla: udávají vztahy pro generování nových vrcholů, hran, atd. z topologie objektu.
-
Geometrická pravidla: generují nové vrcholy, hrany, atd. na základě intepolací sousedních vrcholů.
-
- Extraordinary vertices / mimořádné vrcholy
-
Vrcholy, které mají jiný počet sousedů (valenci) než ostatní vrcholy.
- 4-point scheme
-
Interpolace křivkou.
- Catmull-Clark
-
Aproximuje původní mesh. Zachovává , na mimořádných bodech ale jen . Po první iteraci vždy vznikou quady. Založený na bikubických uniformních B-splinech.
- Doo-Sabin
-
Aproximuje původní mesh. Narozdíl od Catmull-Clark je založený na bikvadratických uniformních B-splinech.
- Loop
-
Aproximuje původní mesh. Funguje jen na trojúhelníkové síti.
- Butterfly
-
Interpoluje původní mesh. Funguje jen na trojúhelníkové síti.
Zdroje
-
[1] Byška, Furmanová, Kozlíková, Trtík: PA010 Intermediate Computer Graphics (podzim 2021)
-
[2] Sochor: PA010 Intermediate Computer Graphics (podzim 2020)
-
[3] Sochor: PB009 Principles of Computer Graphics (jaro 2019)
-
[6] Geometric Continuity of Parametric Curves: Three Equivalent Characterizations
-
[10] ČVUT: Ferguson curve
-
[11] ČVUT: Coons curve