Zkouška – ústní
Transkript
Zkouška – ústní
Fakulta elektrotechniky a informatiky Počítačová grafika Zkouška – ústní (Anti)aliasing Aliasing je jev, ke kterému může docházet v situacích, kdy se spojitá (analogová) informace převádí na nespojitou (digitální signály). Postup, jak docílit lepší ostrosti obrazu („odzubatění“ hran). Ke kreslení objektu se použije více odstínů barev, než má původní. Jejich odstín záleží na velikosti kterou objekt má zabírat na určitém pixelu. Čím je zabraná oblast větší, tím tmavší má odstín. (zvětšuje se prostorové rozlišení na úkor barevného). Intenzitu (jas) jaký má mít určitý pixel udává desetinná část y v DDA algoritmu a nebo člen D v Bresenhamově algoritmu. Při použití vícenásobného vzorkování se provede zvětšení objektu na 2 nebo 4 násobek velikosti. Poté se vypočítají barvy pro subpixely (2 nebo 4 pixely které vznikly z pixelu původního) a z nich se provede aritmetický průměr. Poloha bodu vůči obecnému n-úhelníku Pokud je objekt konvexní (tzn. nemá prohlubně, výběžky – pro ty co to nechápou, jako já), tak při zjišťování polohy bodu po směru hodinových ručiček, pokud leží vždy vpravo, je bod uvnitř objektu. Pokud jdeme proti směru hodinových ručiček a bod je vždy vlevo, je bod opět uvnitř. Ve všech ostatních případech leží bod mimo. Pokud je objekt konkávní (třeba list rostliny – nic mě nenapadá), tak zjišťujeme počet průsečíků od bodu vedených libovolným směrem. Pokud je jejich počet lichý, leží uvnitř a sudý leží vně. Algoritmus řádkového vyplňování 1. 2. 3. 4. 5. 6. 7. odstranit vodorovné úseky orientovat hrany zkrátit hrany o jeden pixel na y ose nalézt y oblast pro řádkový rozklad pro každé y v daném rozsahu nalézt průsečíky se všemi hranami nalezené průsečíky pro jeden řádek uspořádat podle x vykreslit spojnici mezi lichými a sudými průsečíky Rozdíl mezi hraničním a záplavovým vyplňováním • • hraniční: určí se barva hranice a pak všechny body, které nemají barvu hranice patří do vyplňované oblasti. Hranice může být kreslena osmispojitě, ale vyplňuje se čtyřpojitě (jinak může dojít k vyplnění oblasti i za hranicí) Metoda: floodfil, FillStyle: fsBorder záplavové: určí se barva semínka (podkladu), který má být změněn a vyplňuje se, dokud barva podkladu má definovanou barvu (barva vedlejšího bodu se nezmění od předchozího vyplňovaného) Metoda: floodfil, FillStyle: fsSurface Algoritmus řádkového vyplňování (vzorem) máme daný vzor o rozměrech m×n a jednotlivé prvky vyjadřují barvy odpovídajících pixelů. Úsečky kreslíme jako jednotlivé pixely s odpovídající barvou. Pokud je ve vzoru původní barva oblasti, může dojít k zacyklení! Pro výpočet pozice v matici se používám modulo. http://fei.trtkal.net 2008/2009 1 Fakulta elektrotechniky a informatiky Počítačová grafika Algoritmus řádkového vyplňování (vektorové) 1. každým řádkem vedeme pomyslnou čáru a po ose x hledáme průsečíky (dvojice mezi lichým a sudým průsečíkem definují úsečku ležící uvnitř oblasti) 2. odstraníme vodorovné úsečky 3. zkrátíme hrany o 1px na ose y 4. nalezneme maximum a minimum na y ose (pro nalezení celé vyplňované oblasti) 5. pro každé y nalezneme všechny průsečíky a vykreslíme čáru vždy mezi jednotlivými lichými a sudými průsečíky Vyplňováni (rozdíl mezi hraničním / rastrovým vyplňováním) Inverzní a inverzní plotové vyplňování • inverzní: vyplníme postupně řádky pro jednu hranu na levé straně objektu pomocí XOR režimu a poté od pravé hrany do konce celého obrázku (dvojitě XORované = původní barva) • inverzní plotové: nejdříve určíme plot (svislici) v některém vrcholovém bodu (pokud možno co nejblíže středu objektu) a provádíme inverzní vyplňování, jen rozlišujeme, jestli zprava od plotu nebo zleva. Vyplňujeme jen oblast uvnitř objektu, nikoli za objekt, jak tomu bylo u inverzního. Algoritmus řádkového vyplňování (semínkové) http://nb.vse.cz/~simunek/it418/2d/vypln2D/Vypln2D.html 1. vložíme do zásobníku semínko ve všemi čtyřmi směry 2. dokud není prázdný zásobník, provedeme s ním posunutí do všech směrů 3. pokud je bod nad semínkem uvnitř oblasti, vložíme ho do zásobníku (ale bez směru dolů → tam je již vyplněno) 4. pokud je bod pod semínkem uvnitř oblasti, vložíme ho do zásobníku (ale bez směru nahoru → tam je již vyplněno) 5. vyplňujeme aktuální řádek doprava až po hranici a poté do leva (nebo obráceně) 6. vykreslíme oblast mezi nalezenými krajními body 7. v průběhu bodu 5 kontrolujeme místa nad a pod aktuálním procházeným bodem na změnu hraniční/vyplňované oblasti → dojde-li ke změně, zasadíme nové semínko http://fei.trtkal.net 2008/2009 2 Fakulta elektrotechniky a informatiky Počítačová grafika Coonsova kubika http://www.hyperkrychle.cz/curves/coonsc.html Aproximační křivka, neprochází danými body. Body vyjadřují matematicky, kde se křivka bude nacházet. Coonsova kubika se zadává stejně jako kubika Bézierova čtyřmi řídicími body P0, Pl, P2, a P3. Coonsova kubika se spočítá ze vztahu: Splajn kubika http://www.hyperkrychle.cz/curves/spline.html Interpolační křivky jsou vyjádřeny polynomem 3. stupně. A nemá to co dělat v grafice, je to matematika :D. Splajn křivky jsou jistým zobecněním polynomiálních interpolací a aproximací. Typy Promítání Je to zobrazení 3D grafiky v 2D prostoru. • kolmá projekce: zobrazuje objekt v jeho základní poloze (nárys, bokorys, půdorys), není názorný, používá se v technickém kreslení • rovnoběžné promítání: všechny parsky jsou rovnoběžné. Jsou různé druhy promítání: axonometrie (používá projekční roviny, které nejsou rovnoběžné s hlavními osami), perspektiva (jedno, dvou a tříbodová) a izometrie • středové promítání: promítání na válcovou nebo kulovou plochu Rovnoběžné promítání Středové promítání http://fei.trtkal.net 2008/2009 3 Fakulta elektrotechniky a informatiky Počítačová grafika Standardní a adaptivní paleta Barvy rozdělují paletu na přibližně 3 stejné části o různých barvách. Z těchto barev pak jejich mícháním vznikají odstíny barev. • subtraktivní: paleta je vyjádřena pomocí CMY (azurová, purpurová a žlutá). Při smíchání všech barev nám vznikne černá. • aditivní: paleta vyjádřena pomocí RGB (červená, zelená a modrá). Při jejich smíchání nám vznikne barva bílá. Paleta 3-3-2 a 6×6×6 • • • 3-3-2: 8 bitová paleta (256 barev) – pro červenou a zelenou jsou vyhrazeny 3 bity (8 úrovní) a pro modrou 2 (4 úrovně). 6×6×6: 8 bitová paleta (216 barev + místo na případné systémové) – standardní bezpečná webová paleta, každá barva má 6 úrovní udávané v HEX jsou to: 00, 33, 66, 99, CC a FF. Používalo se pro zajištění shodných barev na všech monitorech/prohlížečích/systémech. 6-6-6: 18 bitová paleta (262 144 barev) – pro každou barvu 6 bitů, je to nativní barevná hloubka pro VGA zobrazení Rozdíl mezi rasterizací oblasti a hranice Rasterizace hranice závisí na řídící ose x a y. Určení hraničních bodů pro jednotlivé řádky je řízeno osou y. Důsledkem je překreslení jen některých bodů hranice. Interpolační Lagrangeova křivka http://www.hyperkrychle.cz/curves/lagrange.html Lagrangeova křivka prochází vždy všemi body. Aby bylo možno polynom vypočítat, je nutno znát souřadnice n bodů, jimiž má křivka procházet a dále musí být splněna podmínka, že posloupnost interpolovaných bodů musí být uspořádané dle souřadnice x: xi < xi+1 pro i = 0 ..n. Interpolační polynom stupně n je potom definován vztahem: Interpolační křivky, metody tvorby (plus ten splajn a věci kolem) Rozdíl mezi interpolační / aproximační křivkou http://www.hyperkrychle.cz/curves/krivky.html Při interpolaci generovaná křivka body prochází, kdežto při aproximaci je křivka body pouze vyjádřena (nemusí jimi procházet, dokonce ani počátečním a koncovým ne) Bresenham pro elipsu Hledáme body nejblíže skutečné elipsy, ovšem za pomoci celočíselné aritmetiky. Bresenham pro kružnici Hledáme body nejblíže skutečné kružnici, ovšem za pomoci celočíselné aritmetiky. http://fei.trtkal.net 2008/2009 4 Fakulta elektrotechniky a informatiky Počítačová grafika Cohen-Sutherland (ořezávání úsečky) http://cs.wikibooks.org/wiki/Ořezávání Ohodnotíme si prostory hraničními kódy. Každý prostor získá ohodnocení dle polohy vůči úsečce (vpravo, vlevo, nahoře, dole, …). Zkoumáme postupně 3 polohy úsečku proti ořezávanému oknu. 1. tj. úsečka je celá v ořezávacím okně a není potřeba ji proto ořezávat. Tj. pro obě ohodnocení bodů platí, že jsou 0000 (oba body jsou "v ořezávacím okně"). 2. tj. úsečka je celá mimo ořezávací okno a není potřeba ji proto ořezávat. Tento test ovšem některé případy úseček procházejících vnějšími oblastmi neodhalí. 3. tj. úsečka buď prochází ořezávacím oknem anebo jde o "neodhalený" případ úsečky mimo okno. Úsečka prochází několika oblastmi a je nutné ji ořezat. Provedeme to tak, že zvolíme bod úsečky, který neleží uvnitř (tj. jeho hraniční kód není 0000) a podle nastavené jedničky vybereme hranici, podle které ho úsečku zkrátíme (přesněji algoritmizace níže). Pojem rasterizace Rasterizace je proces, při kterém převádíme základní grafické objekty do systému posloupnosti obrazových bodů. Toto je důležité při práci s různými výstupními zařízeními, které nejsou schopny zobrazit přesně daný objekt, ale při svém zobrazení používají rastr. Jsou zde různé pasterizační postupy, jak výsledku docílit. Např.: DDA algoritmus, Bresenhamův algoritmus pro úsečku a kružnici, nebo kresba kružnice pomocí otáčení bodu. Liang-Barsky Založeno na parametrickém vyjádření úsečky. Minimalizuje počet nově vytvářených hraničních bodů. Ořezává pravoúhelníkem, jehož hrany jsou rovnoběžné s osami souřadnicového systému (SS). Postup: převedeme body na úsečku v parametrickém tvaru s parametrem mezi 0 a 1. Máme dané vlastnosti, které platí pro vnitřní ořezávanou oblast a 4 vztahy do kterých dosadíme hodnoty z úsečky. Podle výsledků mohou nastat pro jednotlivé hrany tyto stavy: • některé p = 0, pak je úsečka rovnoběžná s příslušnou hranicí ořezávané oblasti • některé p < 0, pak úsečka směřuje do ořezávané oblasti (skrz příslušnou hranici) • některé p > 0, pak úsečka směřuje ven z ořezávané oblasti (skrz příslušnou hranici) Maticové rozptylováni Bressenhaim na elipsu http://fei.trtkal.net 2008/2009 5 Fakulta elektrotechniky a informatiky Počítačová grafika CSG Modelování Constructive Solid Geometry (konstruktivní geometrie těles) spočívá v tom, že každé složité těleso jde poskládat z jednodušších těles (tzv. CSG primitiv) (koule, kvádr, kužel, poloprostor, toroid), množinových operací (sjednocení, průnik, rozdíl) a transformací. Velká výhoda ve strojnictví – napodobení obráběcích operací. Rozdíl transformace zadané explicitně VS matici (v 3D) Fergusonova křivka 3. řádu a Hermitovské polynomy Úprava jasu a kontrastu http://fei.trtkal.net 2008/2009 6