+ All Categories
Home > Documents > Jádro polygonální oblasti

Jádro polygonální oblasti

Date post: 02-Jan-2016
Category:
Upload: clinton-pierce
View: 36 times
Download: 2 times
Share this document with a friend
Description:
36VGE ZS 2007/2008 FEL ČVUT Roman Hocke. Jádro polygonální oblasti. 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. Jádro polygonální oblasti. - PowerPoint PPT Presentation
41
1 Jádro polygonální oblasti 36VGE ZS 2007/2008 FEL ČVUT Roman Hocke
Transcript
Page 1: Jádro polygonální oblasti

1

Jádro polygonální oblasti

36VGEZS 2007/2008

FEL ČVUT

Roman Hocke

Page 2: Jádro polygonální oblasti

2

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.

Page 3: Jádro polygonální oblasti

3

Jádro polygonální oblasti

Jádro má konvexní tvar (existuje-li).

Existuje pouze u konvexních nebo hvězdicových (star-shaped) polygonů.

Page 4: Jádro polygonální oblasti

4

Jádro polygonální oblasti

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

Page 5: Jádro polygonální oblasti

5

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).

Page 6: Jádro polygonální oblasti

6

Průnik polorovin

Jádro polygonální oblasti lze sestrojit jako průnik polorovin.

V úvahu se berou poloroviny určené hranami polygonu.

Page 7: Jádro polygonální oblasti

7

Průnik polorovin

Page 8: Jádro polygonální oblasti

8

Průnik polorovin

Page 9: Jádro polygonální oblasti

9

Průnik polorovin

Page 10: Jádro polygonální oblasti

10

Průnik polorovin

Page 11: Jádro polygonální oblasti

11

Průnik polorovin

Průnik polorovin je asociativní operace:(H1 H2) H3 = H1 (H2 H3)

Lze použít metodu Rozděl a panuj.

Page 12: Jádro polygonální oblasti

12

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 M1, M2 rekurzivně najdi polygony P1, P2 - průnik

polorovin v M1, M2 vrať průnik P1 P2

Page 13: Jádro polygonální oblasti

13

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)

Page 14: Jádro polygonální oblasti

14

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°

Page 15: Jádro polygonální oblasti

15

Lee - Preparata

Výchozí stav vybereme reflexní

vrchol V0 najdeme polopřímky

z V0 opačnými směry, než příslušné hrany

tyto přímky určují výchozí podobu budoucího jádra – oblast K

Page 16: Jádro polygonální oblasti

16

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

Page 17: Jádro polygonální oblasti

17

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é

Page 18: Jádro polygonální oblasti

18

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)

Page 19: Jádro polygonální oblasti

19

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

Page 20: Jádro polygonální oblasti

20

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

Page 21: Jádro polygonální oblasti

21

Lee - Preparata

Obdobně též pro 3. a 4. případ

- konvexní vrchola bod L

Page 22: Jádro polygonální oblasti

22

Lee - Preparata

Page 23: Jádro polygonální oblasti

23

Lee - Preparata

Page 24: Jádro polygonální oblasti

24

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

polygonu

Page 25: Jádro polygonální oblasti

25

Lee - Preparata Jako počáteční vrchol jsme zvolili reflexní bod

V0.

Page 26: Jádro polygonální oblasti

26

Lee - Preparata V1 – konvexní vrchol

Page 27: Jádro polygonální oblasti

27

Lee - Preparata L vpravo od pol. V1-V2, průsečík W1

Page 28: Jádro polygonální oblasti

28

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

Page 29: Jádro polygonální oblasti

29

Lee - Preparata V2 je reflexní vrchol.

Page 30: Jádro polygonální oblasti

30

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

Page 31: Jádro polygonální oblasti

31

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

Page 32: Jádro polygonální oblasti

32

Lee - Preparata V3 je konvexní vrchol.

Page 33: Jádro polygonální oblasti

33

Lee - Preparata L vpravo od pol. V3-V4.

Page 34: Jádro polygonální oblasti

34

Lee - Preparata Průsečíky W1, W2.

Page 35: Jádro polygonální oblasti

35

Lee - Preparata K se uzavřel.

Page 36: Jádro polygonální oblasti

36

Lee - Preparata V4 je konvexní...

Page 37: Jádro polygonální oblasti

37

Lee - Preparata L vpravo od polopř.

Page 38: Jádro polygonální oblasti

38

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

Page 39: Jádro polygonální oblasti

39

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

Page 40: Jádro polygonální oblasti

40

Lee - Preparata

Časová složitost algoritmu: procházíme všechny vrcholy polygonu body F a L „obejdeme“ jádro 1x 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 n2

Page 41: Jádro polygonální oblasti

41

Jádro polygonální oblasti

Použité zdroje: http://service.felk.cvut.cz/courses/36VGE/prednasky/Pruniky.ppt.pdf

http://en.wikipedia.org/wiki/Star-shaped_polygon

http://www.cs.mcgill.ca/~ethan/cs507/convexify/applet.html

Děkuji za pozornost.


Recommended