Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

KRESLENÍ OBLASTÍ JANA ŠTANCLOVÁ

Podobné prezentace


Prezentace na téma: "KRESLENÍ OBLASTÍ JANA ŠTANCLOVÁ"— Transkript prezentace:

1 KRESLENÍ OBLASTÍ JANA ŠTANCLOVÁ jana.stanclova@ruk.cuni.cz
Obrázky (popř. slajdy) převzaty od RNDr. Josef Pelikán, CSc., KSVI MFF UK

2 Obsah obsah definice oblastí a jejich vyplnĕní
vyplňování oblasti s geometricky určenou hranicí vyplňování barvou vyplňování vzorkem šrafování vyplňování oblasti s hranicí v rastru jednoduché semínkové vyplňování řádkové semínkové vyplňování ořezávání objektů v rovině Cohen-Sutherlandův algoritmus 2/ Jana Štanclová,

3 Oblast oblast popis hranice oblasti vždy uzavřená
popis hranice + způsob vyplnění popis hranice oblasti geometricky určená hranice posloupnost bodů definujících mnohoúhelník poslední vrchol = první vrchol → uzavřená oblast hranice nakreslená v rastru libovolný tvar hranice definice oblasti barva hranice / vnitřních bodů / bodů vně oblasti souřadnice jednoho vnitřního bodu oblasti 3/ Jana Štanclová,

4 Vyplnění oblasti vyplnění oblasti oblast se nevyplňuje
kreslení hranice vyplnění všech vnitřních bodů jedinou barvou „solid fill“ šrafování oblasti „hatch fill“ obtížné pro hranice nakreslené v rastru opakované nanášení vzorku „pattern filling“ vzorek složen z jednoho nebo více barevných bodů 4/ Jana Štanclová,

5 S GEOMETRICKY URČENOU HRANICÍ
Oblast s geometricky určenou hranicí VYPLŇOVÁNÍ OBLASTI S GEOMETRICKY URČENOU HRANICÍ 5/ Jana Štanclová,

6 Řádkové vyplňování vyplňování geometricky určené hranice
pomyslná čára řádkem rastru průsečíky čáry s hranicí oblasti seřazení průsečíků podle x-ové souřadnice dvojice průsečíků → úsečky uvnitř oblasti y x [0,0] 6/ Jana Štanclová,

7 Řádkové vyplňování mnohoúhelníka
sedmiúhelník A .. G hledání úseček shora dolů 7/ Jana Štanclová,

8 Řádkové vyplňování mnohoúhelníka
Krok 1 první úsečka a její průsečíky → 4 hraniční úsečky BC, CD, EF, FG → nakreslení 2 úseček s nulovou délkou 8/ Jana Štanclová,

9 Řádkové vyplňování mnohoúhelníka
Krok 2 druhá úsečka a její průsečíky → 4 hraniční úsečky BC, CD, EF, FG → nakreslení 2 úseček 9/ Jana Štanclová,

10 Řádkové vyplňování mnohoúhelníka
Krok 3 třetí úsečka a její průsečíky → vyloučena vodorovná hrana DE → nekonečně průsečíků 10/ Jana Štanclová,

11 Řádkové vyplňování mnohoúhelníka
Krok 4 čtvrtá úsečka a její průsečíky → problém: lichý počet průsečíků !! → problém: vrchol B → není lokální extrém hranice ve smyslu souřadnice y a neleží na vodorovné hraniční čáře 11/ Jana Štanclová,

12 Řádkové vyplňování mnohoúhelníka
Krok 5 pátá úsečka a její průsečíky → nakreslení jediné úsečky 12/ Jana Štanclová,

13 Řádkové vyplňování mnohoúhelníka Řádkové vyplňování mnohoúhelníka
Krok 6 šestá úsečka a její průsečíky → vyloučení vodorovné hrany GA → nakreslení jediné úsečky 13/ Jana Štanclová,

14 Úpravy hraničních úseček
problém na 4. řádku ?? 14/ Jana Štanclová,

15 Úpravy hraničních úseček
problém na 4. řádku řešení: zkrácení všech hran zdola o 1 pixel ve směru osy y → zdánlivé rozpojení uzavřené hranice 15/ Jana Štanclová,

16 Úpravy hraničních úseček
problém na 4. řádku řešení: zkrácení všech hran zdola o 1 pixel ve směru osy y → zdánlivé rozpojení uzavřené hranice → systematické zkrácení hran → snížení počtu průsečíků jen 2 průsečíky problém vyřešen vodorovné hrany kresleny dodatečně 16/ Jana Štanclová,

17 Algoritmus vyplňování řádkovým rozkladem
pro všechny hraniční úsečky úsečka vodorovná → vynechá se (případně se vykreslí) úprava orientace shora dolů zkrácení zdola o 1 pixel aktualizace mezní souřadnice celé hranice ymin a ymax pro y ∈ <ymin, ymax> nalezení průsečíků hraničních úseček s řádkem y uspořádání průsečíků podle x vykreslení úseků mezi lichými a sudými průsečíky vykreslení hranice oblasti (je-li třeba) 17/ Jana Štanclová,

18 Vyplňování oblasti vzorem
zobecnění metody řádkového vyplňování → na úseky kladen barevný vzor barevný vzor obdélníková matice M např. 8 × 8 kreslení pixel nakresel podle předpisu PutPixel (x, y, M[y mod 8, x mod 8]) souřadnice barva (podle vzoru) 18/ Jana Štanclová,

19 Šrafování oblasti rozšíření metody řádkového vyplňování
šrafování vodorovnými plnými čarami metoda řádkového vyplňování + změna kroku změny souřadnice y nekreslí se každý řádek (pro každé y), ale každý m-tý řádek 19/ Jana Štanclová,

20 Šrafování oblasti šrafování přerušovanými čarami
šrafování s pevným začátkem optický jev: čárkování při pohledu z dálky vytváří siluetu silueta kopíruje levou hranici objektu šrafování vzhledem ke vztažnému bodu čárkování nanášeno relativně k určitému bodu např. počátek souřadnic umístění jednotlivých čárek nezávislé na tvaru a umístění oblasti oblast → výřez, kterým uživatel nahlíží na „nekonečný“ vzor na pozadí 20/ Jana Štanclová,

21 Šrafování oblasti šrafování pod obecným úhlem α
vodorovné vyplňování + transformace otáčení postup otočení hraničních úseček o úhel α na upravenou hranici použit algoritmus vodorovného šrafování kreslen každý m-tý řádek vypočítané vnitřní úseky před vykreslením otočeny o úhel -α 21/ Jana Štanclová,

22 (pro výpočet šrafování)
Šrafování oblasti šrafování pod obecným úhlem α vykreslený vyšrafovaný objekt otočení zpět o úhel -α otočený objekt (pro výpočet šrafování) 22/ Jana Štanclová,

23 Šrafování oblasti opakované šrafování oblasti pod různými úhly
→ vytvoření složitějších vzorů šrafování obdélníka přerušovanými čarami pod třemi různými úhly?? 0º (vodorovné šrafování) 60º 120º 23/ Jana Štanclová,

24 Šrafování oblasti opakované šrafování oblasti pod různými úhly
→ vytvoření složitějších vzorů šrafování obdélníka přerušovanými čarami pod třemi různými úhly?? 0º (vodorovné šrafování) 60º 120º 24/ Jana Štanclová,

25 Šrafování oblasti opakované šrafování oblasti pod různými úhly
→ vytvoření složitějších vzorů šrafování obdélníka přerušovanými čarami pod třemi různými úhly?? 0º (vodorovné šrafování) 60º 120º 25/ Jana Štanclová,

26 Šrafování oblasti opakované šrafování oblasti pod různými úhly
→ vytvoření složitějších vzorů šrafování obdélníka přerušovanými čarami pod třemi různými úhly?? 0º (vodorovné šrafování) 60º 120º 26/ Jana Štanclová,

27 Oblast s hranicí nakreslenou v rastru
VYPLŇOVÁNÍ OBLASTI S HRANICÍ NAKRESLENOU V RASTRU 27/ Jana Štanclová,

28 Semínková vyplňování semínkové vyplňování („seed fill“) semínko
vybraný vnitřní bod oblasti hranice v rastru není jasně definována informace o vyplňované oblasti získávány čtením z obrazové (rastrové) paměti postup začátek = semínko postupné prohledávání obrazové paměti → hledání vnitřních bodů oblasti vnitřní body obarveny novou barvou 28/ Jana Štanclová,

29 Semínková vyplňování vnitřní bod oblasti hraniční vyplňování
vnitřní bod → jiná barva než barva hranice záplavové vyplňování (přebarvování) vnitřní bod → stejná barva jako zadané semínko 29/ Jana Štanclová,

30 Hraniční vyplňování hraniční vyplňování
vnitřní bod → jiná barva než barva hranice vyplnění až k hranici dané barvy GetPixel(x,y) ≠ barva_hranice 30/ Jana Štanclová,

31 Záplavové vyplňování záplavové vyplňování (přebarvování)
vnitřní bod → stejná barva jako zadané semínko přebarvení pixelů dané barvy GetPixel(x,y) = původní_barva 31/ Jana Štanclová,

32 Vnitřní body oblasti směr prohledávání a vyplňování
závisí na definici vnitřku hranice klasifikace vnitřních bodů oblasti 4-souvislá oblast dva body oblasti → existuje cesta složená z vodorovných a svislých kroků po vnitřních bodech oblasti 8-souvislá oblast povoleny i diagonální kroky po vnitřních bodech oblasti 32/ Jana Štanclová,

33 4-souvislá oblast 4-souvislá oblast
dva body oblasti → existuje cesta složená z vodorovných a svislých kroků po vnitřních bodech oblasti záplavové vyplňování 33/ Jana Štanclová,

34 8-souvislá oblast 8-souvislá oblast
povoleny i diagonální kroky po vnitřních bodech oblasti záplavové vyplňování 34/ Jana Štanclová,

35 Jednoduché semínkové vyplňování
algoritmus procedure Semínko(x,y) begin je-li bod [x,y] vnitřní, pak obarvit bod [x,y] požadovanou barvou provést Semínko(x+1,y) provést Semínko(x-1,y) provést Semínko(x,y+1) provést Semínko(x,y-1) end nevýhody ?? 35/ Jana Štanclová,

36 Jednoduché semínkové vyplňování
algoritmus procedure Semínko(x,y) begin je-li bod [x,y] vnitřní, pak obarvit bod [x,y] požadovanou barvou provést Semínko(x+1,y) provést Semínko(x-1,y) provést Semínko(x,y+1) provést Semínko(x,y-1) end nevýhody „elegantní“ rekurzivní algoritmus → v praxi nepoužitelný šíření semínek do všech směrů → každý pixel mnohokrát testován i když už byl obarven čtení z obrazové paměti ... velmi pomalá operace 36/ Jana Štanclová,

37 Řádkové semínkové vyplňování - I
37/ Jana Štanclová,

38 Řádkové semínkové vyplňování - II
38/ Jana Štanclová,

39 Algoritmus - řádkové semínkové vyplňování
řádkové semínkové vyplňování („scan-line seed fill“) algoritmus vložení semínka do zásobníku dokud není zásobník prázdný: vyjmutí semínka [x,y] ze zásobníku nalezení hranice xL a xR na řádku y v nejbližším okolí bodu [x,y] nakreslení úsečky [xL,y] - [xR,y] hledání souvislých vnitřních úseků na (vyšší) úsečce [xL,y-1] - [xR,y-1] každý nalezený úsek → vložení jednoho vnitřního bodu úseku do zásobníku hledání souvislých vnitřních úseků na (nižší) úsečce [xL,y+1] - [xR,y+1] 39/ Jana Štanclová,

40 Vlastnosti algoritmu řádkové semínkové vyplňování
snížení počtu přístupů do obrazové paměti používá malý zásobník pro souřadnice několika vnitřních bodů vyplňované oblasti prohledávání sousedních pixelů → jen v jednom řádku pixelů (úsek) hledání nových semínek → nad a pod úsekem 40/ Jana Štanclová,

41 Hledání nových semínek
41/ Jana Štanclová,

42 Řádkové semínkové vyplňování
42/ Jana Štanclová,

43 Řádkové semínkové vyplňování
43/ Jana Štanclová,

44 Řádkové semínkové vyplňování
44/ Jana Štanclová,

45 Řádkové semínkové vyplňování
45/ Jana Štanclová,

46 Ořezávání objektů v rovině
46/ Jana Štanclová,

47 Ořezávání v rovině 47/ Jana Štanclová,

48 Ořezávání úsečky ořezávání úsečky původní úsečka
krajní body [xA, yA] a [xB, yB] → co je „vidět“ z úsečky ve výstupním okně ?? 48/ Jana Štanclová,

49 Ořezávání úsečky ořezávání úsečky původní úsečka ořezaná úsečka
krajní body [xA, yA] a [xB, yB] → co je „vidět“ z úsečky ve výstupním okně ?? ořezaná úsečka úsečka výstupní okno neprotne → Ø úsečka leží celá ve výstupním okně → úsečka [xA, yA] - [xB, yB] úsečka „zasahuje“ do okna → nutné přepočítat koncové body [x’A, y’A] - [x’B, y’B] souřadnice „ořezané úsečky“ neceločíselné → zaokrouhlování → vznik nepřesností v kresbě → Cohen-Sutherlandův algoritmus 49/ Jana Štanclová,

50 Rozdělení roviny na oblasti
50/ Jana Štanclová,

51 každá oblast ... 4-místný kód
Kódy oblastí každá oblast místný kód XYUV y > ymax 0 ... y ≤ ymax 1 ... y < ymin 0 ... y ≥ ymin 1 ... x > xmax 0 ... x ≤ xmax 1 ... x < xmin 0 ... x ≥ xmin 51/ Jana Štanclová,

52 Zakódování oblastí 52/ Jana Štanclová,

53 Zakódování oblastí 53/ Jana Štanclová,

54 Zakódování oblastí 54/ Jana Štanclová,

55 Zakódování oblastí 55/ Jana Štanclová,

56 Zakódování oblastí 56/ Jana Štanclová,

57 Cohen-Sutherlandův algoritmus
spočtení kódů krajních bodů CA a CB úsečky AB úsečka leží celá uvnitř okna → ?? úsečka leží celá mimo okno 57/ Jana Štanclová,

58 Cohen-Sutherlandův algoritmus
spočtení kódů krajních bodů CA a CB úsečky AB úsečka leží celá uvnitř okna → CA ⋁ CB = 0000 úsečka leží celá mimo okno → CA ⋀ CB ≠ 0000 pokud neplatí 2. ani 3. úsečka může (ale nemusí) protnout okno ořezání úsečky → pro každou jedničku v CA i CB rovnice přímky, na které úsečka leží 58/ Jana Štanclová,

59 Ořezání úsečky pro každou jedničku v CA i CB ... postupné ořezání úsečky jednička na první pozici v kódu → yA > ymax souřadnice ořezaného bodu A’ 59/ Jana Štanclová,

60 Ořezání úsečky pro každou jedničku v CA i CB ... postupné ořezání úsečky jednička na druhé pozici v kódu → yA < ymin souřadnice ořezaného bodu A’ 60/ Jana Štanclová,

61 Ořezání úsečky pro každou jedničku v CA i CB ... postupné ořezání úsečky jednička na třetí pozici v kódu → XA > xmax souřadnice ořezaného bodu A’ 61/ Jana Štanclová,

62 Ořezání úsečky pro každou jedničku v CA i CB ... postupné ořezání úsečky jednička na čtvrté pozici v kódu → xA < xmin souřadnice ořezaného bodu A’ 62/ Jana Štanclová,


Stáhnout ppt "KRESLENÍ OBLASTÍ JANA ŠTANCLOVÁ"

Podobné prezentace


Reklamy Google