Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
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á,
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.