1 / 41

Jádro polygonální oblasti

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.

Télécharger la présentation

Jádro polygonální oblasti

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 36VGE ZS 2007/2008 FEL ČVUT Roman Hocke 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.

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

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

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

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

  7. Průnik polorovin

  8. Průnik polorovin

  9. Průnik polorovin

  10. Průnik polorovin

  11. Průnik polorovin • Průnik polorovin je asociativní operace:(H1  H2)  H3 = H1  (H2  H3)‏ • Lze použít metodu Rozděl a panuj.

  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

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

  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°

  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

  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

  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é

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

  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

  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

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

  22. Lee - Preparata

  23. Lee - Preparata

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

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

  26. Lee - Preparata • V1 – konvexní vrchol

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

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

  29. Lee - Preparata • V2 je reflexní vrchol.

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

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

  32. Lee - Preparata • V3 je konvexní vrchol.

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

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

  35. Lee - Preparata • K se uzavřel.

  36. Lee - Preparata • V4 je konvexní...

  37. Lee - Preparata • L vpravo od polopř.

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

  39. Lee - Preparata • Z jádra vidíme všechny body v polyg. 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

  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.

More Related