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, NURBS, Coonsovy křivky a pláty. Povrchy tvořené rekurzivním dělením polygonů.

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é strukturyImplicitní 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ě .

Note
Podle slidů z PB009 musí faktor úměrnosti být různý od 0. [3] Podle Barskyho a DeRoseho musí v první derivaci být a v dalších už je to šumák. [6] Co je správně? Kdo ví. Nemám dost častu to zjistit, takže to ponechávám jako cvičení čtenáři.

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.

Cubic Hermite spline / Ferguson curve

Pro Hermitovskou kubiku platí: [9] [10]

kde jsou Hermitovské polynomy 3. stupně:

szp05 hermite

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í: .

szp05 bernstein
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ů.

szp05 decasteljau
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]

Tip

Po čá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]

szp05 coons basis
Note
Ně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ů.

szp05 hermite plate 12
16-ti vektorová varianta

4 rohové body, 8 tečných vektorů a 4 zkrutové vektory.

szp05 hermite plate 16

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:

szp05 bilinear

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.

szp05 bezier plate

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.

szp05 doo sabin
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