Upload
deon
View
50
Download
0
Embed Size (px)
DESCRIPTION
Nalezení jádra polygonální oblasti. Zpracoval: Šafránek David. Slovník pojmů. hranaedgee vrcholvertexv polorovinahalf-planeH polygonpolygon P jádrokernelK ve směru hod . ručičekclockwise protisměru hod . ručičekcounterclockwise - PowerPoint PPT Presentation
Citation preview
Nalezení jádra polygonální oblasti
Zpracoval: Šafránek David
36VGE - Výpočetní geometrie 2
Slovník pojmů
hrana edge evrchol vertex vpolorovina half-plane Hpolygon polygon Pjádro kernel Kve směru hod. ručiček clockwiseprotisměru hod. ručiček
counterclockwiseHvězdicovitý polygon star-shaped , star polygon
polygon s neprázdným jádrem
36VGE - Výpočetní geometrie 3
Terminologie vrcholů v0 konvexní, vypouklý (convex) vnitřní úhel < 180
v1 konkávní, vydutý, introspektivní (reflex)
vnitřní úhel > 180
V1
V0
36VGE - Výpočetní geometrie 4
Problém
máme polygon s N vrcholy v rovině, zkonstruujeme jeho jádro
36VGE - Výpočetní geometrie 5
Definice
množina bodů odkud jsou všechny body polygonu přímo viditelné, aniž by výhled křížila hrana
36VGE - Výpočetní geometrie 6
Grafická ukázka definice
K
36VGE - Výpočetní geometrie 7
Odborná definice
Jádro je průnik N polorovin. Každá hrana polygonu P určuje polorovinu, ve které jádro musí ležet. Průnik vnitřních (levých - postupujeme-li proti směru hodinových ručiček) polorovin.
36VGE - Výpočetní geometrie 8
Pozice bodu vůči orientované přímce vlevo nebo vpravo a, b, c určuje přímku x a y určuje bod řešíme rovnici w = a . x + b . y + c w=0: leží na přímce w < 0: leží v pravé polorovině w > 0: leží v levé polorovině při zvolení opačného normálového
vektoru (a, b) se změní w znaménko
36VGE - Výpočetní geometrie 9
Algoritmus
Algoritmus v pořadí prochází vrcholy P a konstruuje konvexní polygony Ki. Každý z těchto polygonů může i nemusí být ohraničený.
Polygon Ki+1 je tvořen průnikem Hn n=0..i+1, a i=0..N-2 (N je počet vrcholů/hran počátečního polygonu).
Takto zkonstruované Ki je společný průnik polorovin ležících vlevo od hran P.
36VGE - Výpočetní geometrie 10
Důsledky algoritmu
Tento výsledek má zřejmé důsledky:
1) KN-1=K(P) - aplikujeme na všechny hrany
2) K1 nadmnožinou K2 - Ki+1 = Ki "and" Hi
36VGE - Výpočetní geometrie 11
Základní algoritmus
počítáme průnik poloroviny s polygonem
výpočetně náročné
36VGE - Výpočetní geometrie 12
Chytrý algoritmus
zrychlení pomocí vrcholů F a L, při průniku s polorovinou vymezují jen část jádra, tudíž neprohledáváme celé dosud nalezené jádro
36VGE - Výpočetní geometrie 13
Vstup polygon P - uspořádané vrcholy (hrany) ei následované vi
V0
V1
V2
V3
V4
V5 V6 N=7
e0
e1
e2
e4
e3
e6
e5
36VGE - Výpočetní geometrie 14
Výstup
když bude K(P) neprázdný, pak výstup bude také ve formě posloupnosti vrcholů (hran)
36VGE - Výpočetní geometrie 15
Triviální případ
N < 3: není polygon N = 3: jádro je totožné s
polygonem
36VGE - Výpočetní geometrie 16
Úvodní krok
Nalezení konkávního vrcholu a vygenerování výchozího neuzavřeného jádra K1. Není-li vrchol nalezen, pak polygon P je konvexní, jedná se o triviální případ - jádro je totožné s polygonem K(P)=P. Tudíž připustíme, že v0 je konkávní vrchol.
Určení F1 jako bod v nekonečnu na přímce e1 ve směru v0 a L1 obdobně na přímce e0 ve směru v0.
36VGE - Výpočetní geometrie 17
Grafická zobrazení prvního kroku
V0
V1
V2
V3
V4
V5 V6
e0
e1
e2
e4
e3
e6 e5
K1
F
L
36VGE - Výpočetní geometrie 18
Hlavní krok
máme-li Ki, pak zhotovíme Ki+1 tak, že vezmeme další vrchol v pořadí (vi) a spočteme Ki+1
dále upravíme Fi a Li tak, že spojnice s aktuálním bodem vi polygonu neprotíná žádné jeho hrany
detailní popis algoritmu obsahuje značné větvení (konvexní | konkávní vrchol, F (L) leží vpravo | vlevo)
36VGE - Výpočetní geometrie 19
Podmínka pro F a L
F
Vi
L K
36VGE - Výpočetní geometrie 20
1.1 Konkávní vrchol, F leží vpravo od od ei+1 vi+1
F
Vi
L K
ei ei+1
w1
w2
36VGE - Výpočetní geometrie 21
procházíme K proti směru hodinových ručiček od F dokud nenalezneme průsečík (w1) s ei+1 vi+1, dojdeme-li až k L, pal je K(P)=Ø
F
Vi
L K
ei ei+1
w1
w2
36VGE - Výpočetní geometrie 22
procházíme K po směru hodinových ručiček od F dokud nenalezneme průsečík (w2) s ei+1 vi+1, ořízneme K podle hrany w1 w2
F
Vi
L K
ei ei+1
w1
w2
36VGE - Výpočetní geometrie 23
F: je na konci hrany w1 w2
F
Vi
L K
ei ei+1
w1
w2
36VGE - Výpočetní geometrie 24
L: procházíme K proti směru hodinových ručiček od L dokud nenajdeme vrchol w, takový, že následující vrchol leží vpravo od vi+1(vi+1w), pak Li+1=w jinak zůstává
F
Vi
L K
ei ei+1
w1
w2
36VGE - Výpočetní geometrie 25
1.2 Konkávní vrchol, F leží vlevo od od ei+1 vi+1
Vi F
ei
ei+1
L
K
36VGE - Výpočetní geometrie 26
K zůstává stejné. F: procházíme K protisměru hodinových
ručiček od F dokud nenajdeme vrchol w, takový, že následující vrchol leží vpravo od vi+1(vi+1w), pak Fi+1=w jinak zůstává
Vi F
ei
ei+1
L
K
36VGE - Výpočetní geometrie 27
L: stejně jako v případě 1.1 1.1: procházíme K proti směru hodinových ručiček
od L dokud nenajdeme vrchol w, takový, že následující vrchol leží vpravo od vi+1(vi+1w), pak Li+1=w jinak zůstává
Vi F
ei
ei+1
L
K
36VGE - Výpočetní geometrie 28
2.1 L leží na nebo vpravo od ei+1 vi+1
Vi F
L K
W1
W2
ei
ei+1
36VGE - Výpočetní geometrie 29
procházíme K po směru hodinových ručiček od L dokud nenalezneme průsečík (w1) s ei+1 vi+1, dojdeme-li až k L je K(P)=Ø
Vi F
L K
W1
W2
ei
ei+1
36VGE - Výpočetní geometrie 30
procházíme K proti směru hodinových ručiček od L dokud nenalezneme průsečík (w2) s vi ei+1. Provedeme oříznutí hranou w1 w2
Vi F
L K
W1
W2
ei
ei+1
36VGE - Výpočetní geometrie 31
2.2 L leží vlevo od ei+1 vi+1
Vi F
L
ei
ei+1
36VGE - Výpočetní geometrie 32
K zůstává stejné. F: stejně jako v případě 1.2 1.2 procházíme K protisměru hodinových ručiček
od F dokud nenajdeme vrchol w, takový, že následující vrchol leží vpravo od vi+1(vi+1w), pak Fi+1=w jinak zůstává
Vi F
L
ei
ei+1
36VGE - Výpočetní geometrie 33
L: je-li K ohraničené tak jako 1.1 jinak zůstává 1.1: procházíme K proti směru hodinových
ručiček od L dokud nenajdeme vrchol w, takový, že následující vrchol leží vpravo od vi+1(vi+1w), pak Li+1=w jinak zůstává
Vi F
L
ei
ei+1
36VGE - Výpočetní geometrie 34
Složitost
paměťová složitost O(n) jádro polygonální oblasti může být
zkonstruováno v optimálním čase O(n)
nejhorší složitost nastane pro následující instanci - polygon bez jádra, kde má daný algoritmus časovou složitost O(N2)
36VGE - Výpočetní geometrie 35
Nejhorší případ
V0 1 2 3
P
36VGE - Výpočetní geometrie 36
Řešení
ukončit algoritmus jakmile obteče v úhlu větším než 3π kterýkoliv bod částečného jádra K
36VGE - Výpočetní geometrie 37
Applet
http://web.informatik.uni-bonn.de/I/GeomLab/VisPolygon/index.html.en
36VGE - Výpočetní geometrie 38
Použití
zjištění, zda je polygon hvězdicovitý
umístění všesměrového vysílače
36VGE - Výpočetní geometrie 39
Další algoritmy
Competitive strategy (Závodní strategie)
nalezení bodu jádra polygonální oblasti - maximálně 5.333x delší než nejkratší cesta, předpokládá rozhled 360° - využití v robotice
36VGE - Výpočetní geometrie 40
Zobecnění do více prostorů při přechodu do trojrozměrného
prostoru je třeba přímky nahradit rovinami, a najít uspořádání všech trojúhelníků (tesselace) v objektu
36VGE - Výpočetní geometrie 41
Kde získat další informace
Franco P. Preparata: Computational Geometry http://www.pi6.fernuni-hagen.de/publ/
tr211.pdf
36VGE - Výpočetní geometrie 42
Dotazy
36VGE - Výpočetní geometrie 43
Děkuji za pozornost