Konvexní obal a množina
Transkript
Konvexní obal a množina
Konvexní obal a množina Definice Množina M se nazývá konvexní, jestliže úsečka spojující libovolné dva její body je částí této množiny, tj. ∀a, b ∈ M , ∀t ∈ 0,1 : ta + (1 − t )b ∈ M konvexní množina a b b a nekonvexní množina Počítačová geometrie Petra Surynková Konvexní obal a množina Definice Konvexní obal množiny M je nejmenší konvexní množina, která množinu M obsahuje. Konvexní obal ve 2D konvexní obal = konvexní mnohoúhelník reprezentace – uspořádaná posloupnost vrcholů (proti směru hodinových ručiček) Konvexní obal ve 3D konvexní obal = konvexní mnohostěn reprezentace – planární graf Počítačová geometrie Petra Surynková Konvexní obal a množina vstup n bodů v rovině výstup konvexní obal Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 volba KSS nalezneme bod s největší x-ovou souřadnicí - P y P bod P je vrchol konvexního obalu v bodě P určíme tzv. dělící přímku – nejčastěji & y (všechny body vstupní množiny musí ležet v jedné polorovině, kterou určuje dělící přímka) x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 z bodu P vedeme všechny polopřímky směřující do ostatních bodů vstupní množiny y P x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 z bodu P vedeme všechny polopřímky směřující do ostatních bodů vstupní množiny y 2 P =1 vybereme tu polopřímku, která svírá s první přímkou (dělící přímka) nejmenší úhel dostáváme vrchol konvexního obalu - 2 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 z bodu P vedeme všechny polopřímky směřující do ostatních bodů vstupní množiny y 2 P =1 vybereme tu polopřímku, která svírá s první přímkou (dělící přímka) nejmenší úhel dostáváme vrchol konvexního obalu – 2 hrana konvexního obalu 12 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 opakujeme, dokud se nedostaneme s hranou konvexního obalu opět do prvního bodu, tj. do P y 2 P =1 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 opakujeme, dokud se nedostaneme s hranou konvexního obalu opět do prvního bodu, tj. do P y 2 3 P =1 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 opakujeme, dokud se nedostaneme s hranou konvexního obalu opět do prvního bodu, tj. do P y 2 3 P =1 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 opakujeme, dokud se nedostaneme s hranou konvexního obalu opět do prvního bodu, tj. do P y 2 3 P =1 4 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 opakujeme, dokud se nedostaneme s hranou konvexního obalu opět do prvního bodu, tj. do P y 2 3 P =1 4 5 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 opakujeme, dokud se nedostaneme s hranou konvexního obalu opět do prvního bodu, tj. do P y 2 3 P =1 4 5 6 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 opakujeme, dokud se nedostaneme s hranou konvexního obalu opět do prvního bodu, tj. do P y 2 3 P =1 4 7 5 6 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 1 opakujeme, dokud se nedostaneme s hranou konvexního obalu opět do prvního bodu, tj. do P y 2 3 P =1 4 7 5 6 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 2 volba KSS nalezneme bod s největší x-ovou souřadnicí - P y P bod P je vrchol konvexního obalu zvolíme bod Q uvnitř množiny (např. těžiště) Q x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 2 z bodu Q svazek polopřímek QAi - uspořádáme kladně počínaje polopřímkou QP y Ai budeme postupovat po P Q jednotlivých bodech Ai dle uspořádání rozhodujeme, zda daný vrchol náleží konvexnímu obalu x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 2 z bodu Q svazek polopřímek QAi - uspořádáme kladně počínaje polopřímkou QP y Ai A1 , A2 ,..., An seřazené P Q ke každému bodu známe předchůdce a následníka Ai −1 , Ai , Ai +1 Ai - je předchůdce Ai +1 a následník Ai −1 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 2 Ai −1 , Ai , Ai +1 - zkoumáme, zda bod Ai +1 leží nalevo nebo napravo od polopřímky Ai −1 Ai Ai +1 nalevo Ai +1 Ai Ai Ai −1 Q za Ai −1 , Ai , Ai +1 dosadíme následníky Počítačová geometrie napravo Ai −1 Q za Ai Ai - vymažeme dosadíme Ai +1 Petra Surynková Konvexní obal a množina Algoritmus 2 při průchodu konvexním obalem leží vždy následující body nalevo od zkoumané polopřímky Ai +1 nalevo Ai +1 Ai Ai Ai −1 Q Počítačová geometrie napravo Ai −1 Q Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový vybereme libovolné tři body, které tvoří trojúhelník = počáteční konvexní obal – uspořádáme proti směru hod. ruč. y 2 3 nalezneme množinu vnějších bodů libovolný bod vnější množiny přidáme do konvexního obalu 1 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový vybereme libovolné tři body, které tvoří trojúhelník = počáteční konvexní obal – uspořádáme proti směru hod. ruč. y 2 4 3 1 nalezneme množinu vnějších bodů libovolný bod vnější množiny přidáme do konvexního obalu pomocí determinantu – zjišťuji, které hrany jsou z přidávaného bodu vidět – ty vymažeme z konvexního obalu x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y opakujeme, dokud množina vnějších bodů není prázdná 3 2 4 1 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 5 opakujeme, dokud množina vnějších bodů není prázdná 3 2 4 1 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 2 4 1 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 2 5 4 1 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 2 4 1 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 2 4 1 5 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 2 4 1 5 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 2 4 1 6 5 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 2 4 1 5 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 2 opakujeme, dokud množina vnějších bodů není prázdná 6 4 1 5 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 2 4 1 5 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 6 2 4 1 5 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 4 2 5 1 6 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 4 2 5 1 6 7 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 4 2 5 1 6 7 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 8 opakujeme, dokud množina vnějších bodů není prázdná 4 2 5 1 6 7 x Počítačová geometrie Petra Surynková Konvexní obal a množina Algoritmus 3 - přírůstkový v následujícím kroku znovu určíme množinu vnějších bodů a přečíslujeme vrcholy y 3 opakujeme, dokud množina vnějších bodů není prázdná 4 2 5 1 6 7 x Počítačová geometrie Petra Surynková