Algoritmy ořezávání. Ořezávací oblast. Test polohy bodu vzhledem ke konvexnímu mnohoúhelníku. Test polohy bodu vzhledem k pravoúhelníku.

Podobné dokumenty
Mgr. Markéta Trnečková, Ph.D. Palacký University, Olomouc

Algoritmy pro ořezávání 2D polygonů

Fergusnova kubika, která je definována pomocí bodu P1, vektoru P1P2, bodu P3 a vektoru P3P4

Přímková a rovinná soustava sil

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

B1. Výpočetní geometrie a počítačová grafika 9. Promítání., světlo.

1.7.2 Moment síly vzhledem k ose otáčení

Zobrazení kružnice v pravoúhlé axonometrii. osy, která je normálou roviny dané kružnice; délka hlavní poloosy je rovna poloměru

Planimetrie. Přímka a její části

Vzorce počítačové grafiky

Moment síly, spojité zatížení

Fyzika. Fyzikální veličina - je mírou fyzikální vlastnosti, kterou na základě měření vyjadřujeme ve zvolených jednotkách

DYNAMIKA HMOTNÉHO BODU

MAGNETICKÉ POLE ELEKTRICKÉHO PROUDU. r je vyjádřen vztahem

Kružnice, úhly příslušné k oblouku kružnice

Geometrické vyhledávání

MAGNETICKÉ POLE CÍVEK V HELMHOLTZOVĚ USPOŘÁDÁNÍ

Úlohy krajského kola kategorie B

Stavební statika. Cvičení 1 Přímková a rovinná soustava sil. Goniometrické funkce. Přímková a rovinná soustava sil. 1) Souřadný systém

ÚLOHY S POLYGONEM. Polygon řetězec úseček, poslední bod je totožný s prvním. 6 bodů: X1, Y1 až X6,Y6 Y1=X6, Y1=Y6 STANOVENÍ PLOCHY JEDNOHO POLYGONU

Parabola. Předpoklady: 7501, Pedagogická poznámka: Na všechny příklady je potřeba asi jeden a půl vyučovací hodiny.

5 Algoritmy vyplňování 2D oblastí

Kapitola 8. prutu: rovnice paraboly z = k x 2 [m], k = z a x 2 a. [m 1 ], (8.1) = z b x 2 b. rovnice sklonu střednice prutu (tečna ke střednici)

Technická univerzita v Liberci. Fakulta přírodovědně-humanitní a pedagogická Katedra matematiky a didaktiky matematiky KŘIVKY. Pomocný učební text

Výslednice, rovnováha silové soustavy.

Odvození středové rovnice kružnice se středem S [m; n] a o poloměru r. Bod X ležící na kružnici má souřadnice [x; y].

VEKTOROVÁ POLE VEKTOROVÁ POLE

pravidelné konvexní mnohostěny

Konvexní obal a množina

Souřadnicové prostory


Střední škola automobilní Ústí nad Orlicí

Dynamické datové struktury III.

3.2.8 Oblouková míra. Předpoklady:

Výpočet průsečíků paprsku se scénou

Urci parametricke vyjadreni primky zadane body A[2;1] B[3;3] Urci, zda bod P [-3;5] lezi na primce AB, kde A[1;1] B[5;-3]


BI-EP1 Efektivní programování 1

Matematika NÁRODNÍ SROVNÁVACÍ ZKOUŠKY DUBNA 2017

Úlohy klauzurní části školního kola kategorie A

Konstrukci (jejíčásti) budeme idealizovat jako tuhá (nedeformovatelná) tělesa (v prostoru) nebo desky (v rovině).

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

10. cvičení - LS 2017

Shodná zobrazení v rovině

PLANIMETRIE ZÁKLADNÍ POJMY PŘÍMKA A JEJÍ ČÁSTI


3.2.2 Shodnost trojúhelníků II

2. Vyšetřete všechny možné případy vzájemné polohy tří různých přímek ležících v jedné rovině.

Vypracoval: Mgr. Lukáš Bičík TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ REPUBLIKY

6 Diferenciální operátory

Výpočet průsečíků paprsku se scénou

Metamorfóza obrázků Josef Pelikán CGG MFF UK Praha


Úlohy domácí části I. kola kategorie A

Zlín, 23. října 2011

ZŠ ÚnO, Bratří Čapků 1332

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Přijímací zkouška na MFF UK v Praze

Kvadratickou funkcí se nazývá každá funkce, která je daná rovnicí. Definičním oborem kvadratické funkce je množina reálných čísel.

ZŠ ÚnO, Bratří Čapků 1332

3.2. ANALYTICKÁ GEOMETRIE ROVINY

Funkce jedné reálné proměnné. lineární kvadratická racionální exponenciální logaritmická s absolutní hodnotou

Geometrické vyhledání.

Funkce - pro třídu 1EB

INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA

Shodná zobrazení. bodu B ležet na na zobrazené množině b. Proto otočíme kružnici b kolem

Poznámky pro žáky s poruchami učení z matematiky 2. ročník 2005/2006 str. 1. Funkce pro UO 1

Hydraulika podzemních vod

5. P L A N I M E T R I E

Algoritmizace a programování

Použití derivací. V této části budou uvedena některá použití derivací. LEKCE08-PRU. Použití derivací. l Hospital

7.5.3 Hledání kružnic II

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

CVIČNÝ TEST 37. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 5 III. Klíč 13 IV. Záznamový list 15

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

17 Kuželosečky a přímky

3.7. Magnetické pole elektrického proudu


Derivace a monotónnost funkce


P L A N I M E T R I E

Kopie z

F n = F 1 n 1 + F 2 n 2 + F 3 n 3.

Cvičné texty ke státní maturitě z matematiky

Úhly a jejich vlastnosti

2 Grafický výstup s využitím knihovny

CVIČNÝ TEST 13. OBSAH I. Cvičný test 2. Mgr. Zdeňka Strnadová. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Příklady elektrostatických jevů - náboj

4. Statika základní pojmy a základy rovnováhy sil

VEKTOR. Vymyslete alespoň tři příklady vektorových a skalárních fyzikálních veličin. vektorové: 1. skalární

Cvičné texty ke státní maturitě z matematiky

Funkce pro studijní obory

Matematika B 2. Úvodní informace

do strukturní rentgenografie e I

Časopis pro pěstování mathematiky a fysiky


Vyplňování souvislé oblasti

Kristýna Bémová. 13. prosince 2007

Úlohy domácího kola kategorie B

Části kruhu. Předpoklady:

Transkript:

řednáška 6 lgoitmy ořezávání Ořezávací oblast Učení viditelné oblasti uživatelského souřadnicového systému USS Vykeslení pouze té části obazu, kteá leží ve viditelné oblasti Obvykle je viditelnou (ořezávací) oblastí osově oientovaný pavoúhelník (většinou okno souřadnicového systému zařízení SSZ). Cílem může být: zychlení gafického výstupu (v případě, že velké množství objektů leží mimo viditelnou oblast a zjištění této skutečnosti je ychlejší než samotné keslení) vykeslení obazu pouze do učité části gafického výstupního zařízení náhada ořezávání na úovni gafického výstupního zařízení 1 řednáška 6 2 Test polohy bodu vzhledem k pavoúhelníku Vpřípadě ořezávání osově oientovaným pavoúhelníkem stačí vyhodnotit souřadnice vykeslovaného bodu [x,y] vzhledem k hanicím pavoúhelníku. (x>xmin) (x<xmax) (y>ymin) (y<ymax) Y MX Y MIN y X MIN x X MX Test polohy bodu vzhledem ke konvexnímu mnohoúhelníku Nutno učit polohu bodu vůči všem haničním úsečkám olohu bodu a úsečky B lze učit pomocí velikosti vektoového součinu u (B) a v ( ) S=(b x -a x )(p y -a y )-(b y -a y )(p x -a x ) i j k i j S<0 bod leží napavo od úsečky B S=0 bod leží na úsečce B S>0 bod leží nalevo od úsečky B u v = u okud je mnohoúhelník definován posloupností vcholových uzlů poti směu hodinových učiček, potom vyšetřovaný bod leží uvnitř, pokud leží vlevo od všech úseček. po směu hodinových učiček, potom vyšetřovaný bod leží uvnitř, pokud leží vpavo od všech úseček. v X X uy vy uz = bx ax vz px ax by ay py ay k 0 0 řednáška 6 3 řednáška 6 4

Test polohy bodu vzhledem k nekonvexnímu mnohoúhelníku o nekonvexní mnohoúhelník je třeba vyhodnotit počet půsečíků polopřímky vedené z vyšetřovaného bodu libovolným směem s hanami mnohoúhelníku. Sudý počet půsečíků bod leží vně Lichý počet půsečíků bod leží uvnitř oblémy nastanou: okud papsek pochází vcholem U úseků ovnoběžných s papskem Řešení: oužití vodoovného papsku + vynechání vodoovných han + ozpojení han Ořezání úsečky (Cohen-Sutheland) Založeno na ozdělení celé plochy USS na jednotlivé oblasti Oblastem je přiřazen 4-bitový kód podle polohy vzhledem k poloze ořezávací oblasti (vlevo, vpavo, dole, nahoře) 1001 0001 0101 1000 0000 0100 1010 0010 0110 řednáška 6 5 řednáška 6 6 o každý počáteční (Z) a koncový (K) bod úsečky se učí kód. okud kód(z) kód(k) = 0.. úsečka je celá uvnitř okud kód(z) kód(k) 0.. úsečka je celá mimo okud kód(z) kód(k) = 0.. úsečka pochází více oblastmi, je třeba ji oříznout (ořezávání se povádí dle libovolné jedničky v kódech po Z a K a testy s novými kódy se zopakují). oznámka: 1001 0001 0101 Ořezání úsečky (Liang-Basky) Založeno na paametickém vyjádření úsečky Minimalizuje počet zbytečně učených nových haničních bodů Ořezávání pavoúhelníkem, jehož hany jsou ovnoběžné sosami SS ůnik,, ND, & 1000 0000 0100 Zobecnění po obecný konvexní mnohoúhelník metoda Cyus-Beck, viz st. 14 Sjednocení,,OR, 1010 0010 0110 řednáška 6 7 řednáška 6 8

incip Liang-Basky metody (1) Úsečka je definována body se souřadnicemi (x 1, y 1 ) a (x 2, y 2 ). aametické vyjádření úsečky: x =x 1 + u x y =y 1 + u y, kde: paamet u nabývá hodnot 0, 1 x = (x 2 -x 1 ) y = (y 2 -y 1 ) o každý bod úsečky, ležící uvnitř ořezávané oblasti platí: x MIN x 1 + u x x 1 + u x x MX y MIN y 1 + u y y 1 + u y y MX incip Liang-Basky metody (2) řepis uvedených neovností do tvau: up k q k, po k = 1,2,3,4 Definice hodnot p k a q k : k = 1: p 1 = - x q 1 =x 1 -x MIN k = 2: p 2 = x q 2 =x MX -x 1 k = 3: p 3 = - y q 3 =y 1 -y MIN k = 4: p 4 = y q 4 =y MX -y 1 okud někteé p k =0, potom úsečka je ovnoběžná s příslušnou hanou ořezávací oblasti. okud někteé p k <0, potom úsečka (přímka) směřuje dovnitř oblasti (vzhledem na příslušnou hanici ořezávací oblasti). okud někteé p k >0, potom úsečka (přímka) směřuje ven z oblasti (vzhledem na příslušnou hanici ořezávací oblasti). řednáška 6 9 řednáška 6 10 incip Liang-Basky metody (3) incip Liang-Basky metody (4) Význam paametů p k a q k po jednu hanu ořezávací oblasti p 4 =0; q 4 <0 p 4 <0 p 4 >0 u 1 u 2 V případě p k =0 q k <0 leží ovnoběžná úsečka "před" hanicí a je možno ji vynechat. o každou podmínku, kde p k 0, ke možno spočítat paamet k = q k / p k, kteý učuje bod půsečíku úsečky (přímky) s danou hanicí ořezávací oblasti. o všechny podmínky, kde p k <0 (úsečka směřuje dovnitř) učíme paamet k = q k / p k a výsledný paamet u 1 (počátečního bodu ořezané úsečky) vybeeme maximum z vypočítaných hodnot k a hodnoty 0 (nula). o všechny podmínky, kde p k >0 (úsečka směřuje ven) učíme paamet k = q k / p k a výsledný paamet u 2 (koncového bodu ořezané úsečky) vybeeme minimum z vypočítaných hodnot k a hodnoty 1 (jedna). Ořezaná ús. je dána pa. u 1 a u 2, kde u 1 < u 2, u 1 a u 2 0,1. řednáška 6 11 řednáška 6 12

říklad Liang-Basky metody Ořezání úsečky (Cyus-Beck) [y] Založeno na paametickém vyjádření úsečky Ořezání obecným konvexním n-úhelníkem 400 [500, 350] očet ořezů závisí na pořadí han n 4 300 200 (1) (4) (3) (2) p1 = -350, q1 = -50; = 0.143 p2 = 350, q2 = 250; = 0.714 p3 = -300, q3 = -100; = 0.333 p4 = 300, q4 = 250; = 0.833 u 2 =min (1; 0,714; 8.333) n 5 V 1 1 V 5 V 4 B 3 V 3 n 3 B 100 [150, 50] 0 100 200 300 400 500 600 [x] u 1 =max (0; 0.143; 0.333) ůvodní úsečka B Ořezaná úsečka 1 B 3 Ořezávací oblast V 1 V 2 V 3 V 4 V 5 5 n 1 V 2 n 2 řednáška 6 13 řednáška 6 14 Cyus-Beck předpoklady Cyus-Beck postup V 1 n 1.V 1 (t C )<0 ředpoklady a základní pavidla: Ořezávací oblast je zadána pomocí oientovaných han, oientace je poti směu hod. uč. Ořezávaná úsečka je oientována B aametické vyjádření (t)= + t (B-) x (t) = x + t(b x - x ) y (t) = y + t(b y - y ) Kolmé vektoy: u. v = 0 Nomálový vekto (otočení v o 90 vpavo): n v, n = ( vy, vx) Tupý úhel: u. v < 0 Ostý úhel: u. v > 0 n v C půsečík hany V 1 V 2 a B t c paamet půsečíku C = ( tc) = + tc( B ) vekto V 1 C musí být kolmý na nom. vekt. n 1 V 1C) = 0 ( tc) V 1) = 0 + tc( B ) V 1) = 0 V 1) n1x( x V 1x) + n1 y( y V 1y) tc = = B ) n1x( Bx x) + n1y( By y) Rozlišujeme případy, kdy B - směřuje dovnitř: -směřuje ven: n 1.V 1 (t C )>0 1 - je ovnoběžná s hanou: B ) = řednáška 6 15 řednáška 6 16 n 1 C V 2 B ) < 0 n.( B ) > 0 0

Cyus-Beck stučný algoitmus inicializace paametů začátku a konce úsečky: t Z =0, t K =1 po každou hanu n-úhelníku: učení nomálového vektou n pokud skalání součin n.(b - )<>0 výpočet t C dle směu dovnitř/ven případná změna t Z = max(t Z, t C ) nebo t K = min(t K, t C ) jinak úsečka je ovnoběžná s touto hanou pokud leží v poloovině mimo n-úhelník: lze ořezávanou úsečku zcela vypustit KONEC jinak nemá tato hana na ořezání vliv OKRČ. DLŠÍ HRNOU pokud t Z < t K, potom se keslí ořezaná úsečka (t Z ) (t K ), jinak po ořezu z úsečky nic nezbylo Ořezávání n-úhelníku Ořezávání jednotlivých úseček (tvořících hanici polygonu) pomocí předcházejících algoitmů lze použít pouze po vykeslení obysu ořezaného polygonu. ři požadavku na zachování n-úhelníku (např. z důvodu vyplňování) je nutno použít po ořezávání jiný algoitmus, například poudové ořezávání metodou Sutheland-Hodgman. Ořezání pavoúhlou oblastí algoitmus Sutheland-Hodgman Ořezání libovolným (i nekonvexním n-úhelníkem, včetně dě ) algoitmus Weile-theton řednáška 6 17 řednáška 6 18 Různé vaianty, vznikající při ořezávání n-úhelníhů. Sutheland-Hodgman oudové ořezávání Ořez se povádí 4x, vždy po jednu hanici okna. Je nutno v případě potřeby vytvářet nové haniční úsečky tak, aby oblast zůstala spojitá a uzavřená. ři implementaci lze používat 4x stejný kód (modul) a ořezávání jednotlivými hanami okna ealizovat pomocí otáčení o 90. Modul pobíá postupně všechny aktuální vcholy polygonu. řednáška 6 19 řednáška 6 20

Schéma poudového ořezávání pomocí jednotného modulu Modul povede ořezání podle jedné hanice okna. ktualizuje seznam vcholů polygonu. Otáčení se povádí záměnou x-ových a y-ových souřadnic současně se změnou znaménka. x Ořez - Ořez - Ořez - Ořez - x y y X max Y max -X min -Y min řednáška 6 21 řednáška 6 22 ktualizace vcholů Stučný algoitmus modulu Modul povádí vkládání nových vcholů, popřípadě ušení vcholů na základě polohy pávě vyšetřovaného a předcházejícího vcholu vůči hanici. 4 případy polohy, (aktuální) a (předcházející) a/ Vchol se uší a nepostupuje do dalšího zpacování N b/ Vkládá se nový vchol N, vchol postupuje nezměněn c/ Vchol postupuje nezměněn N d/ Vchol je nahazen novým vcholem N vstup: souřadnice vcholů polygonu (pole, seznam), hanice inicializace: Vynulovat pole aktualizovanevcholy, pocetktvcholu = 0 = vcholy[pocet-1] //poslední vchol polygonu postupně po všechny vcholy V i = 1..pocetVcholu poveď pokud hana V i je celá vně, potom nic (pokačuj dalším vcholem) pokud hana V i směřuje z venku dovnitř, potom vypočítej půsečík N s hanicí, do pole přidej N a V i ; pocetktvcholu += 2; pokud hana V i je celá uvnitř, potom přidej do pole V i ; pocetktvcholu++; pokud hana V i směřuje zevnitř ven, potom vypočítej půsečík N s hanicí; do pole přidej N; pocetktvcholu++; = V i řednáška 6 23 řednáška 6 24

odpoa v Javě bstaktní třída oint2d Třída oint: souřadnice x, y (int) Třída oint2d.double: souřadnice x, y (double) Třída oint2d.float: souřadnice x, y (float) double distance (oint2d pt) double distance (double px, double py) static double distance(double x1, double y1, double x2, double y2) oint2d p2 = new oint2d.double(20.0, 40.0); double vzdal = p2.distance(10.0, 10.0); odpoa v Javě bstaktní třída Rectangle2D Třída Rectangle: x, y, w, h (int) Třída Rectangle2D.Double: x, y, w, h(double) Třída Rectangle2D.Float: x, y, w, h (float) boolean contains (oint2d p) boolean contains (Rectangle 2D ) Rectangle2D ceateintesection (Rectangle2D ) Rectangle2D ceateunion(rectangle2d ) static void intesect (Rectangle2D sc1, Rectangle2D sc2, Rectangle2D dest) boolean intesects (Rectangle ) boolean intesectsline (Line2D l) boolean isempty () řednáška 6 25 řednáška 6 26 odpoa v Javě Třída olygon (int[] xpoints, int[] ypoints, int npoints) boolean contains (oint p) boolean contains (oint2d p) boolean contains (Rectangle 2D ) boolean intesects (Rectangle ) Složitější úlohy se řeší pomocí ozhaní Shape ozhaní athiteato třídy ea třídy Genealath třídy ath2d řednáška 6 27