Operace s uzavřenými oblastmi v GIS

Podobné dokumenty
Geometrické vyhledání.

Geometrické vyhledávání

Algoritmizace prostorových úloh

Úvod do výpočetní geometrie. Základní vztahy.

Dynamické datové struktury III.

Dynamické datové struktury IV.

Vzorce počítačové grafiky

Triangulace. Význam triangulace. trojúhelník je základní grafický element aproximace ploch předzpracování pro jiné algoritmy. příklad triangulace

INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA

Topologická kostra. Medial Axis. Straight Skeleton.

P L A N I M E T R I E

ÚLOHY S POLYGONEM. Polygon řetězec úseček, poslední bod je totožný s prvním. 6 bodů: X1, Y1 až X6,Y6 Y1=X6, Y1=Y6 STANOVENÍ PLOCHY JEDNOHO POLYGONU

VE 2D A 3D. Radek Výrut. Abstrakt Tento článek obsahuje postupy pro výpočet Minkowského sumy dvou množin v rovině a pro výpočet Minkowského sumy

Konvexní obálka množiny bodů.

Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování

GIS Geografické informační systémy

Algoritmy pro ořezávání 2D polygonů

Příklady k analytické geometrii kružnice a vzájemná poloha kružnice a přímky

X = A + tu. Obr x = a 1 + tu 1 y = a 2 + tu 2, t R, y = kx + q, k, q R (6.1)

Syntetická geometrie II

Zavedeme-li souřadnicový systém {0, x, y, z}, pak můžeme křivku definovat pomocí vektorové funkce.

Základy matematické analýzy

Voronoiův diagram. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta

11. VEKTOROVÁ ALGEBRA A ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ

Rozvinutelné plochy. tvoří jednoparametrickou soustavu rovin a tedy obaluje rozvinutelnou plochu Φ. Necht jsou

Matematika 1 MA1. 1 Analytická geometrie v prostoru - základní pojmy. 4 Vzdálenosti. 12. přednáška ( ) Matematika 1 1 / 32

14. přednáška. Přímka

Kapitola 5. Seznámíme se ze základními vlastnostmi elipsy, hyperboly a paraboly, které

Cyklografie. Cyklický průmět bodu

9. Je-li cos 2x = 0,5, x 0, π, pak tgx = a) 3. b) 1. c) neexistuje d) a) x ( 4, 4) b) x = 4 c) x R d) x < 4. e) 3 3 b

2. Vyšetřete všechny možné případy vzájemné polohy tří různých přímek ležících v jedné rovině.

GIS Geografické informační systémy

1. Přímka a její části

ŠROUBOVICE. 1) Šroubový pohyb. 2) Základní pojmy a konstrukce

SYLABUS 9. PŘEDNÁŠKY Z INŢENÝRSKÉ GEODÉZIE

11. VEKTOROVÁ ALGEBRA A ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ. u. v = u v + u v. Umět ho aplikovat při

Úhly a jejich vlastnosti

1 Topologie roviny a prostoru

Konvexní obálka množiny bodů.

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

CVIČNÝ TEST 41. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17

1 Analytická geometrie

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

2. ANALYTICKÁ GEOMETRIE V PROSTORU Vektory Úlohy k samostatnému řešení... 21

Analytická geometrie přímky, roviny (opakování středoškolské látky) = 0. Napište obecnou rovnici. 8. Jsou dány body A [ 2,3,

Zákony hromadění chyb.

Kružnice, úhly příslušné k oblouku kružnice

Další plochy technické praxe

Urci parametricke vyjadreni primky zadane body A[2;1] B[3;3] Urci, zda bod P [-3;5] lezi na primce AB, kde A[1;1] B[5;-3]

Úvod do mobilní robotiky AIL028

FAKULTA STAVEBNÍ VUT V BRNĚ PŘIJÍMACÍ ŘÍZENÍ PRO AKADEMICKÝ ROK

Rovnice přímky. s = AB = B A. X A = t s tj. X = A + t s, kde t R. t je parametr. x = a 1 + ts 1 y = a 2 + ts 2 z = a 3 + ts 3. t R

PROGRAMY PRO GIS. Formovat/formulovat problém pro aplikaci v počítači. Fungování GIS programů na základní úrovni - "uvažovat" jako počítač

Bézierovy křivky Bohumír Bastl KMA/GPM Geometrické a počítačové modelování Bézierovy křivky GPM 1 / 26

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

A[a 1 ; a 2 ; a 3 ] souřadnice bodu A v kartézské soustavě souřadnic O xyz

5. Statika poloha střediska sil

17 Kuželosečky a přímky

Triangulace. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Elementární plochy-základní pojmy

Analytická geometrie lineárních útvarů

3.1.2 Polorovina, úhel

Euklidovský prostor. Funkce dvou proměnných: základní pojmy, limita a spojitost.

Základní topologické pojmy:

Matematická morfologie

Matematika I 12a Euklidovská geometrie

Minkowského operace. Použití. Světlana Tomiczková. Rozmisťování Robot Motion Planning Offset Optics. Pojmy:

19 Eukleidovský bodový prostor

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice

Bakalářská matematika I

Výpočet průsečíků paprsku se scénou

Je-li dána hranolová nebo jehlanová plocha s podstavou v rovině σ a rovina řezu ρ:

KRUHOVÁ ŠROUBOVICE A JEJÍ VLASTNOSTI

Úvod do mobilní robotiky AIL028

Dynamické datové struktury I.

5. P L A N I M E T R I E

- shodnost trojúhelníků. Věta SSS: Věta SUS: Věta USU:

4. Statika základní pojmy a základy rovnováhy sil

Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Shodná zobrazení. bodu B ležet na na zobrazené množině b. Proto otočíme kružnici b kolem

autorovu srdci... Petr Hliněný, FI MU Brno 1 FI: MA010: Průnikové grafy

Výpočet průsečíků paprsku se scénou

Algoritmy používané ve výpočetní geometrii

f(x) = arccotg x 2 x lim f(x). Určete všechny asymptoty grafu x 2 2 =

3 Geometrie ve škole. krychle a její obrázek, koule a její stín, průměty trojrozměrného útvaru do roviny

Kótované promítání. Úvod. Zobrazení bodu

3.4.2 Rovnováha Rovnováha u centrální rovinné silové soustavy nastává v případě, že výsledná síla nahrazující soustavu je rovna nule. Tedy. Obr.17.

Detekce kartografického zobrazení z množiny

Matematika NÁRODNÍ SROVNÁVACÍ ZKOUŠKY DUBNA 2017

Obecná rovnice kvadratické funkce : y = ax 2 + bx + c Pokud není uvedeno jinak, tak definičním oborem řešených funkcí je množina reálných čísel.

Mechanika II.A Třetí domácí úkol

3.2. ANALYTICKÁ GEOMETRIE ROVINY

Odvození středové rovnice kružnice se středem S [m; n] a o poloměru r. Bod X ležící na kružnici má souřadnice [x; y].

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ

CVIČNÝ TEST 36. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Poznámka. V některých literaturách se pro označení vektoru také používá symbolu u.

ANALYTICKÁ GEOMETRIE V ROVINĚ

od zadaného bodu, vzdálenost. Bod je střed, je poloměr kružnice. Délka spojnice dvou bodů kružnice, která prochází středem

6.1 Vektorový prostor

Kinematika rektifikace oblouku (Sobotkova a Kochaňského), prostá cykloida, prostá epicykloida, úpatnice paraboly.

Transkript:

Operace s uzavřenými oblastmi v GIS Booleovské operace s uzavřenými oblastmi. Minkowského suma. Offset polygonu. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie. Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 1 / 111

Obsah přednášky 1 Ukázka použití offsetu polygonu a množinových operací 2 Množinové operace, formulace problému 3 Množinové operace s nekonvexními regiony 4 Konstrukce bufferu, dissolving Analytická konstrukce offsetu Vlastnosti Minkowského sumy Ukázky Minkowského sumy různých množin Algoritmy pro konstrukci Minkowského sumy Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 2 / 111

Ukázka použití offsetu polygonu a množinových operací 1. Nalezení lesů ležících do 2 km od dálnice Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 3 / 111

Množinové operace, formulace problému 2. Formulace problému Dáno: Dvojice uzavřených, ohraničených regionů A, B v R 2. Hledáme: C = A B, C = A B, C = A B, C = B A, Množinové operace nad uzavřenými oblastmi. Základních analytický nástroj GIS. Syntéza a integrace dat z různých zdrojů. Přehled množinových operací: Sjednocení (Union): C = A B. Průnik (Intersection): C = A B. Rozdíl (Difference): C = A B resp. C = B A. Symmetric difference (XOR): C = A B = (A B) ( A B ). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 4 / 111

Množinové operace, formulace problému 3. Ilustrace množinových operací Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 5 / 111

Množinové operace, formulace problému 4. Vlastnosti množinových operací Komutativita: A B = B A, A B = B A, A B B A, ( ) ( ) (A B) A B = (B A) B A Asociativita A (B C) = (A B) C, A (B C) = (A B) C, kde A (B C) (A B) C, A (B C) = (A B) C, A (B C) = (A [(B C) (B C)]) (A [(B C) (B C)], (A B) C = ([(A B) (A B)] C) ([(A B) (A B)] C). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 6 / 111

Množinové operace s nekonvexními regiony 5. Princip algoritmu Algoritmus funguje pro jednoduché nekonvexní regiony (včetně otvorů). Uzavřené oblasti A = {p i } n i=1, B = {q j } m j=1. Složitost O(m n). Výsledkem operace C = A B, prázdná množina, 0D entita, 1D entita, 2D entita, kombinace. A, B reprezentovány kruhovými seznamy. CCW orientace. Fáze algoritmu: A) Výpočet průsečíků A, B + setřídění B) Update A, B. C) Ohodnocení vrcholů A, B dle pozice vůči B, A. D) Výběr vrcholů dle ohodnocení. E) Vytvoření fragmentů. F) Vytvoření oblastí z fragmentů. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 7 / 111

6. Ukázka, oblasti A, B A p 1 p 2 p 3 p 4 B q 1 q 2 q 3 q 4 q 5 q 6 q 7 p 1 p 4 A q 6 q 4 q 2 p 2 p 3 q 5 B q 3 q 7 q 1

7. Výpočet průsečíků A, B Oblasti A, B mají k průsečíků b ij, b ij = e i e j, e i = (p i, p i+1 ), e j = (j, q j+1 ). Metoda výpočtu průsečíků: 1) Naivní algoritmus Složitostí O(m n), test všech kombinací e i e j. 2) Line Sweep (Bentley-Ottman). Složitostí θ(n log(n)), obtížnější implementace. Výpočet průsečíku b ij segmentů e i, e j : b ij = p i + α u = p j + β v, směrové vektory u, v, w u = (xi+1 x i, y i+1 y i ), Parametry α, β v = (xj+1 x j, y j+1 y j ), w = (xi x j, y i y j ). α = k 1 k 3, β = k 2 k 3, k 1 = v x w y v y w x, k 2 = u x w y u y w x, k 3 = v y u x v x u y. k 1 = 0, k 2 = 0, k 3 = 0: e i, e j kolineární. k 1 = 0 a k 2 = 0: e i, e j rovnoběžné. α 0, 1 a β 0, 1 : b ij, jinak mimoběžné.

8. Ukázky průsečíků segmentů p i+1 p i+1 p j p j+1 p i+1 p i p j p j+1 p i p j p j+1 p i p j p j+1 p i+1 p j p i+1 p j+1 p i+1 p i p j p i pj+1 p i p j p i+1 p j p j+1 p i+1 p i+1 p j p j+1 pj+1 p i p i p i

Množinové operace s nekonvexními regiony 9. Operace s průsečíky Dle hodnot α, β s průsečíky provádíme: α = 0, β = 0: p i b ij q j b ij, atribut průsečíku pro p i, q j, α = 0, β = 1: p i b ij q j+1 b ij, atribut průsečíku pro p i, q j+1, α = 1, β = 0: p i+1 b ij q j b ij, atribut průsečíku pro p i+1, q j, α = 1, β = 1: p i+1 b ij q j+1 b ij, atribut průsečíku pro p i+1, q j+1, α = 0, β (0, 1): p i b ij b ij e j, atribut průsečíku pro p i, B b ij, α = 1, β (0, 1): p i+1 b ij b ij e j, atribut průsečíku pro p i+1, B b ij, α (0, 1),β = 0: b ij e i b ij q j, A b ij, atribut průsečíku pro q j, α (0, 1),β = 1: b ij e i b ij q j+1, A b ij, atribut průsečíku pro q j+1, α (0, 1),β (0, 1): b ij e i b ij e j, A b ij, B b ij. Pro hodnoty 0,1 upravíme atributy odpovídajícího vrcholu: průsečíku. V opačném případě přidáme bod do A, B nebo do obou. Řešeno v samostatné proceduře. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 11 / 111

Množinové operace s nekonvexními regiony 10. Implementační detaily Odvozená struktura uchovává další vlastnosti: class QPointFB : public QPointF{ double alpha; double beta; bool inters; TPointPolygonPosition pos; //Value of α parameter //Value of β parameter //Is it an intersection? //Midpoint p = 0.5(p i + p i+1 ) position Kromě parametrů α, β, je/není průsečíkem i polohu M vůči 2. oblasti. Zpracování průsečíku b v oblasti P s n vrcholy, i index poč. bodu hrany e: Algoritmus 2: ProcessIntersection(b,t,P,i) 1: if ( t < ɛ): 2: P[i] inters //Startovní bod průsečíkem 3: if ( t 1 < ɛ): 4: P[(i + 1)%m] inters //Koncový bod průsečíkem 5: else: 6: i i + 1 //Inkrementuj pozici 7: P (b, i) //Přidej průsečík na pozici i + 1. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 12 / 111

Množinové operace s nekonvexními regiony 11. Výpočet průsečíků, naivní algoritmus Hledání všech průsečíků b ij. Pro segment e i = (p i, p i+1 ) procházíme postupně všechny segmenty e j = (q j, q j+1 ). Zásady: 1) Segment e j protíná e i nejvýše jednou Průsečík b ij lze přidat mezi body q j a q j+1 přímo. 2) Segment e i může být protnut více segmenty e j Průsečík b ij zatím nelze přidat mezi p i a p i+1. Nutno spočítat všechny b ij : e i testován vůči všem e j b ij = e i e j, i = const, j = 1,..., m 1. Dvojice (key, val) uchovávány v mapě M dle α Následně M přidána mezi body p i a p i+1. Složitost O(m, n). M(α) = (α i, b ij ). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 13 / 111

12. Ukázka průsečíků segmentů p 1 q 6 q 4 A q 2 p 4 b 26 b 25 b 24 b 23 b 22 b 21 p 2 p 3 q 5 B q 3 q 7 q 1

13. Update seznamů A, B S každým nalezeným průsečíkem e i e j, j = 1,..., m 1, updatován B. Průsečík b ij vložen mezi body p j, p j+1. Pro A průsečíky b ij ukládány do M(α). Po nalezení všech b ij průsečíků e i e j hromadně updatován A. M(α) přidána mezi body p i, p i+1. A p 1 p 2 p 3 p 4 B q 1 q 2 q 3 q 4 q 5 q 6 q 7 1. B q 1 b 21 q 2 q 3 q 4 q 5 q 6 q 7 2. B q 1 b 21 q 2 b 22 q 3 q 4 q 5 q 6 q 7 3. B q 1 b 21 q 2 b 22 q 3 b 23 q 4 q 5 q 6 q 7 4. B q 1 b 21 q 2 b 22 q 3 b 23 q 4 b 24 q 5 q 6 q 7 5. B q 1 b 21 q 2 b 22 q 3 b 23 q 4 b 24 q 5 b 25 q 6 q 7 6. B q 1 b 21 q 2 b 22 q 3 b 23 q 4 b 24 q 5 b 25 q 6 b 26 q 7 7. A p 1 p 2 b 26 b 25 b 24 b 23 b 22 b 21 p 3 p 4 Op. b 21 M(α) b 22 b 21 b 23 b 22 b 21 b 24 b 23 b 22 b 21 b 25 b 24 b 23 b 22 b 21 b 26 b 25 b 24 b 23 b 22 b 21 b 26 b 25 b 24 b 23 b 22 b 21

14. Algoritmus výpočtu průsečíků Pro segment e i = (p i, p i+1 ) hledány průsečíky b ij se všemi e j = (q j, q j+1 ). Pokud b ij, pro e j zpracován přímo (přidán nebo updatován q j /q j+1 ). Pro segment e i přidán do M (zatím neznáme všechny b ij ). Po nalezení všech b ij postupně sekvenčně přidány z M. Algoritmus 2: ComputeIntersections(A, B) 1: for (i = 0; i < n;i++): 2: M = map double, QPointFB //Vytvoření mapy 3: for (j = 0; j < m;j++): 4: if b ij = (p i, p (i+1)%m ) (q j, q (j+1)%m ) //Existuje průsečík 5: M[α i ] b ij //Přidej do M 6: ProcessIntersection(b ij,β,b,j) //Zpracuj první průsečík pro e j 7: if ( M > 0) //Nějaké průsečíky jsme nalezli 8: for m M: //Procházej všechny průsečíky v M 9: b m.second //Získej 2. hodnotu z páru 10: ProcessIntersection(b,α,A,i) //Zpracuj aktuální průsečík pro e i

15. Poloha hran A, B O poloze e i = (p i, p i+1 ) k B rozhoduje poloha libovolného vnitřního bodu p i = 0.5(p i + p i+1 ), analogicky pro e j = (q j, q j+1 ) vzhledem k A q j = 0.5(q j + q j+1 ). Každému p i A určíme polohu vzhledem k B. Každému q j B určíme polohu vzhledem k A. Ohodnocovací fce g OUT, p i / B, g(e i, B) = g(p i, B) = BND, p i B, IN, p i B, OUT, q j / A, g(e j, A) = gq j, A) = BND, q j A, IN, q j A. Hrany rozděleny na vnitřní, vnější, ležící na hranci A/B. Tato informace uložena do počátečního bodu hrany : TPointPolygonPosition pos; //Midpoint p = 0.5(p i + p i+1 ) position

16. Ukázka ohodnocení vrcholů A, B p 1 q 6 q 4 A q 2 p 4 p 1 q 6 q 4 A q 2 p 4 b 26 b 25 b 24 b 23 b 22 b 21 p 2 p 3 b 26 b 25 b 24 b 23 b 22 b 21 p 2 p 3 q 5 B q 3 q 5 B q 3 q 7 q 1 q 7 q 1 Inner Outer

17. Ukázka ohodnocení hran A, B p 1 q 6 q 4 A q 2 p 4 Outer Inner b 26 b 25 b 24 b 23 b 22 b 21 p 2 p 3 q 5 B q 3 q 7 q 1

Množinové operace s nekonvexními regiony 18. Ukázka ohodnocení hran A, B Ohodnocení hran vrcholů A, B: A p 1 p 2 b 26 b 25 b 24 b 23 b 22 b 21 p 3 p 4 g(e i, B) O O I O I O I O O O B q 1 b 21 q 2 b 22 q 3 b 23 q 4 b 24 q 5 b 25 q 6 b 26 q 7 g(e j, A) O I I O O I I O O I I O O V A, B se nevyskytují singulární segmenty (kolineární). Chybí ohodnocení BND (boundary). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 20 / 111

Množinové operace s nekonvexními regiony 19. Singulární A, B Přibude ohodnocení BND, kolineární segmenty. p 1 p 4 A Outer q 5 Inner q 8 q 7 b 25 b 24 q 3 q 2 Boundary p 2 p 3 q 6 B q 4 q 9 q 1 Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 21 / 111

Množinové operace s nekonvexními regiony 20. Výběr hran dle ohodnocení Výběr hran A, B dle prováděné množinové operace. Z hran následně sestaveny fragmenty. Operace A B C = A B Inner Inner C = A B Outer Outer C = A B Outer Inner C = B A Inner Outer C = A B, Inner + Outer Inner + Outer Nestabilita: nepřesné určení polohy bodu a oblasti. Pro singulární případy atribut BND. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 22 / 111

Množinové operace s nekonvexními regiony 21. Výsledek množinových operací p 1 p 4 A q 6 q 4 q 2 b 26 b 25 b 24 b 23 b 22 b 21 p 2 p 3 q 5 B q 3 q 7 q 1 Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 23 / 111

22. Vytvoření fragmentů Spojení vrcholů (hran) se stejným ohodnocením do polylinií (fragmentů). Uchovány v samostatných seznamech f, F jejich seznam. Každý fragment f začíná startovním bodem: průsečík. Koncový bod: první bod s jiným ohodnocením (další průsečík). Difference: f má opačné pořadí vrcholů (CW místo CCW)! Princip vytvoření fragmentů: 1) Nalezení: g(p[i s]) = g, P[i s] = inters, 1. průsečík s ohodnocení G, index i s. 2) Dokud i i s, opakuj: 2a) Najdi průsečík s ohodnocením g: g(p[i]) = g P[i] = inters. 2b) Vytvoř prázdný fragment f. 2bi) Přidej všechny vrcholy s ohodnocení g do fragmentu f. 2c) Přidej první následující průsečík do f. 2d) Pokud se jedná o Difference, reverse f. 2e) Přidej aktuální fragment f do seznamu: F f.

Množinové operace s nekonvexními regiony 23. Ukázka změny orientace: Difference A B CW CW Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 25 / 111

Množinové operace s nekonvexními regiony 24. Algoritmus: vytvoření fragmentů Vstupem polygon P s n vrcholy, ohodnocení g, swap orientation s, seznam fragmentů F. Polygon projedeme více než 1x, kruhový list, pozor na %. Algoritmus 2: CreateFragements(P, g, s, F ) 1: i 0 2: while (g(p[i]) g P[i] inters) //Dokud P[i] není průsečík s orientací g 3: i i + 1 4: if (i n) return; //Žádný bod s touto orientací neexistuje 5: i s i //Zapamatuj startovní index prvního průsečíku 6: do 7: f = //Prázdný fragment 8: if (createfragmentfromvertices(i s, P, g, i, f )) //Nalezen fragment 9: if (s) f.reverese() //Swapuj prvky fragmentu, je -li třeba 10: F [f [0]] f //Přidej fragment do mapy, klíč poč. bod 11: i (i + 1)%m 12: while (i i s) //Dokud nedojdeme k počátečnímu průsečíku Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 26 / 111

Množinové operace s nekonvexními regiony 25. Algoritmus: vytvoření fragmentu Vytvoření fragmentu f z bodů stejné orientace g. Následně přidán do f první bod s rozdílnou orientací. Algoritmus 2: createfragementfromvertices(i s, P, g, i, f ) 1: if g(p[i]) g P[i] inters //Bod není průsečíkem s orientací g 2: return false 3: for (;;) 4: f P[i] //Přidej bod do fragmentu 5: i (i + 1)%n 6: if (i i s) //Obešli jsme celý polygon 7: return false 8: if g(p[i]) g //První bod s rozdílnou orientací 9: f P[i] //Přidej ho do seznamu 10: return true //Úspěšně skončeno Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 27 / 111

Množinové operace s nekonvexními regiony 26. Ukázka fragmentů F A,F B p 1 f 12 p 4 A q 6 q 4 q 2 f 5 f 3 b 26 b 25 b 24 b 23 b 22 b 21 f 1 p 2 f 7 f 8 f 9 f p 10 f 3 11 f 4 f 2 q 5 q 3 B q 7 f 6 q 1 Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 28 / 111

Množinové operace s nekonvexními regiony 27. Ukázka fragmentů F A,F B, seznamy Oblast A: Inner F A Outer f 7 b 26 b 25 f 8 b 25 b 24 f 9 b 24 b 23 f 10 b 23 b 22 f 11 b 22 b 21 f 12 b 21 p 3 p 4 p 1 p 2 b 26 Oblast B: Inner F B Outer f 1 b 21 q 2 b 22 f 2 b 22 q 3 b 23 f 3 b 23 q 4 b 24 f 4 b 24 q 5 b 25 f 5 b 25 q 6 b 26 f 6 b 26 q 7 q 1 b 21 Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 29 / 111

28. Sestavení oblastí z fragmentů Algoritmus procházky po fragmentech... Po fragmentech postupujeme tak dlouho, dokud nedosáhneme poč. bodu. Vstupem seznam fragmentů F, výstupem seznam polygonů C. Postupně hledány navazující segmenty. Fragment uložen v mapě (f [0], (bool, f ) std::map<qpointf, std::pair<bool, std::vector<qpointf> > > Jako klíč použit počáteční bod. Atribut bool indikuje, zda je hrana zpracována nutno značkovat. Algoritmus 2: MergeFragementsv(F, C) 1: for f F 2: P //Vytvoř prázdný polygon 3: s f.first //Najdi startovní bod fragmentu 4: if (!f.second.first) //Pokud fragment již nebyl zpracován 5: if(createpolygonfromfragments(s, F, P)) 6: C P //Přidej polygon do seznamu

29. Ukázka sestavení z fragmentů: Union p 1 f 13 p 4 p 1 f 13 A q 6 q 4 q 2 q 6 q 4 A q 2 p 4 b 26 f f 5 b 25 b 24 3 b 23 b 22 f 1 b 21 b f 5 b f 26 25 b 24 3 b 23 b 22 f 1 b 21 f7 f7 p 2 f 8 f 9 f 10 f 12 p 3 p 2 f 4 f 2 f 8 f 9 f 10 f 12 p 3 q 5 B q 3 q f 4 5 B f q 2 3 q 7 f 6 q 1 q 7 f 6 q 1 p 1 f 13 p 4 p 1 f 13 p 4 A A q 6 q 4 q 2 q 6 q 4 q 2 b 26 f 5 b 25 b 24 f 3 b 23 b 22 f 1 b 21 b 26 f 5 b 25 b 24 f 3 b 23 b 22 f 1 b 21 p 2 f 7 f 8 f 9 f 10 f 12 p 3 p 2 f 4 f 2 f 7 f 8 f 9 f 10 f 12 f 4 f 2 p 3 q 5 B q 3 q 5 B q 3 q 7 f 6 q 1 q 7 f 6 q 1

30. Ukázka sestavení z fragmentů: Union p 1 f p 13 4 p 1 f 13 p 4 A A q 6 q 4 q 2 q 6 q 4 q 2 f 5 f 3 f 1 b 26 b 25 b 24 b 23 b 22 b 21 b 26 b 25 b 24 b 23 b 22 b 21 f 5 f 3 f 1 p 2 f f 7 8 f 9 f 10 f 12 p 3 p 2 f 4 f 2 f 7 f 8 f 9 f 10 f 12 f 4 f 2 p 3 q 5 q 3 q 5 q 3 B B q 7 f 6 q 1 q 7 f 6 q 1

31. Ukázka sestavení z fragmentů: Union Outer fragmenty: F A : Outer F B : Outer f 8 * b 25 b 24 f 2 ** b 22 q 3 b 23 f 10 ** b 23 b 22 f 4 * b 24 q 5 b 25 f 12 *** b 21 p 3 p 4 p 1 p 2 b 26 f 6 *** b 26 q 7 q 1 b 21 Sestavené fragmenty (bez počátečního bodu f [0]): C f 8 f 8 [0] C f 8 f 8 [0] f 4 f 4 [0] C f 10 f 10 [0] C f 10 f 10 [0] f 2 f 2 [0] 1 b 25 b 24 1 b 25 b 24 b 24 q 5 b 25 1 b 24 q 5 b 25 1 b 24 q 5 b 25 2 b 23 b 22 2 b 23 b 22 b 22 q 3 b 23 C f 12 f 12 [0] 1 b 24 q 5 b 25 2 b 22 q 3 b 23 3 b 21 p 3 p 4 p 1 p 2 b 26 C f 12 f 12 [0] f 6 f 6 [0] 1 b 24 q 5 b 25 2 b 22 q 3 b 23 3 b 21 p 3 p 4 p 1 p 2 b 26 b 26 q 7 q 1 b 21

Množinové operace s nekonvexními regiony 32. Algoritmus vytvoření polygonu Vstupem seznam fragmentů F, výstupem seznam polygonů C. Postupně hledány navazující segmenty. Hledání v mapě O(c). Algoritmus 2: createpolygonfromfragments(s, F, P) 1: QPoint n s //Inicializuj následující bod 2: for (;;) //Projdi všechny fragmenty tvořící polygon 3: f F.find(n) //Najdi navazující fragment 4: if (f F.end) //Fragment s takovým poč. bodem neexistuje 5: return false 6: f.second.first true //Fragment označen za zpracovaný 7: n f.second.second.back() //Najdi následující bod 8: P f.second.second {f.second.second[0]} //Přidej bez poč. bodu 9: if (n s) //Obešli jsme polygon, jsme na startu 10: return true Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 34 / 111

33. Výsledný algoritmus Výše uvedené kroky sestaveny do algoritmu. U obou polygonů CCW orientace. Algoritmus 3: BooleanOperations(A, B, oper) 1: if (o(a)! = CCW ) 2: A.switchOr() //Změň orientaci na CCW 3: if (o(b)! = CCW ) 4: B.switchOr() //Změň orientaci na CCW 5: ComputeIntersections(A, B) //Urči průsečíky A, B 6: SetPositions(A, B) //Urči polohu vrcholů vůči oblastem 7: map QPointFI, pair bool, vector QPointFB F 8: pos1 = (oper Intersection oper DifBA?Inner : Outer) 9: pos2 = (oper Intersection oper DifAB?Inner : Outer) 10: swap1 = (oper DifAB : true : false 11: swap2 = (oper DifBA) : true : false 12: CreateFragments(A, pos1, swap1, F ) 13: CreateFragments(B, pos2, swap2, F ) 14: MergeFragments(A, B, C)

Množinové operace s nekonvexními regiony 34. Problematické situace Při odladění algoritmu nutné zohlednit řadu singularit: např. oblasti mající společný pouze jeden vrchol, stranu, část strany... Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 36 / 111

35. Formulace problému Dáno: Uzavřený a ohraničený region C v R 2 či linie. Hledáme: Offset C d oblasti C. Definice 1: Offset C d oblasti C představuje ekvidistantu oblasti tvořenou hraniční křivkou této oblasti c(t) ve vzdálenosti d. Offset obecné oblasti nemusí být racionální křivkou. Rovnoběžné křivky (tzv. Bertrandovy křivky) mají společné hlavní normály (platí pro C a C d ). Definice 2: Offset C d definován jako obálka soustavy kružnic s poloměrem d, jejichž střed se pohybuje po c(t). Offset C d může protínat sám sebe, na C d. Vznikají singulární body, jejichž vzdálenost od C je menší než d singulární část offsetu. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 37 / 111

36. Ukázka offsetu C d Offset C d obsahující singulární body. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 38 / 111

37. Konstrukce offsetu: diskrétní aproximace Konstrukce offsetu pro diskretiyované tvary: 1 Analytická konstrukce Použití pro linie, lomené čáry i oblasti. Převod aproximační oblasti na buffer: metoda Winding number. Snadná implementace. 2 Opakované sjednocení bufferů Metoda dissolvingu: opakované sjednocení bufferů nad jednotlivými segmenty. Použití lomené čáry i oblasti. Snadná implementace, avšak nestabilní. Nad offsety pro linie provedena operace dissolve. 3 Minkowského suma Pro libovolný typ uzavřené oblasti (netřeba diskretizovat). Složitější konstrukce: dekompozice na konvexní oblasti. Nad každou oblast Minkowského suma: offset. Poté dissolving dílčích offsetů. Obecné problémy: numerická přesnost, stabilita, množství singularit. Topologicky korektní implementace je náročná. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 39 / 111

38. Ukázky offsetu pro různé prvky Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 40 / 111

39. Konstrukce offsetu pro liniové segmenty Definice bufferu nad segmentem e i = (p i, p i+1 ) C d (e i ) = {c c e i = d}. Tvořen 2 úsečkami a 2 kružnicovými oblouky C d (e i ) = { k i,1, l i,1, k i,2, l i,2 k i,1 p i+1 = l i,1 e i = k i,2 p i = l i,2 e i = d }, kde k i,1 (c i,1, c i,2, d), l i,1 = (c i,2, c i,3 ), k i,2 (c i,3, c i,4, d), l i,2 = (c i,4, c i,1 ). c i,4 k i,2 p i+1 d l i,2 d c i,3 c i,1 e i l i,1 p i φ i k i,1 d c i,2

40. Diskrétní tvar offsetu Parametrické rovnice oblouků k i,1, k i,2 (x i,1, y i,1 ) = (x i + d cos ϕ i,j,1, y i + d sin ϕ i,j,1 ), (x i,2, y i,2 ) = (x i+1 + d cos ϕ i,j,2, y i+1 + d sin ϕ i,j,2, ). Koncové body c i,1 (ϕ i,s,1, d), c i,2 (ϕ i,e,1, d), c i,3 (ϕ i,s,2, d),c i,4 (ϕ i,e,2, d) k i,1 : ϕ i,s,1 = ϕ i + π 2, ϕ i,e,1 = ϕ i π 2, k i,2 : ϕ i,s,2 = ϕ i π 2, ϕ i,e,2 = ϕ i + π 2, kde Vnitřní body k i,1, k i,2 vzorkovány: ϕ i = arctan y i+1 y i x i+1 x i. A) V celočíselném kroku ϕ s + β ϕ, ϕ i,s ϕ i,j ϕ i,e, nevhodné. B) V celočíselném násobku β kroku ϕ, ϕ i,s < ϕ i,j < ϕ i,e ϕ i,j,0 = α ϕ, α = { α, α α = 0 α + 1 α α = 0, α = ϕ i,s ϕ, kde ϕ i,j = ϕ i,j,0 + β ϕ, β = α, α + 1, α + 2,...

41. Diskrétní offset, vzorkování:ϕ s + β ϕ

42. Diskrétní offset, vzorkování:β ϕ

43. Offset liniového segmentu, algoritmus Postupně vzorkovány body na obou kružnicových obloucích. Parametrem velikost offsetu d a krok vzorkování ϕ. Algoritmus 2: createoffset(p 1, p 2, d, ϕ) 1: c 2: ϕ atan2(y 2 y 1, x 2 x 1 ) 3: ϕ s,1 ϕ + π/2 4: ϕ e,1 ϕ s,1 + π 5: samplearc(p 1, d, ϕ s,1, ϕ e,1, ϕ, c) 6: ϕ s,2 ϕ π/2 7: ϕ e,2 ϕ s,2 + π 8: samplearc(p 2, d, ϕ s,2, ϕ e,2, ϕ, c) 9: return c Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 45 / 111

44. Vzorkování kružnicového oblouku Vzorkování kružnicového oblouku s krokem ϕ v intervalu (ϕ s, ϕ e ). Počáteční bod, vnitřní body, koncový bod. Zaokrouhlování nahoru, ceil: a. Algoritmus 2: samplearc(p, d, ϕ s, ϕ e, ϕ, c) 1: c i (p + d cos ϕ s, p + d sin ϕ s ) 2: c c i 3: α ϕ i,s ϕ 4: α ( α α < ε)?α + 1 : α. 5: for (ϕ α ϕ; ϕ < ϕ e ; f f + ϕ) 6: c i (p + d cos ϕ, p + d sin ϕ) 7: c c i 8: c i (p + d cos ϕ e, p + d sin ϕ e ) 9: c c i Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 46 / 111

45. Liniový offset, různá vzorkování

46. Analytický tvar offsetu Neprováděno vzorkování kružnic. oblouků. Segmenty k i,1, l i,1, k i,2, l i,2 v analytickém tvaru: 2 x kruž. oblouky: střed + koncové body. 2 x liniové segmenty: koncové body. Výhodou přesnější výpočet průsečíků při dissolvingu (úsečka, kružnice). Nevýhodou obtížnější výpočet průsečíků: dekompozice na segmenty. Průsečíky: L x L, L x C, C x C. Robustnější vůči zaokrouhlovacím chybám. Datová reprezentace: class Offset{ QPointF p1, p2; //St edy kruº. obouk double d //Polom r oblouku QPointF c1, c2, c3, c4 //Konc. body segmentu }; Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 48 / 111

47. Offset, polylinie Polylinie L = {p 1,..., p n}. Nad každým segmentem e i = (p i, p i+1 ) vygenerován liniový buffer C d (e i ) = {c c e i = d}. Sjednocení n liniových bufferů nad L, dissolving: C d (L n) = n C d (e i ), i=1 = (C d (e 1 ) C d (e 2 )... C d (e n 1 )) C d (e n), = C d (L n 1 ) C d (e n). Reflexní vrchol generuje kružnicový oblouk, jinak liniové segmenty. Tento princip využívá inkrementální algoritmus: Offset nad k segmenty polylinie L z offsetu pro k 1 segmenty. Tento následně sjednocen s offsetem k-tého segmentu C d (L k ) = C d (L k 1 ) C d (e k ). Může obsahovat i uzavřené oblasti. Problém singularit: odstraněny z výsledku. Výpočetně obtížný: zaokrouhlovací chyby (dotyk bufferů). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 49 / 111

48. Offset nad segmenty polylinie p 5 p 1 d p 2 p 4 p6 p 7 p8 p 3 Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 50 / 111

49. Offset polylinie: dissolve, bez singularit (GIS) p 5 p 1 d p 4 p 6 p 2 p 7 p8 p 3 Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 51 / 111

50. Offset polylinie: dissolve, singularity p 5 p 1 d p 4 p6 p 2 p 7 p8 p 3 Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 52 / 111

51. Vlastnosti offsetu Reflexní vrchol p i generuje kružnicový oblouk. Střed oblouku leží na bisektoru b i (p i 1, p i, p i+1 ). Počáteční body oblouků na kolmicích, svírají úhel ω i π. Konvexní vrchol p i generuje liniové segmenty, průsečík na bisektoru b i (p i 1, p i, p i+1 ). b i i i - p i p i-1 p i+1 Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 53 / 111

52. Reflexní vrchol Reflexní vrchol může vést k rozpadu C d (L) na vnitřní a vnější C d (L) = {C d,o (L), C d,i (L) C d,i (L) C d,o (L)}. Offset tvořen 1x C d,o (L) a mx C d,i (L) { } C d (L) = C d,o (L), Cd,i(L), 1..., Cd,i(L) m, C j d,i (L) C d,o(l). Hovoříme o vnitřním C d,i (L) a vnějším C d,i (L) offsetu. Materiálová interpretace: vnější (Solid), vnitřní (Hole). Vnitřní offset nemusí existovat pro různá d. Důsledek: Offset není spojitý, rozpadá se do několika částí. Obtížnější implementace dissolvingu { } C d (L k ) = C d,o (L k 1 ) C d (e k ), Cd,i(L 1 k 1 ) C d (e k ),..., Cd,i(L m k 1 ) C d (e k ). Dissolving nutno řešit pro 1 vnější a m vnitřních offsetů (cyklus). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 54 / 111

53. Rozpad offsetu Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 55 / 111

54. Rozpad offsetu: dissolving Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 56 / 111

55. Zánik vnitřního offsetu I. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 57 / 111

56. Zánik vnitřního offsetu II. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 58 / 111

57. Hledání průsečíků offsetu Existují 3 typy průsečíků: Linie x linie. Linie x kružnicový oblouk. Kružnicový oblouk x kružnicový oblouk. Pozor na singularity: dotyk. Hledání průsečíku offsetů: A) Naivní algoritmus Každý offset s každým, neefektivní. Kvadratická složitost vzhledem k počtu bufferů. B) Sweep Line Příznivější složitost, modifikovaný Bentley-Ottman algoriotmus. Pro každý element uchovány body x, x. Segment vstoupí do PQ pro x, vystoupí pro x. Vzájemně řešeny průsečíky segmentů pouze v PQ. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 59 / 111

58. Ukázky průsečíků bufferů Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 60 / 111

59. Průsečíky offsetů: Sweep Line Sweep Line varianta, segmenty seřazeny dle x. Hledány průsečíky segmentů, jejichž x intervaly se protínají. Každý segment v PQ přítomen ve svém [x, x] intervalu. x

Konstrukce bufferu, dissolving 60. Konstrukce offsetu metodou dissolvingu Inkrementální konstrukce, C d (L k ) approximací offsetu C d (L). Postupné sjednocování offsetu segmentu C d (e k ) s offsetem k 1 segmentů C d (L k 1 ) C d (L k ) = C d (L k 1 ) C d (e k ). Existence m vnitřních offsetů { } C d (L k ) = C d,o (L k 1 ) C d (e k ), Cd,i 1 (L k 1) C d (e k ),..., Cd,i m (L k 1) C d (e k ) vede k cyklu C 1 d,i (L k 1) C d (e k ),..., C m d,i (L k 1) C d (e k ). Offsety značkovány jako Solid, Hole. Výsledky dílčích sjednocení C d (L k ) { C d,o (L k ), C d (L k 1 ) C d (e k ), C d,i (L k ), C d (L k 1 ) C d (e k ) =. Neprováděno in-place, do temporary C T d (L k ) postupně přidávány sjednocené offsety. Následně C d (L k ) C T d (L k ). Výhodou snadná implementace. Algoritmus citlivý vzhledem k zaokrouhlovacím chybám. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 62 / 111

Konstrukce bufferu, dissolving 61. Klasifikace oblastí: Solid/Hole Klasifikace oblastí do 2 skupin (materiálová interpretace): A) Solid: Neobsahuje žádné otvory. CCW orientace. B) Hole: Oblast uvnitř oblasti. CW orientace. Hole uvnitř Solid, ale Solid také uvnitř Hole. Testování vzájemné polohy oblastí vůči ostatním. Modifikovaný Ray algoritmus: vertikální paprsek. Pro každý offset C d (e i ) uložen bod p i s nejmenší x souřadnicích. Offsety zpracovány v PQ dle p i. Lichý počet průsečíků: Hole, jinak Solid. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 63 / 111

Konstrukce bufferu, dissolving 62. Klasifikace oblastí: Sweep Line (0) (2) (1) (2) H p 2 p 3 S p 0 S p 1 S 0 1 2 3 x Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 64 / 111

63. Offset polylinie: jednotlivé fáze Konstrukce bufferu, dissolving C d (L 1 ) C d (L 2 ) C d (e 3 ) C d (e 2 ) C d (L 3 ) C d (e 4 ) C d (L 4 ) C d (e 5 ) C d (L 5 ) C d,o (L 6 ) 1 C d,i (L 6 ) C d (e 6 ) C d (e 7 ) Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 65 / 111

Konstrukce bufferu, dissolving 64. Klasifikace oblastí: jednotlivé fáze 1 1 C d,i (L 6 ) C d,i (L 6 ) C d,o (L 7 ) C d,o (L 8 ) C d (e 8 ) C d (e 7 ) C d (e 10 ) 1 1 C d,i (L 6 ) C C d (e 9 ) d,i (L 6 ) C d,o (L 9 ) 2 C d,i (L 10 ) C d,o (L 10 ) C d,o (L 10 ) C d,o (L 11 ) 1 C d,i (L 6 ) C d (e 11 ) 1 C d,i (L 6 ) 2 2 C d,i (L 10 ) C d,i (L 10 ) C d (e 12 ) Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 66 / 111

65. Offset, polylinie, algoritmus Inkrementální konstrukce C d (L) z C d (e). Všechny segmenty C d (L k 1 ) sjednoceny s C d (e l ). Pomocná datová datová struktura (temporary) C d (L) C d (L k ), neprováděno in-place. Výsledek k-tého offsetu uložen do C d (L), následně: C d (L k ) C d (L). Algoritmus 2: offsetpolyline(p, d, ϕ) 1: C d (L) //Prázdný offset polylinie 2: C d (e) createoffset(p[0], P[1], d, ϕ) //Offset prvního segmentu 3: C d (L) C d (e) //Přidání prvního offsetu 4: for i = 1,..., n 1 5: C d (e) createoffset(p[k], P[(k + 1)%n], d, ϕ) //Offset k tého segmentu 6: C d (L) //Vytvoření pomocné struktury 7: for j = 0,..., m 1 //Pro všechny Inner/Outer segmenty stávajíícj offsetu 8: C d (e) = C d (e) C d (L)[j] //Sjednocení se stávajícím offsetem 9: if C d (e) //Hole z předchozích iterací 10: C d (L) C d (L)[j] //Přidej stávající Hole do C d (L k ) 11: else //Nový Solid, Holes 12: C d (L) C d (e) //Přidej nový Solid a Holes do C d (L k ) 13: C d (L) C d (L) //Aktualizuj offset polyline: C d (L k ) = C d (L k 1 )

Konstrukce bufferu, dissolving 66. Offset uzvařené oblasti Uzavřená oblast P = {p 1,..., p n}. Nad každým segmentem e i = (p i, p i+1 ) vygenerován liniový buffer C d (e i ) = {c c e i = d}. Proces dissolvingu n C d (P n) = C d (e i ). i=1 Reflexní vrchol generuje kružnicový oblouk, jinak liniové segmenty. Vždy existuje vnější offset, v některých případech i vnitřní offset Inkrementální konstrukce Offset nad k segmenty oblasti P z offsetu pro k 1 segmentů P. Poté sjednocen s offsetem k-tého segmentu C d (L k ) = C d (L k 1 ) C d (e k ). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 68 / 111

67. Offset uzavřené oblasti Konstrukce bufferu, dissolving Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 69 / 111

Konstrukce bufferu, dissolving 68. Offset uzavřené oblasti, dissolving Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 70 / 111

Konstrukce bufferu, dissolving 69. Offset uzavřené oblasti: singularity Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 71 / 111

70. Reflexní vrchol Konstrukce bufferu, dissolving Reflexní vrchol p i generuje kružnicový oblouk. Střed oblouku leží na bisektoru b i (p i 1, p i, p i+1 ). Počáteční body oblouků na kolmicích, svírají úhel ω i π. Reflexní vrchol může vést k rozpadu C d (P) na vnitřní a vnější C d (P) = {C d,o (P), C d,i (P) C d,i (P) C d,o (P)}. Offset tvořen 1x C d,o (P) a mx C d,i (P) { } C d (P) = C d,o (P), Cd,i(P), 1..., Cd,i(P) m, C j d,i (P) C d,o(p). Offset není spojitý, rozpadá se do několika částí. Dissolving C d (P k ) = Algoritmus konstrukce: { } C d,o (P k 1 ) C d (e k ), Cd,i(P 1 k 1 ) C d (e k ),..., Cd,i(P m k 1 ) C d (e k ). Analogický jako u offsetu polylinie. Postupný dissolving offsetů nad segmenty. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 72 / 111

71. Rozpad offsetu: dissolving Konstrukce bufferu, dissolving Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 73 / 111

72. Offset oblasti: jednotlivé fáze Konstrukce bufferu, dissolving Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 74 / 111

Analytická konstrukce offsetu 73. Analytická konstrukce metodou Winding Number Metoda dissolvingu výpočetně obtížná. Citlivost na singularity, zaokrouhlovací chyby. Jednotlivé segmenty offsetu lze určit analyticky. Tvar segmentu závisí na reflexivitě/konvexitě vrcholu. Offset aproximován polygonem se smyčkami (topologicky nekorektní). Smyčky dle orientace CW/CCW odstraněny/ponechány. Pro výpočet orientace použito Winding number. Výhodou snadná implementace a robustnost metody. Použitelné i pro oblasti s otvory (Holes). Použitelné pro lomené čáry i uzavřené oblasti. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 75 / 111

74. Konvexita/konkavita vrcholu Analytická konstrukce offsetu Pokud (p i 1, p i, p i+1 ) tvoří left turn, pak p i konvexní. p i = { CVX, p i+1 σ L (p i 1, p i ), CNC, jinak. p 5 p 3 p 4 p 9 p 7 p 8 p 6 p 10 p 1 p 2 Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 76 / 111

74. Modifikovaný Winding number Analytická konstrukce offsetu Uzavřená oblast P = {p i } m i=1,bod q P. Bodem q veden paprsek r. Modifikovaný winding number kde ω(r, P) = n ψ(r, e i ), e i = (p i, p i+1 ), e i P 0, r e i =, ψ(r, e i ) = 1, q σ L (p i, p i+1 ), 1, q σ R (p i, p i+1 ). Hodnota ω(r, P) nezávislá na volbě q, R. Pro sousedící polygony oddělené 1 hranou se liší o 1. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 77 / 111

Analytická konstrukce offsetu 75. Ukázka modifikovaného Windimg numberu (-1) +1 P (-1) +1-1 -1-1 -1-1 +1 (-1) Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 78 / 111

Analytická konstrukce offsetu 76. Klasifikace Solid/Hole s využitím WN (2) (1) (0) (1) Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 79 / 111

77. Self-intersected polygon Analytická konstrukce offsetu Topologicky nekorektní části: ω(r, P) > 1. (+2) (+1) (0) Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 80 / 111

78. Algoritmus konstrukce offsetu Analytická konstrukce offsetu Analytická konstrukce offsetu bez nutnosti aplikace množinových operací. Lze aplikovat na vnitřní i vnější offfset. Vnitřní offset: Nejprve zkonstruovány rovnoběžky ve vzdálenosti d ke všem prvkům. Podle typu vrcholu zkonstruován: 1 Konvexní vrchol: Kružnicový oblouk, střed leží na ose úhlu. 2 Konkávní vrchol: Propojení koncových bodů posunutých segmentů s tímto vrcholem. Umělé vytvoření smyčky: topologicky nekorektní. Vnější offset: Konkávní - kružnicový oblouk, konvexní - propojení. Následně určeny průsečíky se segmenty offsetu. Odstranění smyček dle hodnot winding numberu. Vnitřní offset: vynechání oblastí ω(r, P) < 0. Vnější offset: vynechání oblastí ω(r, P) > 1. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 81 / 111

79. Konstrukce vnitřního offsetu Analytická konstrukce offsetu (-1) (-1) (+1) (-1) (-1) Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 82 / 111

80. Konstrukce vnějšího offsetu Analytická konstrukce offsetu (+2) (+2) (+1) Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 83 / 111

Vlastnosti Minkowského sumy 30. Minkowského suma v E 2 Definice: Necht A, B jsou dvě množiny bodů v E 2. Minkowského suma A B je definována jako A B = b B A b, kde množina A b = {a + b a A b B} = A + b je množina A posunutá o vektor b. Komutativita Minkowského sumy: A B = B A. Asociativita Minkowského sumy: (A B) C = A (B C). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 84 / 111

Vlastnosti Minkowského sumy 31. Ilustrace Minkowského sumy: C = A B Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 85 / 111

Vlastnosti Minkowského sumy 32. Další vlastnosti Minkowského sumy V1: Necht A, B jsou dvě množiny bodů v E 2 a s, t dva vektory z E 2. Pak A s B t = (A B) s+t. Posunutí množin A, B nemá vliv na velikost a tvar Minkowského sumy. Posuneme-li množiny A, B o vektory s, t, Minkowského suma A, B bude posunuta o součet vektorů s + t. V2: Oblasti A, B mají společný bod, tj. A B 0, právě když (0, 0) A ( B). Existuje společný bod dvou oblastí A, B, pokud Minkowského suma A ( B) obsahuje bod (0, 0). Tato věta je používána k detekci kolizí obou oblastí. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 86 / 111

Vlastnosti Minkowského sumy 33. Znázornění A s B t = (A B) s+t Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 87 / 111

Vlastnosti Minkowského sumy 34. Znázornění detekci kolizí dvou oblastí Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 88 / 111

Vlastnosti Minkowského sumy 35. Další vlastnosti Minkowského sumy Extrémní bod množiny: Extrémní bod množiny A ve směru daném vektorem d představuje takový bod x A, pro který všechny ostatní body množiny A leží v polorovině (q, r), kde q(x, d) a r(x, d). V3: Necht A, B jsou dvě množiny bodů v E 2 a C = A B. Extrémní bod množiny C ve směru d je součtem extrémních bodů množin A, B ve Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 89 / 111

Vlastnosti Minkowského sumy 36. Znázornění vztahu extrémních bodů Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 90 / 111

Vlastnosti Minkowského sumy 37. Další vlastnosti Minkowského sumy V4: Minkowského suma C = A B dvou konvexních množin A, B je konvexní množina. V5: Minkowského suma C = A B dvou nekonvexních množin A, B je konvexní nebo nekonvexní množina. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 91 / 111

Vlastnosti Minkowského sumy 38. Ukázka Minkowského sumy 2 nekonvexních množin V tomto případě výsledkem konvexní množina. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 92 / 111

Vlastnosti Minkowského sumy 39. Další vlastnosti Minkowského sumy V6: Necht P i a Q j jsou množiny v E 2. Pak P i i j Q j = i,j (P i Q j ). Tato vlastnost používána při hledání Minkowského sumy nekonvexních množin. Konstrukce Minkowského sumy nekonvexních množin: Nekonvexní množinu rozdělíme na sjednocení disjunktních konvexních množin. Minkowského sumu nekonvexních množin získáme jako sjednocení Minkowského sum konvexních množin. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 93 / 111

Vlastnosti Minkowského sumy 40. Konstrukce Minkowského sumy sjednocením konvexních množin Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 94 / 111

41. Minkowského suma 2 bodů Ukázky Minkowského sumy různých množin Minkowského suma dvou jednobodových množin je jednobodová množina. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 95 / 111

Ukázky Minkowského sumy různých množin 42. Minkowského suma bodu a úsečky Minkowského suma dvou jednobodových množin je jednobodová množina. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 96 / 111

43. Minkowského suma 2 úseček Ukázky Minkowského sumy různých množin Pokud jsou úsečky rovnoběžné, je výsledkem úsečka. V opačném případě je výsledkem konvexní 4-úhelník. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 97 / 111

44. Minkowského suma 2 úseček Ukázky Minkowského sumy různých množin Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 98 / 111

Ukázky Minkowského sumy různých množin 45. Minkowského úsečky a trojúhelníku Pokud není úsečka rovnoběžná s žádnou stranou trojúhelníku, výsledkem je konvexní pětiúhelník. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 99 / 111

Ukázky Minkowského sumy různých množin 46. Minkowského suma 2 trojúhelníků Minkowského suma dvou trojúhelníků představuje konvexní n úhelník s počty vrcholů n (3, 6). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 100 / 111

47. Minkowského suma linie a kruhu Ukázky Minkowského sumy různých množin Pokud kruh k s poloměrem r má počátek v bodě [0, 0], výsledkem Minkowského sumy kruhu a linie L ekvidistanta nazývaná v GIS liniový buffer ve vzdálenosti r of linie L. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 101 / 111

Ukázky Minkowského sumy různých množin 48. Minkowského suma uzavřené oblasti a kruhu Pokud kruh k s poloměrem r má počátek v bodě [0, 0], výsledkem Minkowského sumy kruhu k a uzavřeného regionu C ekvidistanta nazývaná v GIS plošný buffer ve vzdálenosti r. 3 varianty bufferu nad uzavřenou oblastí C: Vnitřní i vnější buffer: Ekvidistanta konstruována uvnitř i vně C. Vnější buffer Ekvidistanta pouze vně C, nejčastěji používaná varianta. Vnitřní buffer Ekvidistanta pouze uvnitř C, nelze vždy zkonstruovat, problém singulárních segmentů. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 102 / 111

Ukázky Minkowského sumy různých množin 49. Minkowského suma uzavřené oblasti a kruhu Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 103 / 111

50. Naivní algoritmus Algoritmy pro konstrukci Minkowského sumy Necht A, B jsou konvexní regiony s m a n vrcholy, hledáme C = A B. Princip algoritmu: Minkowského suma C tvořena součtem polohových vektorů vrcholů A, B. Vrcholy Minkowského sumy C tvoří pouze některé z těchto součtů. Algoritmus provádí součty všech vrcholů (resp. polohových vektorů) regionů A, B. n m c ij = (p i + q j ). Minkowského sumu C tvoří body ležící na konvexní obálce H(c ij ). Časová složitost O(mn log(mn)), v praxi není používán. Algoritmus 1: Minkowski (A, B, C) i=1 1: Opakuj pro každý bod p i A: 2: Opakuj pro každý bod p j B: 3: c ij = p i + q j, c ij c. 4: C = H(c) Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 104 / 111 j=1

51. Algoritmus extrémních bodů Tomiczková, 2006. Algoritmy pro konstrukci Minkowského sumy Algoritmus založen na myšlence, že extrémní bod množiny C = A B je součtem extrémních bodů množin A, B ve směru d. Hranici Minkovského sumy tvoří pouze úsečky rovnoběžné s hranami A, B. Princip algoritmu: Vypočteny orientované úhly α i, β j, kde: α i definován jako úhel vektorů p i p i+1 a (0, 1). β j definován jako úhel vektorů q j p j+1 a (0, 1). Pak nový vrchol C definován jako p i+1 + q j, pokud α i > β j, C = p i + q j+1, pokud α i < β j, p i+1 + q j+1, pokud α i = β j. Do C je přidáván vrchol vznikající součtem aktuálního vrcholu a koncového vrcholu takové z dvojice stran, jejíž úhel svíraný s osou y je větší (tj. extrémního bodu ve směru d). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 105 / 111

52. Ilustrace algoritmu Algoritmy pro konstrukci Minkowského sumy Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 106 / 111

53. Implementace algoritmu Algoritmy pro konstrukci Minkowského sumy Při konstrukci bufferu kružnice nahrazována n úhelníkem. Složitost algoritmu O(m + n). Algoritmus 2: Minkowski (A, B, C) 1: Seřazení vrcholů p i, q j oblastí A, B ve směru hodinových ručiček. 2: Označ p 1 a q 1 extrémní vrcholy A, B ve směru d daném vektorem (0, 1). 3: Inicializuj i, j, k = 1. 4: C k = p 1 + q 1. 5: Opakuj pro všechny p i A a q j B: 6: α i = ( p i p i+1, (0, 1)). 7: β j = ( p j p j+1, (0, 1)). p i+1 + q j, pokud α i > β j, 8: Přidání bodu C k+1 = p i + q j+1, pokud α i < β j, p i+1 + q j+1, pokud α i = β j. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 107 / 111

Algoritmy pro konstrukci Minkowského sumy 54. Minkowského suma nekonvexní oblasti Algoritmus založen na principu rozkladu nekonvexního mnohohoúhelníku na monotónní polygony (např. triangulací). Na monotónní (tj. konvexní) polygony aplikovány předchozí algoritmy. Postup: A) Oblast A rozdělena na monotónní podoblasti A i. B) Oblast B rozdělena na monotónní podoblasti B j. C) Pro všechny A i a B j opakovaně konstruujeme Minkowského sumu C ij = A i B j. D) Minkowského suma C = A B určena sjednocením dílčích Minkowského sum C ij C = ij C ij. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 108 / 111

Algoritmy pro konstrukci Minkowského sumy 55. Ilustrace Bufferu nad liniovým prvkem Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 109 / 111

Algoritmy pro konstrukci Minkowského sumy 56. Ilustrace Bufferu nad liniovým prvkem (Dissolve) Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 110 / 111

Algoritmy pro konstrukci Minkowského sumy 57. Ilustrace bufferu nad uzavřenou oblastí Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Operace s uzavřenými geoinformatiky oblastmia kartografie. v GIS Přírodovědecká fakulta UK.) 111 / 111