4 Rasterizace liniových objektů Studijní cíl Tento blok je věnován základním algoritmům pro rasterizaci liniových (tzv. čárových) objektů, mezi které patří zejména úsečky, mnohoúhelníky, lomené čáry a dále křivky, kružnice, elipsy a kruhové a eliptické oblouky. V textu bude vysvětlena především motivace a důvod pro používání rasterizačních algoritmů. Dále budou představeny vybrané rasterizační algoritmy pro základní grafické primitivy a jejich implementace. Dále budou naznačeny způsoby řešení pro vykreslování tlustých a přerušovaných čar, vyhlazení zobrazení pomocí antialiasingu, případě vykreslování pouze části kružnice nebo elipsy.
Doba nutná k nastudování
3‐4 hodiny
Průvodce studiem Při studiu tohoto bloku se předpokládá, že student je seznámen se základy analytické geometrie, zná základní vztahy pro vyjádření přímky, úsečky, kružnice a elipsy.
4.1 Rasterizace grafických primitiv Grafické primitivy 2D grafiky lze obecně rozdělit na liniové a plošné primitivy. Mezi liniové primitivy patří úsečka, lomená čára, obrys mnohoúhelníku, kružnice a elipsa (obecně kuželosečky), oblouky (části kuželoseček) a otevřená nebo uzavřená obecná křivka. Obecně lze všechny liniové útvary definovat pomocí tzv. cesty (path), která může být tvořena posloupností bodů, které jsou propojeny úsečkami nebo tzv. kombinovanou čarou, která je tvořena posloupností navazujících úseček a křivek. Mezi plošné primitivy patří mnohoúhelník, kruh (obecně plocha ohraničená kuželosečkou). Speciálními případy jsou kruhová a eliptická výseč, mezikruží a další libovolný plošný útvar, jehož hranice je vymezena uzavřenou cestou (cestou, která začíná a končí v jednom a tomtéž bodě). K plošným objektům, které jsou popsány pomocí cesty, patří i vektorově definované znaky textu. KST/IPOGR Počítačová grafika
1‐1
Petr Veselý KST FEI Univerzita Pardubice
Každá konkrétní primitiva je popsána matematicky (tzv. vektorovým formátem), který má pro jednotlivé grafické primitivy různý tvar. Pro jednoduchost například úsečka může být určena svým počátečním a koncovým bodem nebo počátečním bodem a vektorem nebo rovnicí v parametrickém tvaru nebo několika dalšími způsoby. Všechny uvedené způsoby popisu úsečky definují (případně se z nich dá určit) ze kterého bodu do kterého bodu je třeba zobrazit čáru při potřebě danou úsečku zobrazit na výstupním zařízení. Při výstupu na vektorovém zařízení, což jsou dnes pouze speciální zařízení typu např. kreslící nebo řezací plotr je pro zařízení vydána posloupnost pokynů typu „zvedni pisátko/řezací nůž“ – „přesuň hlavu na pozici počátečního bodu“ – „spusť pisátko/řezací nůž“ – „přesuň hlavu na pozici koncového bodu“. Tím je na výstupu vytvořena spojitá čára nebo řez. Problém ovšem nastává v okamžiku, kdy je třeba realizovat výstup na rastrovém výstupním zařízení. A je nutno si uvědomit, že drtivá většina dnes používaných výstupních zařízení je rastrového charakteru (LCD monitory, běžné tiskárny). Obraz (výstup) na rastrovém zařízení je tvořen jednotlivými obrazovými body (pixely), viz předchozí blok. A samotný vektorový popis úsečky pouze určuje její krajní body, nikoliv seznam všech bodů (pixelů), z nichž má být rastrový obraz úsečky vytvořen. Tento problém řeší již zmíněné rasterizační algoritmy. Tyto algoritmy obecně řeší převod mezi vektorovým zadáním obrazu a jeho rastrovou reprezentací. Úkolem rastrových algoritmů je určení všech pixelů, které budou tvořit obraz dané primitivy na výstupním rastrovém zařízení, jak je naznačeno na obr. 1.
Obrázek 1: Vektorové a rastrové zobrazení úsečky
KST/IPOGR Počítačová grafika
1‐2
Petr Veselý KST FEI Univerzita Pardubice
Mimo samotný matematický popis tvaru dané primitivy může být popis doplněn dalšími požadavky (atributy) pro definování barvy, tloušťky a stylu čáry. Pro plošné primitivy je třeba rozlišovat atributy pro obrys, který je vykreslován stejně jako liniová primitiva a atributy pro výplň vnitřku oblasti, které specifikují barvu a styl výplně.
4.2 Typ rasterizace Při převodu vektorově zadaného objektu na jeho rastrový obraz neexistuje jeden univerzální (správný) způsob pro definování množiny pixelů, které budou tvořit rastrový obraz daného objektu. Každý objekt může být rasterizován několika různými způsoby, které lépe či hůře odpovídají vektorovému zobrazení. Důležitou podmínkou pro korektní rasterizační algoritmus je zachování spojitosti daného objektu i po převodu na posloupnost pixelů. Jinými slovy – objekt, který byl spojitý (např. úsečka) musí byt po rasterizaci znázorněn jako posloupnost pixelů, které spolu sousedí buď stranou, nebo rohem pixelu. Rasterizační algoritmy lze dle vytvářené spojitosti rozdělit na dvě základní kategorie – čtyřspojité (4‐connected) a osmispojité (8‐connected) algoritmy. Rozdíl v rasterizaci úsečky je ukázán na obr. 2. Pro čtyřspojité algoritmy platí podmínka, že každé dva po sobě následující pixely sousední musí mít společnou některou stranu pixelu. Jinak řešeno – na sousední pixel je možno se dostat jedním ze čtyř směrů: vlevo, vpravo, nehodu nebo dolů.
Obrázek 2: Osmispojitá a čtyřspojitá rasterizace úsečky
KST/IPOGR Počítačová grafika
1‐3
Petr Veselý KST FEI Univerzita Pardubice
Pro osmispojité algoritmy platí, že za sousední pixel je považován ten, na který je možno se přesunout v horizontálním směru (vlevo, vpravo) nebo vertikálním směru (nahoru, dolů) nebo v některém ze čtyř diagonálních směrů. To v konečném důsledku znamená, že v osmispojité rasterizaci jsou za sousední pixely považovány ty pixely, které spolu sousední buď některou stranou nebo některým rohem.
4.3 Úsečka Úsečka je definována jako nejkratší spojnice dvou bodů. K jejímu určení jsou nejčastěji použity dva body, případně bod a vektor. K výpočtu reálných bodů ležících na úsečce, kterých je ovšem nekonečně mnoho (případně k ověření, zda zadaný bod leží či neleží na úsečce), zle využít některou z forem rovnice přímky. Nejčastěji jsou k vyjádření přímky použity Obecná rovnice přímky
ax + by + c = 0 , kde parametry a a b jsou složky normálového vektoru úsečky, která je určena body [x1, y1] a [x2, y2]. Parametr c je dopočítán po dosazení libovolného bodu ležícího na dané přímce do rovnice přímky. Směrnicové vyjádření přímky
y = kx + q , kde k =
y 2 - y1 x 2 y1 - x1 y 2 , q = x 2 - x1 x 2 - x1
Vzhledem ke jmenovateli x2‐x1 je zřejmé, že tímto způsobem nelze vyjádřit přímku rovnoběžnou s osou y. Parametrické vyjádření přímky
x = x1 + ( x 2 − x1)t , kde pro přímku platí t∈ 〈‐∞, ∞〉 , pro úsečku t∈ 〈0, 1〉 y = y1 + ( y 2 − y1)t Způsob pro vyjádření přímky (úsečky) je většinou volen dle potřeb dalšího zpracování případně výpočtů. Je důležité si uvědomit, že přímky rovnoběžné s osou y nelze například pomocí směrnicového tvaru vyjádřit. Tuto skutečnost je třeba při dalším zpracování úseček zohlednit (např. samostatnou logickou větví v příslušném algoritmu) KST/IPOGR Počítačová grafika
1‐4
Petr Veselý KST FEI Univerzita Pardubice
Rasterizace úsečky spočívá, jak již bylo zaznačeno v kapitole 4.1, v nalezení množiny pixelů, které nejlépe vystihují obraz reálné úsečky v rastru. Vzhledem k tomu že úsečka je základní grafickou primitivou, pomocí níž lze sestavit složitější vykreslované objekty, je důležité aby rasterizační algoritmy pro úsečky byly maximálně efektivní. Na první pohled by se mohlo zdát, že nejjednodušším způsobem pro výpočet pixelů úsečky je prosté postupné dosazování x‐ových hodnot z intervalu 〈x1, x2〉 do obecné rovnice přímky, případně hodnot t z intervalu 〈0, 1〉 do parametrického vyjádření. Tento způsob rasterizace je ovšem naprosto nevhodný. Výpočet je velmi pomalý, neboť je prováděn v reálné aritmetice a je v něm použito násobení. Hlavní nevýhodou ovšem je problematické určení optimálního počtu pixelů, které vytvoří spojitý obraz. Počet určovaných pixelů přímo závisí na volbě výpočetního kroku Δx (případně Δt při použití parametrického vyjádření), přičemž počet kroků závisí na směrnici příslušné úsečky. 4.3.1 DDA Algoritmus Mezi jeden z nejstarších algoritmů pro rasterizaci úsečky patří DDA (Digital Differential Analyzer) algoritmus. Tento iterační algoritmus je založen opakovaném přičítání konstantních přírůstků k hodnotám na ose x i y. Počáteční hodnoty x a y odpovídá souřadnicím počátečního bodu úsečky. Základní varianta Předpokladem je, že úsečka je postupně rasterizována zleva doprava (x1 < x2). Pokud není splněna tato podmínka, je vzájemně zaměněn počáteční a koncový bod úsečky. (Poznámka: Úsečka je poté rasterizována a vykreslována směrem od jejího původního konce jejímu původnímu počátku, což může způsobit problémy například při kreslení několika navazujících úseček při použití například přerušované čáry). Dále je nutno si uvědomit význam směrnice úsečky. Směrnice úsečky vyjadřuje přírůstek na y‐ové ose (Δy) při změně x‐ové hodnoty o 1 (Δx = 1). Pokud je absolutní hodnota směrnice úsečky |k| ≤ 1, potom je za řídící osu považována osa y. Postupně je v cyklu opakovaně zvyšována hodnota na řídící ose (y) o jedničku a hodnota na ose x je změněna o hodnotu 1/k.
KST/IPOGR Počítačová grafika
1‐5
Petr Veselý KST FEI Univerzita Pardubice
Pokud je absolutní hodnota směrnice úsečky |k| > 1, potom je za řídící osu považována osa x. Postupně je v cyklu opakovaně zvyšována hodnota na řídící ose (x) o jedničku a hodnota na ose y je změněna o hodnotu k. Na řídící ose lze počítat s celými čísly, na zbývající ose je nutno počítat s reálnými přírůstky. Vypočítané neceločíselné hodnoty souřadnic je třeba před vykreslením zaokrouhlením zaokrouhlit. Tato základní varianta vede při implementaci na více logických větví, které rozlišují řídící osu (x nebo y) a dále zda je splněna podmínka (x1 < x2), případně při řídící ose y zda je splněna podmínka (y1 < y2). Upravená varianta Tato varianta nerozlišuje směr úsečky (zleva doprava nebo naopak) a rovněž nestanovuje řídící osu. Podstatou je, že dle potřebného počtu kroků stanoví přírůstky na obou osách (přičemž na jedné z os je přírůstek roven reálné hodnotě 1.0). Zjednodušeně se dá postup naznačit následovně dx = x2 ‐ x1 dy = y2 ‐ y1 počet kroků = max (|dx|, |dy|) px = dx / počet kroků py = dy / počet kroků Dle počtu kroků opakuj iterační krok xi+1 = xi + px yi+1= yi + py Vypočítané neceločíselné hodnoty souřadnic je opět třeba před vykreslením zaokrouhlením zaokrouhlit. Výhodou algoritmu je principiálně stejný přístup k hodnotám na obou osách, nevýhodou je nepatrně pomalejší výpočet díky reálným operacím na obou osách. public static void kresliUseckuDDA (Point z, Point k) { int dx = k.x - z.x; int dy = k.y - z.y; int pocetKroku = Math.max(Math.abs(dx), Math.abs(dy)); float px = (float)dx / pocetKroku; float py = (float)dy / pocetKroku;
KST/IPOGR Počítačová grafika
1‐6
Petr Veselý KST FEI Univerzita Pardubice
float x = z.x; float y = z.y; for (int index = 1; index <= pocetKroku; index++){ setPixel(Math.round(x), Math.round(y)); x += px; y += py; } } Příklad 3: DDA algoritmus
4.3.2 Bresenhamův algoritmus Bresenhamův algoritmus je mnohem efektivnější algoritmus než DDA. Jeho hlavní výhodou je, že dokáže rasterizovat úsečku pomocí celočíselné aritmetiky. Základní princip spočívá v tom, že při hledání jednotlivých obrazových bodů úsečky (pixelů) vždy rozhoduje, zda další obrazový bod úsečky bude ležet na stejné y‐ové souřadnici jako bod předchozí, nebo zda y‐ové souřadnici o jedničku větší. Předpokládejme, že známe umístění předchozího obrazového bodu úsečky (jako první bod se použije počáteční bod úsečky) se souřadnicemi [xi, yi]. Pro následující bod který má x‐ovou souřadnici xi+1 rozhodujeme o umístění na y‐ ovou souřadnici yi nebo yi+1. Z rovnice přímky (po dosazení xi+1) získáme skutečnou souřadnici y na úsečce v bodě xi+1. Diference d1 a d2 představují chybu při použití jednoho z uvažovaných nově umístěných pixelů.
yi+1
d2
y d1 yi xi
xi+1
xi+2
Příklad 4: Princip Bresenhamova algoritmu
KST/IPOGR Počítačová grafika
1‐7
Petr Veselý KST FEI Univerzita Pardubice
Dle rozdílu diferencí dokážeme určit, který pixel je blíže skutečné souřadnici. Při záporné hodnotě Δd bude mít nový další y‐ovou souřadnici yi, v opačném případě bude pixel umístěn na y‐ovou pozici yi+1. y = k (xi+1) + q d1= y ‐ yi = k (xi+1) + q ‐ yi d2= yi+1 ‐ y = yi+1 ‐ k (xi+1) ‐ q Δd = d1 ‐ d2 = 2k (xi+1) – 2yi + 2q –1 Celý výpočet je vhodné převést do celočíselné aritmetiky (k=Δy/Δx, vynásobíme rovnici Δx) a rozhodovat pouze na základě znaménka. pi = ΔdΔx = 2 Δy xi – 2 yi Δx + 2 Δy + Δx (2c –1) Hodnota pi je nazývána predikcí a bude určována iteračně (výpočet další hodnoty pi+1 na základě předchozí pi) během výpočtů všech dalších obrazových bodů úsečky. Hodnota 2 Δy + Δx (2c –1) je reálná konstanta, která po odečtení dvou následujících rovnic z výpočtu vypadne. Při výpočtu p1 na začátku výpočtu dosadíme x1, y1 a hodnotu q ze směrnicového vyjádření přímky a zaokrouhlíme. pi = 2 Δy xi – 2 yi Δx + konst pi+1 = 2 Δy xi+1 – 2 yi+1 Δx + konst Odečtením rovnic za předpokladu že: xi+1‐ xi=1 dostaneme pi+1 = pi + 2 Δy ‐ 2 Δx (yi+1 ‐ yi) Podrobné odvození tohoto postupu je uvedeno v [2]. Praktický výpočet probíhá v jednom cyklu iteračním způsobem. Na počátku známe první bod úsečky [x1, y1] a určíme predikci p1. Při každém průchodu cyklem na základě předchozí hodnoty p určíme novou hodnotu predikce a rozhodneme o umístění následujícího pixelu na stejné y‐ové úrovni, jako měl předchozí pixel, případně o jeho posunutí o jednu úroveň výše. Rozhodovací logika výpočtu je zapsána pomocí následujících vztahů: KST/IPOGR Počítačová grafika
1‐8
Petr Veselý KST FEI Univerzita Pardubice
pokud (pi <= 0) ….. yi+1=yi;
pi+1 = pi + 2 Δy
pokud (pi > 0) ….. yi+1=yi+1;
pi+1 = pi + 2 Δy ‐ 2 Δx
4.4 Kružnice Kružnice (případně kruhový oblouk) je další velice často používanou grafickou primitivou, proto i pro ni je důležitá existence rychlého rasterizačního algoritmu. Kružnici je možno definovat například středem [xs, ys] a poloměrem r nebo pomocí tří bodů ležících na kružnici [xA, yA], [xB, yB], [xC, yC]. Rovněž je možno k definici kružnice použít například obecnou nebo parametrickou rovnici.
y
y
[xA, yA]
[xB, yB]
ys
ys
[xC, yC]
r xs
x
Parametrická rovnice kružnice x = r cos α
x = xs + r cos α
y = r sin α
y = ys + r sin α
Obecná rovnice kružnice F(x,y): x2 + y2 – r2 = 0
F(x,y): (x ‐ xs)2 + (y ‐ ys) 2 – r2 = 0 Stejně jako bylo uvedeno u úsečky je možno primitivní metodu rasterizace kružnice založit na výpočtu některých bodů na základě rovnice kružnice. Tento postup má opět stejné nevýhody – extrémní časová náročnost (reálná aritmetika, násobení, výpočet mocniny, goniometrické funkce) a především problematické určení potřebného počtu bodů (pixelů) pro vytvoření spojitého obrazu. Potřebný počet bodů je totiž závislý na poloměru kružnice, viz obr 6. KST/IPOGR Počítačová grafika
1‐9
Petr Veselý KST FEI Univerzita Pardubice
Jiný způsob rasterizace kružnice vychází z aproximace kružnice (kruhového obloku) lomenou čarou (mnohoúhelníkem). Tento způsob vykazuje při vhodně zvoleném počtu vrcholů dostatečnou přesnost při náhledovém či jiném nenáročném způsoby zobrazení.
Obrázek 5: Počet potřebných pixelů kružnice závisí na poloměru
4.4.1 Bresenhamův algoritmus Bresenhamův algoritmus pro kružnici je opět celočíselný a princip je obdobný jako u úsečky. Základním požadavkem při použití tohoto algoritmu je umístění středu kružnice v počátku souřadnicového systému. Pokud rasterizujeme kružnici, jejíž střed je obecně v bodě [xs, yx], jsou vypočítané body před vykreslením posunuty do požadované polohy transformací posunutí (připočtením hodnot xs a ys k vypočítaným souřadnicím).
yi y y-½
midpoint
yi – 1 xi
xi+1
Příklad 6: Princip Bresenhamova algoritmu
KST/IPOGR Počítačová grafika
1‐10
Petr Veselý KST FEI Univerzita Pardubice
Předpokládejme, že známe umístění předchozího obrazového bodu kružnice (jako první bod se použije bod kružnice s maximální y‐ovou souřadnicí [0, r]) se souřadnicemi [xi, yi]. Pro následující bod který má x‐ovou souřadnici xi+1 rozhodujeme o umístění na y‐ovou souřadnici yi nebo yi‐1. Z rovnice kružnice získáme skutečnou souřadnici y na úsečce v bodě xi+1 a porovnáme ji s y‐ovou souřadnicí tzv. midpointu [xi+1, yi–½]. Znaménko v diferencích opět určuje chybu při použití jednoho z uvažovaných nově umístěných pixelů. Vychází se z rovnice F(x,y): x2 + y2 – r = 0 Dosazením midpointu do základní rovnice kružnice dostaneme: pi = F(xi+1, yi – ½) = (xi +1)2 + (yi – ½)2 – r2 Pokud predikce pi<0, potom jako další bude nakreslen bod se stejnou souřadnicí yi, jinak jako další bude nakreslen bod s y‐ovou souřadnicí yi–1. Iterační vyjádření predikce je pi+1 = pi + 2xi + 3 + (yi – ½ )2 + (yi+1 – ½)2 Praktický výpočet probíhá v jednom cyklu iteračním způsobem. Na počátku známe první bod kružnice [0, r] a určíme predikci p1 jako 1‐r. Při každém průchodu cyklem na základě předchozí hodnoty p určíme novou hodnotu predikce a rozhodneme o umístění následujícího pixelu na stejné y‐ové úrovni, jako měl předchozí pixel, případně o jeho posunutí o jednu úroveň níže Rozhodovací logika výpočtu je zapsána pomocí následujících vztahů: pokud (pi <= 0),
...... yi+1=yi;
pokud (pi > 0),
...... yi+1=yi – 1; pi+1 = pi + 2xi + 5 – 2yi
pi+1 = pi + 2xi + 3
Důležité upozornění Vše co bylo uvedeno při vysvětlování principů Bresenhamova algoritmu pro kružnici platí pouze pro jeden oktant (v pořadí 2. oktant, počítáno od kladné poloosy x proti směru hodinových ručiček). Při využití středové symetrie je možno celý výpočet rasterizace zjednodušit na výše uvedený výpočet bodů pouze v jednom oktantu a body do 7 zbývajících oktantů symetricky KST/IPOGR Počítačová grafika
1‐11
Petr Veselý KST FEI Univerzita Pardubice
zkopírovat. Úprava souřadnic (transformace symetrie) je na následujícím obrázku. V této souvislosti je třeba uvést podmínku, který zabezpečí ukončení iteračního výpočtu na hranici počítaného oktantu. Podmínka konce x>=y
Příklad 7: Princip Bresenhamova algoritmu
Následující kód demonstruje použití algoritmu. public static void kresliKruhBresenham (int sx, int sy, int polomer) { int predikce = 1-polomer; int x = 0; int y = polomer; while (x <= y) { setPixel(sx+x, sy+y); setPixel(sx-x, sy+y); setPixel(sx+x, sy-y); setPixel(sx-x, sy-y); setPixel(sx+y, setPixel(sx-y, setPixel(sx+y, setPixel(sx-y,
KST/IPOGR Počítačová grafika
sy+x); sy+x); sy-x); sy-x);
1‐12
Petr Veselý KST FEI Univerzita Pardubice
if (predikce <= predikce += //y zustava } else { predikce += //y klesa y--; } x++;
0) { 2*x + 3; na stejne hodnote 2*x + 5 - 2*y;
} } Příklad 8: Kod Bresenhamova algoritmu
4.5 Elipsa Elipsu v základní poloze je možno definovat například středem [xs, ys] a délka poloos a, b. Rovněž je možno k definici kružnice použít například obecnou nebo parametrickou rovnici. U elipsy (obecně kuželosečky) je na rozdíl od kružnice třeba uvažovat i obecnou polohu. V tomto případě je možno elipsu definovat například středem [xs, ys] a body [xA, yA], [xB, yB], ležícími na poloosách nebo středem [xs, ys] a délkami poloos a, b a úhlem natočení hlavní poloosy vzhledem k ose x. Případně opět rovnicemi ve všeobecném tvaru. y
y b ys
ys
a xs
x
y a
b
α
xs
x = xs + a cos α
y = b sin α
y = ys + b sin α
[xA,
ys
xs
x
Parametrická rovnice elipsy v základní poloze: x = a cos α
[xB,
x
Obecná rovnice elipsy v základní poloze: F(x,y): b2x2 + a2y2 – a2b2 = 0
F(x,y): b2 (x‐xs) 2 + a2 (y‐ys) 2 – a2b2 = 0 KST/IPOGR Počítačová grafika
1‐13
Petr Veselý KST FEI Univerzita Pardubice
Pro elipsu a její rasterizaci platí obecně většina zásad, které byly uvedeny v kapitole týkající se rasterizace kružnice. Dále bude uveden základní celočíselný algoritmus pro rasterizaci elipsy v základní poloze. Pro rasterizaci elipsy v obecné poloze lze rovněž použít celočíselné algoritmy, které jsou uvedeny v literatuře [3], případně zle tyto úlohy řešit pomocí transformace. 4.5.1 Bresenhamův algoritmus pro elipsu v základní poloze V tomto textu budou uvedeny jen zásadní rozdíly oproti rasterizace kružnice pomocí Bresenhamova algoritmu. Kompletní odvození je uvedeno v [3]. Výpočet je nutno provést pro jeden celý kvadrant. Během výpočtu v daném kvadrantu je třeba změnit řídící osy. Změna řídících os – v bodě, kde je směrnice tečny = ‐1 (45°). Tento bod je určen pomocí rovnosti parciálních derivací rovnice elipsy postupně podle x a podle y δF/δx = 2b2x δF/δy = 2a2y Počáteční nastavení predikce p1= b2 ‐ ba2 + a2/4; Rozhodovací logika výpočtu je zapsána pomocí následujících vztahů: pokud (pi <= 0),
...... yi+1=yi;
pokud (pi > 0),
...... yi+1=yi+1; pi+1 = pi + b2(2xi + 1) – 2a2yi
pi+1 = pi + b2(2xi + 1)
Pojmy k zapamatování Rasterizace, rasterizační algoritmus, iterační způsob výpočtu, predikce, celočíselný algoritmus, antialiasing, čtyř a osmispojitá rasterizace
Otázky na procvičení 1. 2. 3. 4.
Jaké jsou základní 2D grafické primitivy? Jaký je rozdíl mezi výstupem na vektorovém a rastrovém zařízení? K čemu slouží rasterizační algoritmy? Jaké znáte způsoby pro rasterizaci úsečky, kružnice, elipsy.
KST/IPOGR Počítačová grafika
1‐14
Petr Veselý KST FEI Univerzita Pardubice
5. 6. 7. 8. 9. 10.
Jak fungují jednotlivé popsané algoritmy? Kolikrát lze v rámci symetrie využít rasterizovanou část kružnice a elipsy? V čem je výhoda celočíselných algoritmů. Jaký je rozdíl mezi čtyřspojitou a osmispojitou rasterizací? Jakým způsobem se rasterizují liniové objekty se vzorem? Co je to anialiasing?
Odkazy a další studijní prameny • •
Žára, J., Beneš, B., Felkel, P. Moderní počítačová grafika. Computer Press, Brno, 1998. ISBN 80‐7226‐049‐9. Foley, Van D. Computer Graphics. Principles and Practice. Addison‐Wesley,1991.
KST/IPOGR Počítačová grafika
1‐15
Petr Veselý KST FEI Univerzita Pardubice