Počítačová grafika - 8. cvičení Radek Janoštík Univerzita Palackého v Olomouci 12.11.2018 Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 1 / 11
Výplň oblasti Oblast = uzavřený geometrický útvar Vnitřek oblasti lze vyplnit Geometricky určená hranice Hranice určena posloupností bodů Uzavřenost zajištěna definicí poslední bod je spojen s prvním Hranice určená rastrem Žádný požadavek na tvar hranice Je potřeba znát barvu hranice nebo barvu vnitřních bodů v oblasti Je potřeba zadat bod, který se nachází uvnitř oblasti Budeme se zabývat jen prvním případem Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 2 / 11
Výplň geometricky určené hranice Hranice se může vzájemně protínat Musíme rozhodnout, jaké body budeme považovat za vnitřní Možné přístupy: Paritní vyplňování (EvenOdd) Vnitřní vyplňování (Winding) Obtočení bodu Více hranic Různé grafické knihovny je mají pod rozdílnými názvy (+ inverze) Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 3 / 11
Výplň rozkladovými řádky Obrázek se prochází po jednotlivých řádcích (výška 1px) Pro každý řádek se určí jaké hraniční úsečky protíná Průsečíky jsou seřazeny podle osy X Za vnitřek oblasti považujeme body mezi lichým a sudým průsečíkem Hraniční body úseček se překrývají mohly by se počítat dvakrát Trik: Každou nevodorovnou úsečku zkrátíme o jeden pixel shora Na výplň to nebude mít vliv Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 4 / 11
Výplň rozkladovými řádky - algoritmus Pro všechny hraniční úsečky dělej: Je-li vodorovná: Úplně ji odstraň Uprav orientaci zdola nahoru a zkrat ji shora o jeden pixel Aktualizuj mezní hranice ymin a y max celé oblasti Pro y od y min do y max dělej: Najdi průsečíky hraničních úseček s řádkem y Seřad tyto průsečíky podle souřadnice X Vykresli úseky mezi lichými(v pořadí) a sudými průsečíky Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 5 / 11
Výplň rozkladovými řádky příklad Vykreslete vnitřek následující oblasti pomocí předchozího algoritmu (Opomeňme nepřesnosti způsobené velikostmi pixelů) Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 6 / 11
Šrafování Algoritmu prakticky totožný až na: Krok(n) na ose Y je větší než 1 Nevyplníme celou oblast mezi dvěma hraničními body, ale přerušovanou čarou Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 7 / 11
šrafování rozkladovými řádky příklad Vyšrafujte vnitřek následující oblasti s krokem n = 3, s čárou délky 3px a 1px mezerou pomocí předchozího algoritmu (Opomeňme nepřesnosti způsobené velikostmi pixelů) Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 8 / 11
Vyplňování daným vzorem Zobecnění předchozích verzí Mějme vzor daný obrazovou maticí P s rozměry m, n Při vyplňování vybarvíme pixel o souřadnicíh [x, y] barvou z matice P na souřadnicích [x mod m, y mod n] Zbytek algoritmu nezměněn Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 9 / 11
šrafování rozkladovými řádky příklad Vyplňte vnitřek následující oblasti pomocí předchozího algoritmu (Opomeňme nepřesnosti způsobené velikostmi pixelů) vzorem (Oranžová, červená, modrá): OOMC P = MMCC MCOO Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 10 / 11
Úkol (1/1) Do 3 bílých obrázků o rozměrech 200x200px (postupně) vyplňte: Barvou [133, 205, 20] Šrafou s krokem n = 10, délkou čáry 10px s barvou [128, 128, 128] a mezerou 5px Vámi zvoleným výplňovým vzorem oblast danou body: (25,175), (60,20), (45,115), (120,15), (145,15), (110,125), (100,90), (105,160), (150,135), (160,180), (100,195) Poté vykreslete hranice systémovým kreslením čarou o tloušt ce 3px Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 8. cvičení 12.11.2018 11 / 11