Jdro polygonln oblasti 36 VGE ZS 20072008 FEL

  • Slides: 41
Download presentation
Jádro polygonální oblasti 36 VGE ZS 2007/2008 FEL ČVUT Roman Hocke 1

Jádro polygonální oblasti 36 VGE ZS 2007/2008 FEL ČVUT Roman Hocke 1

Jádro polygonální oblasti Množina všech bodů, ze kterých jsou „vidět“ všechny ostatní body polygonu.

Jádro polygonální oblasti Množina všech bodů, ze kterých jsou „vidět“ všechny ostatní body polygonu. Jádrem konvexního polygonu jsou všechny jeho body. 2

Jádro polygonální oblasti Jádro má konvexní tvar (existuje-li). Existuje pouze u konvexních nebo hvězdicových

Jádro polygonální oblasti Jádro má konvexní tvar (existuje-li). Existuje pouze u konvexních nebo hvězdicových (starshaped) polygonů. 3

Jádro polygonální oblasti Příklad polygonální oblasti, která nemá jádro. 4

Jádro polygonální oblasti Příklad polygonální oblasti, která nemá jádro. 4

Motivace Jádro je oblast, ze které lze „dohlédnout“ do všech míst v polygonální oblasti.

Motivace Jádro je oblast, ze které lze „dohlédnout“ do všech míst v polygonální oblasti. Ideální poloha v místnosti pro bezpečnostní kamery, senzory. . . Místo pro vysílač, který má pokrýt signálem celou danou polygonální oblast (přímá viditelnost). 5

Průnik polorovin Jádro polygonální oblasti lze sestrojit jako průnik polorovin. V úvahu se berou

Průnik polorovin Jádro polygonální oblasti lze sestrojit jako průnik polorovin. V úvahu se berou poloroviny určené hranami polygonu. 6

Průnik polorovin 7

Průnik polorovin 7

Průnik polorovin 8

Průnik polorovin 8

Průnik polorovin 9

Průnik polorovin 9

Průnik polorovin 10

Průnik polorovin 10

Průnik polorovin je asociativní operace: (H 1 H 2) H 3 = H 1

Průnik polorovin je asociativní operace: (H 1 H 2) H 3 = H 1 (H 2 H 3) Lze použít metodu Rozděl a panuj. 11

Průnik polorovin Vstup: množina polorovin M Výstup: polygon vzniklý jako průnik polorovin z M

Průnik polorovin Vstup: množina polorovin M Výstup: polygon vzniklý jako průnik polorovin z M pokud |M| = 1, vrať polorovinu z M pokud |M| > 1, pak rozděl M na disj. Podmnožiny M 1, M 2 rekurzivně najdi polygony P 1, P 2 - průnik polorovin v M 1, M 2 vrať průnik P 1 P 2 12

Průnik polorovin Časová složitost metody Rozděl a panuj: „strom“ rekurze má při n polorovinách

Průnik polorovin Časová složitost metody Rozděl a panuj: „strom“ rekurze má při n polorovinách hloubku log(n) průnik 2 polygonů o j a k hranách má složitost (j+k) v nejnižší úrovni „stromu“ probíhá průnik polygonů o nejmenším počtu hran celková časová složitost je n. log(n) 13

Lee - Preparata systematičtější hledání průniku polorovin postupné „odřezávání“ nevhodných částí z budoucího jádra

Lee - Preparata systematičtější hledání průniku polorovin postupné „odřezávání“ nevhodných částí z budoucího jádra budoucí jádro udržujeme jako spojový seznam vrcholů a hran seřazený proti směru hod. ručiček (CCW) rozdělíme vrcholy polygonu na: konvexní – s vnitřním úhlem < 180° reflexní – s vnitřním úhlem > 180° 14

Lee - Preparata Výchozí stav vybereme reflexní vrchol V 0 najdeme polopřímky z V

Lee - Preparata Výchozí stav vybereme reflexní vrchol V 0 najdeme polopřímky z V 0 opačnými směry, než příslušné hrany tyto přímky určují výchozí podobu budoucího jádra – oblast K 15

Lee - Preparata body F a L inicializujeme v „nekonečnu“ tyto body představují levou

Lee - Preparata body F a L inicializujeme v „nekonečnu“ tyto body představují levou a pravou hranici oblasti K při pohledu z aktuálního vrcholu polygonu poté postupně procházíme vrcholy polygonu upravujeme a ořezáváme oblast K na základě vlastností vrcholů a hran polygonu 16

Lee - Preparata 1. Vrchol je reflexní a bod F leží vlevo od polopřímky

Lee - Preparata 1. Vrchol je reflexní a bod F leží vlevo od polopřímky z dalšího vrcholu z bodu F hledáme CCW průsečík s polopřímkou nenajdeme-li, je K prázdné 17

Lee - Preparata hledáme druhý průsečík přímky s K (CW) najdeme-li, posuneme do druhého

Lee - Preparata hledáme druhý průsečík přímky s K (CW) najdeme-li, posuneme do druhého průsečíku bod F „odřízneme“ příslušnou část K zjistíme, zda K zůstane neuzavřený (pokud jsme nenašli druhý průsečík) 18

Lee - Preparata 2. Vrchol je reflexní a bod F leží vpravo od polopřímky

Lee - Preparata 2. Vrchol je reflexní a bod F leží vpravo od polopřímky z dalšího vrcholu jádro K se nezmění upravíme bod F tak, aby to byl i nadále „krajní viditelný“ bod z následujícího vrcholu polygonu 19

Lee - Preparata procházíme K proti směru hod. ručiček, dokud je následující bod z

Lee - Preparata procházíme K proti směru hod. ručiček, dokud je následující bod z K vlevo od polopřímky z vrcholu do F vrchol, ve kterém skončíme, je nový vrchol F 20

Lee - Preparata Obdobně též pro 3. a 4. případ - konvexní vrchol a

Lee - Preparata Obdobně též pro 3. a 4. případ - konvexní vrchol a bod L 21

Lee - Preparata 22

Lee - Preparata 22

Lee - Preparata 23

Lee - Preparata 23

Lee - Preparata Následuje konkrétní příklad na konkrétním polygonu 24

Lee - Preparata Následuje konkrétní příklad na konkrétním polygonu 24

Lee - Preparata Jako počáteční vrchol jsme zvolili reflexní bod V 0. 25

Lee - Preparata Jako počáteční vrchol jsme zvolili reflexní bod V 0. 25

Lee - Preparata V 1 – konvexní vrchol 26

Lee - Preparata V 1 – konvexní vrchol 26

Lee - Preparata L vpravo od pol. V 1 -V 2, průsečík W 1

Lee - Preparata L vpravo od pol. V 1 -V 2, průsečík W 1 27

Lee - Preparata Ořízli jsme K, zatím je stále otevřené. 28

Lee - Preparata Ořízli jsme K, zatím je stále otevřené. 28

Lee - Preparata V 2 je reflexní vrchol. 29

Lee - Preparata V 2 je reflexní vrchol. 29

Lee - Preparata Bod F leží vpravo od polopřímky. 30

Lee - Preparata Bod F leží vpravo od polopřímky. 30

Lee - Preparata Opět ořízneme K, navíc se přemístí bod F. 31

Lee - Preparata Opět ořízneme K, navíc se přemístí bod F. 31

Lee - Preparata V 3 je konvexní vrchol. 32

Lee - Preparata V 3 je konvexní vrchol. 32

Lee - Preparata L vpravo od pol. V 3 -V 4. 33

Lee - Preparata L vpravo od pol. V 3 -V 4. 33

Lee - Preparata Průsečíky W 1, W 2. 34

Lee - Preparata Průsečíky W 1, W 2. 34

Lee - Preparata K se uzavřel. 35

Lee - Preparata K se uzavřel. 35

Lee - Preparata V 4 je konvexní. . . 36

Lee - Preparata V 4 je konvexní. . . 36

Lee - Preparata L vpravo od polopř. 37

Lee - Preparata L vpravo od polopř. 37

Lee - Preparata Oříznutí, přesun bodu L. 38

Lee - Preparata Oříznutí, přesun bodu L. 38

Lee - Preparata Z jádra vidíme všechny body v polyg. oblasti. 39

Lee - Preparata Z jádra vidíme všechny body v polyg. oblasti. 39

Lee - Preparata Časová složitost algoritmu: procházíme všechny vrcholy polygonu body F a L

Lee - Preparata Časová složitost algoritmu: procházíme všechny vrcholy polygonu body F a L „obejdeme“ jádro 1 x jádro nemá víc než n vrcholů celková časová složitost je n Algoritmus je třeba doplnit testem, který ošetří případy vedoucí k časové složitosti n 2 40

Jádro polygonální oblasti Použité zdroje: http: //service. felk. cvut. cz/courses/36 VGE/prednasky/Pruniky. ppt. pdf http:

Jádro polygonální oblasti Použité zdroje: http: //service. felk. cvut. cz/courses/36 VGE/prednasky/Pruniky. ppt. pdf http: //en. wikipedia. org/wiki/Star-shaped_polygon http: //www. cs. mcgill. ca/~ethan/cs 507/convexify/applet. html Děkuji za pozornost. 41