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