Výpočetní geometrie Computational Geometry



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

Úvod do mobilní robotiky AIL028

Algoritmizace prostorových úloh

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

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

Geometrické vyhledávání

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

Úvod do mobilní robotiky AIL028

Konvexní obal a množina

Vzorce počítačové grafiky

Semestrální práce z předmětu KMA/MM. Voroneho diagramy

Počítačová geometrie I

Výpočetní geometrie. Pavel Strachota. 9. listopadu FJFI ČVUT v Praze

Konvexní obálka v E 3 a dělení prostoru

6. Základy výpočetní geometrie

Geometrické vyhledání.

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

Konvexní obálka množiny bodů.

Prohledávání do šířky = algoritmus vlny

Ú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

Voroného konstrukce na mapě světa

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Vyplňování souvislé oblasti

P L A N I M E T R I E

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Geometrické algoritmy pro počítačovou grafiku

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

8. Geometrie vrací úder (sepsal Pavel Klavík)

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í

Úlohy krajského kola kategorie A

7 Konvexní množiny. min c T x. při splnění tzv. podmínek přípustnosti, tj. x = vyhovuje podmínkám: A x = b a x i 0 pro každé i n.

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

5 Algoritmy vyplňování 2D oblastí

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č

KRUŽNICE, KRUH, KULOVÁ PLOCHA, KOULE

Několik úloh z geometrie jednoduchých těles

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

Sedlová plocha (hyperbolický paraboloid)

7.5.3 Hledání kružnic II

Mgr. Markéta Trnečková, Ph.D. Palacký University, Olomouc

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

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

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

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

Metamorfóza obrázků Josef Pelikán CGG MFF UK Praha

11 Vzdálenost podprostorů

KMA/GPM Barycentrické souřadnice a

VZOROVÉ PŘÍKLADY Z MATEMATIKY A DOPORUČENÁ LITERATURA pro přípravu k přijímací zkoušce studijnímu oboru Nanotechnologie na VŠB TU Ostrava

Rozpis výstupů zima 2008 Geometrie

Gymnázium Jiřího Ortena, Kutná Hora

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]

Matematika NÁRODNÍ SROVNÁVACÍ ZKOUŠKY ZADÁNÍ NEOTVÍREJTE, POČKEJTE NA POKYN!

64. ročník matematické olympiády Řešení úloh krajského kola kategorie A

Jana Dannhoferová Ústav informatiky, PEF MZLU

MATEMATIKA Maturitní témata společná část MZ základní úroveň (vychází z Katalogu požadavků MŠMT)

Algoritmy výpočetní geometrie

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

9 Prostorová grafika a modelování těles

Rastrová reprezentace

Fotogrammetrie. zpracovala Petra Brůžková. Fakulta Architektury ČVUT v Praze 2012

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

GEOMETRIE PLANIMETRIE Úlohy k rozvoji geometrické představivosti Úlohy početní. Růžena Blažková

c) nelze-li rovnici upravit na stejný základ, logaritmujeme obě strany rovnice

1. jarní série Termín odeslání: 4. února 2019

Název: Stereometrie řez tělesa rovinou

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

Kartografické modelování. VIII Modelování vzdálenosti

DERIVACE. ln 7. Urči, kdy funkce roste a klesá a dále kdy je konkávní a

STEREOMETRIE. Tělesa. Značení: body A, B, C,... přímky p, q, r,... roviny ρ, σ, τ,...

prostorová definice (viz obrázek vlevo nahoře): elipsa je průsečnou křivkou rovinného

9. přednáška z předmětu GIS1 Digitální model reliéfu a odvozené povrchy. Vyučující: Ing. Jan Pacina, Ph.D.

Úvod do teorie grafů

Omezíme se jen na lomené čáry, jejichž nesousední strany nemají společný bod. Jestliže A 0 = A n (pro n 2), nazývá se lomená čára uzavřená.

Semestrální práce z KIV/PRO. Využití Voroného diagramu pro inicializaci K-means

Imagine Logo pokračování 1 Seznamy

Geoinformatika. IX GIS modelování

3) Vypočtěte souřadnice průsečíku dané přímky p : x = t, y = 9 + 3t, z = 1 + t, t R s rovinou ρ : 3x + 5y z 2 = 0.

VIDEOSBÍRKA DERIVACE

Algoritmizace prostorových úloh

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

ZŠ ÚnO, Bratří Čapků 1332

Požadavky na konkrétní dovednosti a znalosti z jednotlivých tematických celků

Topologická kostra. Medial Axis. Straight Skeleton.

MATEMATIKA 5. TŘÍDA. C) Tabulky, grafy, diagramy 1 - Tabulky, doplnění řady čísel podle závislosti 2 - Grafy, jízní řády 3 - Magické čtverce

9.5. Kolmost přímek a rovin

Opakování k maturitě matematika 4. roč. TAD 2 <

Trojúhelník. MATEMATIKA pro 1. ročníky tříletých učebních oborů. Ing. Miroslav Čapek srpen 2011

NP-úplnost a další. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Dynamické programování

ZBORCENÉ PŘÍMKOVÉ PLOCHY ŘEŠENÉ PŘÍKLADY

Analytická geometrie lineárních útvarů

MATEMATIKA Tematické okruhy ke státní maturitní zkoušce Obor: mechanik elektronik

4EK212 Kvantitativní management. 2. Lineární programování

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

10. Analytická geometrie kuželoseček 1 bod

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

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

VIDEOSBÍRKA DERIVACE

Hledání úhlů se známou hodnotou goniometrické funkce

Transkript:

Datové struktury a algoritmy Část 11 Výpočetní geometrie Computational Geometry Petr Felkel 20.12.2005

Úvod Výpočetní geometrie (CG) Příklady úloh Algoritmické techniky paradigmata řazení - jako předzpracování zametací technika (scan-line) rozděl a panuj (divide and conquer) geometrické místo (Locus approach) 2/ 47

Výpočetní geometrie? Vznikla v roce 1975 M. I. Shamos (1850 Dirichlet, 1908 Voronoi, max. článků 1991) Dvojí cíl: Zkoumá teorii (kombinatorikou strukturu geometrických objektů) i praxi: Hledá optimální algoritmy pracující s geometrickými objekty a implementuje je body, přímky, úsečky, mnohoúhelníky polygony, Aplikace např. v oblastech: databázové systémy, robotika, počítačová grafika, počítačové vidění, rozpoznávání obrazů, řadu problémů lze formulovat geometricky 3/ 47

Výpočetní geometrie? Charakteristická je velká probádanost algoritmů v rovině (2D) nárůst složitosti v prostoru (3-D) či v n-dimenzích méně znalostí o řešení v n-dimenzích dále zůstaneme v rovině (2D) ukázky typických úloh ukázky technik při návrhu algoritmů 4/ 47

Úvod Výpočetní geometrie (CG) Příklady úloh Algoritmické techniky paradigmata řazení - jako předzpracování zametací technika (scan-line) rozděl a panuj (divide and conquer) geometrické místo (Locus approach) 5/ 47

Konvexní obálka = nejmenší konvexní mnohoúhelník, který obsahuje všechny zadané body V množina bodů Convex Hull CH(V ) 6/ 47

Průsečíky úseček Cíl: Zjistit, zda se objekty protínají a c b p 2 p 1 Průsečík složitého objektu rozložit na průsečíky částí např. na průsečíky úseček 7/ 47

Triangulace mnohoúhelníka Rozklad objektu na nepřekrývající se části complex -> simplex 2D trojúhelník 3D - čtyřstěn (tetrahedron) 8/ 47

Vyhledávání Vytvoř strukturu pro rychlé nalezení: Nejbližšího souseda (nearest neighbor) Bodů v daném rozsahu (range query) 9/ 47

Voroného diagram Struktura pro vyhledání nejbližšího souseda 10 / 47

Delaunayova triangulace Duální k Voronému diagramu min. délka hran 11 / 47

Algoritmické techniky paradigmata = principy návrhu efektivních algoritmů, které zůstávají stejné i pro velmi odlišné aplikace hrubá síla prohledá / zkusí všechno efektivní algoritmus co nejúspornější optimální algoritmus dosáhl dolní meze složitosti - Ω 12 / 47

Algoritmické techniky paradigmata Řazení Rozděl a panuj (divide and conquer) Zametací technika (plane sweep) Geometrické místo (Locus approach) 13 / 47

Řazení

Řazení předzpracování dat, které vede k jednoduššímu zpracování typicky podle některé ze souřadnic (např. dle osy x či y) nebo dle úhlu kolem daného bodu/ů Př. použití: konvexní obálka 15 / 47

Konvexní obálka = nejmenší konvexní mnohoúhelník, který obsahuje všechny zadané body V množina bodů Convex Hull CH(V ) 16 / 47

Grahamův algoritmus 1/3 1. Seřadíme body p V dle x;( Orig: podle úhlu k x-) 2. Najdeme horní, pak dolní řetěz a) p min (a p max ) CH(V). Vezmi p 1 =p min, p 2 =další, i=2 b) přidáme bod p i+1, i=i+1 konvexní c) kontrola úhlu (p i-1, p i, p i+1 ) konkávní i=i-1 vypustíme pi p i-1 p i p i+1 p i-1 p i p i+1 p i-1 p i p i+1 17 / 47

Grahamův algoritmus 2/3 Kontrola úhlu (p i-1, p i, p i+1 ) Vektorový součin b x a p i-1 p a i b - kolmý na rovinu => jediná z-ová složka > 0, x- a y-ová = 0 x i+1 x i y i+1 y i > 0 => konvexní (R) x i x y i-1 i y i-1 < 0 => konkávní (L) p i+1 b x b y a x a y = b x a y - a x b y a = p i - p i-1 = (a x, a y ) b = p i+1 - p i = (b x, b y ) p i = [x i, y i, z i ] 18 / 47

Grahamův algoritmus 3/3 Složitost 1. Seřazení bodů dle x O( n log n ) 2. Nalezení horního a dolního řetězu O( n ) => celkem O( n log n ) 19 / 47

Jarvisův algoritmus balení dárku (gift wrapping) 1. Vezmeme bod p s minimální souřadnicí y a vodorovnou přímku 2. Otáčíme přímku kolem p dokud nenarazí na bod q 3. p = nový nejbližší bod q 4. Dokud (p p 0 ) jdi na 2 p k Bod s min. úhlem p 0 p 1 Složitost: O( n ) + O( n ) * k => celkem O( k*n ) vhodný pro málo bodů na konvexním obalu 20 / 47

Rozděl a panuj Divide and conquer

Konvexní obálka metodou D&C Seřaď body dle x Rekurzivně: děl na 2 části Najdi obálky Spoj obálky Horní most, pak dolní most zač.: nejbližší body, L proti, P po směru hodin Složitost: O(nlog(n) + O(n)) = O(nlog(n) ) 22 / 47

Zametací technika Plane sweep

Zametací technika princip Svislou přímku (scanline, SL, zametací přímku) suneme zleva doprava přes množinu objektů Pamatujeme si informace o objektech nalevo od zametací přímky (y-stuktura, T) Při průchodu nad objektem ji aktualizujeme Nesuneme se spojitě, ale skáčeme mezi body, kde je nutno zastavit Body jsou v prioritní frontě (x-struktura, B, postupový plán) odebírám je zleva-doprava 24 / 47

Příklad 1: Minimální body Od nich nalevo ani dolů není žádný bod 1. Seřadíme body dle souřadnice x -> x-struktura 2. Inicializujeme y-strukturu na 3. Scanline umísťujeme zleva doprava do bodů v x-str. 4. Do y-strukt. ukládám minimální y-souřadnici O(n log n) - řazení O(1) na bod O(n) pro všechny body O(n log n) - celkem 25 / 47

Příklad 2: Průsečíky úseček Nalezení všech průsečíků zadaných úseček rychleji než každá s každou, tj. než O(n 2 ) počítám průsečíky jen mezi sousedními úsečkami v T T, y-struktura = úsečky v pořadí jak protínají scanline B, x-struk., body, kde se mění pořadí úseček: na začátku jen koncové body úseček průběžně průsečíky sousedních úseček v T 26 / 47

Průsečíky úseček 1. Inicializace B L koncové body > B b? A R T prázdné C L c A L 1 a? C R B R b 2 3 4 5 6 7 8 B: A L,B L, C L,C R, A R,B R T: prázdná1 27 / 47

Průsečíky úseček 2. dokud není B prázdná vezmi bod p z B (a smaž ho v B) dle typu bodu p aktualizuj T strukturu: L... P... průsečík... 28 / 47

Průsečíky úseček L Najdi v T sousedy s (úsečky s 1 a s 2 ) (s je úsečka s počátečním bodem p) if( protíná s 1 x s 2 ) odstraň průsečík (už nejsou sousedy) vlož průs. s 1 x s a s x s 2 do B 29 / 47

Průsečíky úseček B 0 : A L,B L, C L,C R,A R,B R B L T 0 : prázdná A L C L a c? b? C R A R 1. A L B 1 : B L, C L,C R,A R,B R T 1 : a B R 1 2 3 4 5 6 7 8 30 / 47

Průsečíky úseček B L 2. B L p 1 = s1 x s = a x b... vložit A L C L a c? b p 1 C R A R B 2 : C L,p 1, C R, A R,B R T 2 : a, b s 1 s B R 1 2 3 4 5 6 7 8 31 / 47

Průsečíky úseček B L 2. B L B 2 : C L,p 1, C R, A R,B R T 2 : a, b b p 1 A R 3. C L p 1 = s 1 x s 2 = a x b...smazat C L c A L a p 2 C R p 2 = s 1 x s = a x c... vložit 1 2 3 4 5 6 7 8 B R B 3 : p 2, C R, A R,B R T 3 : a, c, b s 1 s s 2 32 / 47

Průsečíky úseček průsečík úseček s a s Najdi v T sousedy s a s (úsečky s 1 a s 2 ) prohoď s a s v T if( protíná s x s 1 ) odstraň průsečík z B if( protíná s x s 2 ) odstraň průsečík z B (už nejsou sousedy) vlož průs. s x s 2 a s x s 1 do B 33 / 47

Průsečíky úseček B L B 3 : p 2, C R, A R,B R T 3 : a, c, b A L 1 C L a c b p 2 p 1 C R A R 2 3 4 5 6 7 8 4. p 2 změna pořadí úseček a,c B 4 : p 1, C R, A R,B R T 4 : c, a, b 5. p 1 změna pořadí úseček a,b B 5 : C R, A R,B R T 5 : c, b, a B R 34 / 47

Průsečíky úseček R Najdi v T sousedy s (úsečky s 1 a s 2 ) (s je úsečka s koncovým bodem p) smaž s z T if( protíná s 1 x s 2 )vložprůsečík do B 35 / 47

Průsečíky úseček B L B 5 : C R, A R,B R T 5 : c, b, a C L c b p 1 A R 6. C R B 6 : A R,B R T 6 : b, a A L a p 2 C R 7. A R B 7 : B R B R T 7 : b 1 2 3 4 5 6 7 8 8. B R B 7 : prázdná T 7 : prázdná 36 / 47

Paměť O(n) Průsečíky úseček Operační složitost n+k poloh každá log n => O(k+n) log n 37 / 47

Geometrické místo Locus approach

Voroného diagram (VD) Struktura pro vyhledání nejbližšího souseda hrana VD zadaný bod uzel VD 39 / 47

Voroného diagram = planární graf (též Voronoiův diagram) obsahuje n oblastí (n = počet bodů) hrana = gmb. stejně vzdál. od dvou bodů = osa spojnice těchto dvou bodů uzel = střed kružnice opsané 3 bodům uzly mají stupeň 3 počet uzlů 2n-4, počet hran n-6, tj. O(n) otevřené oblasti odpovídají bodům konvexní obálky 40 / 47

Konvexní obal Voroného diagram 41 / 47

Voroného diagram Konstrukce metodou rozděl a panuj 1. Rozděl body dle x-souř. na L a P 2. Rekurze na L a P 1-3 body => návrat VD L a VD P 3. Spoj Voroného diagramy z L a P monotónní řetěz úseček zkrať protnuté hrany nové hrany z řetězu ús. O(k+n) log n 42 / 47

VD L Voroného diagram Konstrukce metodou rozděl a panuj VD P 1. Rozděl body dle x-souř. na L a P 2. Rekurze na L a P 1-3 body => návrat VD L a VD P 3. Spoj Voroného diagramy z L a P monotónní řetěz úseček zkrať protnuté hrany nové hrany z řetězu ús. O(k+n) log n 43 / 47

VD L Voroného diagram Konstrukce metodou rozděl a panuj VD P 1. Rozděl body dle x-souř. na L a P 2. Rekurze na L a P 1-3 body => návrat VD L a VD P 3. Spoj Voroného diagramy z L a P monotónní řetěz úseček zkrať protnuté hrany nové hrany z řetězu ús. O(k+n) log n 44 / 47

VD L Voroného diagram Konstrukce metodou rozděl a panuj VD P 1. Rozděl body dle x-souř. na L a P 2. Rekurze na L a P 1-3 body => návrat VD L a VD P 3. Spoj Voroného diagramy z L a P monotónní řetěz úseček zkrať protnuté hrany nové hrany z řetězu ús. O(k+n) log n 45 / 47

Links Collections of geometry resources (Rozcestníky) N. Amenta, Directory of Computational Geometry Software, http://www.geom.umn.edu/software/cglist/. D. Eppstein, Geometry in Action, http://www.ics.uci.edu/~eppstein/geom.html. Jeff Erickson, Computational Geometry Pages, http://compgeom.cs.uiuc.edu/~jeffe/compgeom/ 46 / 47

References Jan Slovák, Geometrické algoritmy I, skripta na webu, 1994, ftp://www.math.muni.cz/pub/math/people/slovak/lectures/geomet ricke.algoritmy/galgi.ps Rourke: Computational geometry in C, 2nd ed., Cambridge University Press, 1998, http://maven.smith.edu/~orourke/books/compgeom.html for more see the collections on the previous slide 47 / 47