UNIVERZA V MARIBORUFAKULTETA ZA ELEKTROTEHNIKO,RAČUNALNIŠTVO IN INFORMATIKO INŠTITUT ZA RAČUNALNIŠTVO          Vid Domiter...
Avtor:          Vid DomiterNaslov:         Algoritmi triangulacije s strategijo prebiranjaUDK:            004.925.021(043....
ZAHVALA:   Za strokovno pomoč in vsestransko podporo pri doktorskem študiju sezahvaljujem mentorju, red. prof. dr. Borutu ...
Algoritmi triangulacije s strategijo prebiranjaUDK: 004.925.021(043.3)Ključne besede:algoritmi, računalniška geometrija, r...
Triangulation algorithms using a sweeping strategyUDK: 004.925.021(043.3)Key words:algorithms, computational geometry, com...
Seznam kraticAF       -   napredujoča fronta (angl. advancing front)BPA      -   Bernardinijev algoritem z vrtenjem krogle...
Seznam oznak     ijk         -   trikotnik z oglišči pi , pj in pkβi               -   i-ti odsek parabolične krivulje (al...
F            -   seznam frontF, Fi        -   napredujoča frontaG            -   vhodni ravninski graf G = {P, Ec } v algo...
KazaloSeznam slik                                                                              ixSeznam tabel             ...
KAZALO                                                                                vi                3.3.2.3   Vstavlja...
KAZALO                                                                                vii  5.4   Algoritem BPA . . . . . ....
KAZALO         viiiLiteratura     130Življenjepis   141Bibliografija   142
Slike 2.1   Slikovni prikaz prebiranja. . . . . . . . . . . . . . . . . . . . . . . . .    7 2.2   Statusna struktura v tr...
SLIKE                                                                                 x  3.17 Vhodni ravninski graf (a), D...
SLIKE                                                                                 xi  4.11 Mešani sprehod po točkah fr...
SLIKE                                                                                          xii  5.13 Operator združeva...
SLIKE                                                                                xiii  6.20 Priredna združitev . . . ....
Tabele 4.1   Primerjava izvajalnih časov z obstoječimi algoritmi. . . . . . . . . . . . . 64 4.2   Izvajalni časi posamezn...
Poglavje 1Uvod1.1     Opredelitev problemaEna temeljnih paradigem reševanja problemov v računalniški geometriji je prebirn...
POGLAVJE 1. UVOD                                                                     2Rešitve Delaunayeve triangulacije s ...
POGLAVJE 1. UVOD                                                                 3Hipoteza 1:     Prebirni algoritem omeje...
POGLAVJE 1. UVOD                                                                   41.3     Struktura disertacijeDisertaci...
Poglavje 2Prebirna paradigmaPrebirna paradigma ali krajše kar prebiranje (angl. sweeping)1 predstavlja enopomembnejših teh...
POGLAVJE 2. PREBIRNA PARADIGMA                                                  6Med prebiranjem moramo vzdrževati podmnož...
POGLAVJE 2. PREBIRNA PARADIGMA                                                      7                                     ...
POGLAVJE 2. PREBIRNA PARADIGMA                                                    8     • dno objekta e (odstranitev),    ...
Poglavje 3Algoritmi Delaunayeve in omejeneDelaunayeve triangulacijeV tem poglavju bomo formalno definirali ravninsko triang...
POGLAVJE 3. ALGORITMI DT IN CDT                                                    10                         Slika 3.1: R...
POGLAVJE 3. ALGORITMI DT IN CDT                                                  11   Nad množico točk na ravnini je možno...
POGLAVJE 3. ALGORITMI DT IN CDT                                                           123.2     Delaunayeva triangulac...
POGLAVJE 3. ALGORITMI DT IN CDT                                                          13če velja:                      ...
POGLAVJE 3. ALGORITMI DT IN CDT                                                                                14         ...
POGLAVJE 3. ALGORITMI DT IN CDT                                                                        15Izpis 2 Procedura...
POGLAVJE 3. ALGORITMI DT IN CDT                                               16            Slika 3.4: Nelegalna (a) in De...
POGLAVJE 3. ALGORITMI DT IN CDT                                                  17           Slika 3.5: Voronoijev diagra...
POGLAVJE 3. ALGORITMI DT IN CDT                                                    18 2. Inkrementalni konstrukcijski algo...
POGLAVJE 3. ALGORITMI DT IN CDT                                                      19      tovrstnih algoritmov je njiho...
POGLAVJE 3. ALGORITMI DT IN CDT                                                                                    20     ...
POGLAVJE 3. ALGORITMI DT IN CDT                                                               21       Slika 3.7: Vstavlja...
POGLAVJE 3. ALGORITMI DT IN CDT                                                    22ga bomo delili. Z iskanjem pričnemo v...
POGLAVJE 3. ALGORITMI DT IN CDT                                                 23trikotnikov v grafu hranimo vse trikotni...
POGLAVJE 3. ALGORITMI DT IN CDT                                                    24Fortune je problem spretno rešil s pr...
POGLAVJE 3. ALGORITMI DT IN CDT                                                     25definira. Voronoijev diagram je popol...
POGLAVJE 3. ALGORITMI DT IN CDT                                                   26 Slika 3.11: Dogodek točke: na krivulj...
POGLAVJE 3. ALGORITMI DT IN CDT                                                       27napredujočo fronto - mejo triangul...
POGLAVJE 3. ALGORITMI DT IN CDT                                                   28situacije pri nekolinearnih začetnih t...
POGLAVJE 3. ALGORITMI DT IN CDT                                                     29      fronto.   V primeru vodoravneg...
POGLAVJE 3. ALGORITMI DT IN CDT                                                       30                     pi   Slika 3....
POGLAVJE 3. ALGORITMI DT IN CDT                                                   31O(n log n) in je skoraj neodvisen od p...
POGLAVJE 3. ALGORITMI DT IN CDT                                                    32Slika 3.17: Vhodni ravninski graf (a)...
POGLAVJE 3. ALGORITMI DT IN CDT                                                        33                       Slika 3.18...
POGLAVJE 3. ALGORITMI DT IN CDT                                                      34se bomo osredotočili izključno na n...
POGLAVJE 3. ALGORITMI DT IN CDT                                                     35ki predstavljajo oglišča robov iz Ec...
POGLAVJE 3. ALGORITMI DT IN CDT                                                   36Slika 3.19: Vstavljajoč rob e in regij...
POGLAVJE 3. ALGORITMI DT IN CDT                                                           37Slika 3.20: Triangulacija leve...
POGLAVJE 3. ALGORITMI DT IN CDT                                                     38roba e (pripadali sta torej Qe,L in ...
POGLAVJE 3. ALGORITMI DT IN CDT                                                      393.3.3     Enokoračni algoritmi CDTP...
POGLAVJE 3. ALGORITMI DT IN CDT                                                       40   Ker prostor delimo glede na toč...
POGLAVJE 3. ALGORITMI DT IN CDT                                                  41točkovne regije.   Algoritem se ukvarja...
POGLAVJE 3. ALGORITMI DT IN CDT                                                    42                        (a)          ...
POGLAVJE 3. ALGORITMI DT IN CDT                                               43               (a)                        ...
Poglavje 4Prebirni algoritem omejeneDelaunayeve triangulacijeV tem poglavju bomo predstavili naš pristop za tvorbo omejene...
POGLAVJE 4. PREBIRNI ALGORITEM CDT                                                             454.1      InicializacijaSt...
POGLAVJE 4. PREBIRNI ALGORITEM CDT                                                   46             Slika 4.1: Točke in ro...
POGLAVJE 4. PREBIRNI ALGORITEM CDT                                                47                       Slika 4.2: Tvor...
POGLAVJE 4. PREBIRNI ALGORITEM CDT                                                48     predstavlja končno točko roba pi ...
POGLAVJE 4. PREBIRNI ALGORITEM CDT                                                    494.2.1     Napredujoča fronta in po...
POGLAVJE 4. PREBIRNI ALGORITEM CDT                                                 50        Slika 4.3: Napredujoča fronta...
POGLAVJE 4. PREBIRNI ALGORITEM CDT                                                       51trikotnik, lahko to storimo že ...
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Un encrypted
Upcoming SlideShare
Loading in...5
×

Un encrypted

777

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
777
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Un encrypted

  1. 1. UNIVERZA V MARIBORUFAKULTETA ZA ELEKTROTEHNIKO,RAČUNALNIŠTVO IN INFORMATIKO INŠTITUT ZA RAČUNALNIŠTVO Vid Domiter ALGORITMI TRIANGULACIJE S STRATEGIJO PREBIRANJA Doktorska disertacija Maribor, marec 2009
  2. 2. Avtor: Vid DomiterNaslov: Algoritmi triangulacije s strategijo prebiranjaUDK: 004.925.021(043.3)Ključne besede: algoritmi, računalniška geometrija, računalniška grafika, CAD, trikotniške mreže, triangulacija, rekonstrukcija površjaŠtevilo izvodov: 8Oblikovanje: Vid DomiterLektura: Branimir DomiterTisk: Laboratorij za geometrijsko modeliranje in algoritme multimedijevVezava: Lazar Biro
  3. 3. ZAHVALA: Za strokovno pomoč in vsestransko podporo pri doktorskem študiju sezahvaljujem mentorju, red. prof. dr. Borutu Žaliku. Zahvaljujem se tudi bratu, mami in očetu, ki so mi ves čas nesebično stali obstrani in prenašali moje muhe. Prav tako se zahvaljujem vsem sodelavcem, ki somi pri študiju kakorkoli pomagali. Nikakor pa ne smem pozabiti na prijatelje, obkaterih sem se sprostil in pozabil na delo.Vsem najlepša hvala!
  4. 4. Algoritmi triangulacije s strategijo prebiranjaUDK: 004.925.021(043.3)Ključne besede:algoritmi, računalniška geometrija, računalniška grafika, CAD, prebiranje, trikot-niške mreže, triangulacija, rekonstrukcija površjaPovzetek: Osnovni cilj doktorske naloge je razviti lasten postopek omejene Delaunayevetriangulacije z metodo prebiranja, ki bo vsaj enako učinkovit kot do sedaj razvitipostopki in pokazati, da je s prebiranjem možno rešiti tudi veliko težjo nalogorekonstrukcije površja v 3D. V nalogi najprej definiramo klasično in omejenoDelaunayevo triangulacijo, opišemo obstoječe postopke, nato pa se osredotočimona lasten postopek omejene Delaunayeve triangulacije. Podrobneje opišemo njegovodelovanje in razširitve, ki vodijo k učinkovitemu algoritmu omejene Delaunayevetriangulacije. Temelj algoritma je pomikanje napredujoče fronte s prebirno premicoin razvoj hevristik, ki poskrbijo za uspešno vodenje napredujoče fronte in hkratiminimizirajo število menjav trikotnikov. Nato preidemo na problem rekonstrukcijepovršja, kjer podamo pregled sorodnih raziskav. Dva postopka podrobnejeopišemo, temu pa sledi opis lastnega postopka rekonstrukcije površja s prebiranjem.Algoritem temelji na širitvi napredujočih front s pomikanjem prebirne ravnine inhevristikah za uspešno upravljanje s frontami. Na koncu analiziramo oba razvitaalgoritma in potrdimo zastavljeni hipotezi.
  5. 5. Triangulation algorithms using a sweeping strategyUDK: 004.925.021(043.3)Key words:algorithms, computational geometry, computer graphics, CAD, sweeping, triangularmesh, triangulation, surface reconstructionAbstract: The main goal of our disertation is implementation of a new constrainedDelaunay triangulation algorithm based on the sweeping strategy, which is at leastas efficient as the existing solutions. Another aim is to show that using the samealgorithmic paradigm in three dimensions can solve a much harder problem, namelya surface reconstruction from a point cloud. We start by introducing the sweepingstrategy. After that, we define Delaunay and constrained Delaunay triangulation,which is followed by a brief survey of the existing algorithms. Then we describeour own sweep-line algorithm in detail, where constrained triangulation is built bypropagating the advancing front using heuristics. The apployment of heuristcs andconstraining edges insertion at the same time with their end-vertices importanlyincreases the speed of the algorithm. In the second part of our disertation weintroduce the problem of surface reconstruction and make an overview of theprevious work. We describe our own implementation based on the sweeping strategy,where the surface is built by propagating the advancing fronts with the sweep-plane.We describe heuristics for managing the fronts in detail. Finally, we summarize ourcontributions and confirm the proposed theses.
  6. 6. Seznam kraticAF - napredujoča fronta (angl. advancing front)BPA - Bernardinijev algoritem z vrtenjem krogle (angl. Ball-pivoting algorihtm)CDT - omejena Delaunayeva triangulacija (angl. constrained Delaunay triangulation)DAG - usmerjen aciklični graf (angl. directed acyclic graph)DT - Delaunayeva triangulacija (angl. Delaunay triangulation)F-SL - dvokoračni algoritem CDT s prebirnim Fortuneovim algoritm DTGIS - geografski informacijski sistem (angl. geographical information system)LFS - velikost lokalne značilnosti (angl. local feature size)LS-D&C - dvokoračni algoritem CDT Leeja in Schachterja s strategijo "deli in vladaj"M-INC - Mückejev dvokoračni algoritem CDTMAT - transformacija srednje osi (angl. medial axis transform)PSLG - ravninski premočrtni graf (angl. planar straight-line graph)SL - naš prebirni algoritem CDTSTL - standarna knjižnica šablon (angl. standard template library)
  7. 7. Seznam oznak ijk - trikotnik z oglišči pi , pj in pkβi - i-ti odsek parabolične krivulje (algoritem Fortune)A(T ) - vektor kotov triangulacije TBc,ρ - krogla s središčem v točki c s polmerom ρBi - i-ti trak pri delitvi ravninec - točka, ki predstavlja središče krogleC - seznam točk od p oddaljenih za največ rCi - seznam točk od p oddaljenih za največ r, ki pripadajo fronti FiCij - seznam točk j-tega intervala CiCDT , CDT (P ) - omejena Delaunayeva triangulacija oz. CDT nad Pdpow - razdalja moči, dpow (px , Bc,ρ ) = d2 (c, px ) − ρ2dist(p, q) - evklidska razdalja med točkama p in qDx - dogodek zaprtja (DC ), odprtja (DO ), združevanja (DJ ) in deljenja (DD )D - usmerjen aciklični graf (algoritem Guibas, Knuth, Sharir)DT , DT (P ) - Delaunayeva triangulacija oz. DT nad Peij - rob eij = pi pjep - dogodkovna točka ep = (Dx , p, F, T )Ec - množica omejitvenih robovEi - seznam robov, ki se končajo v točki pi
  8. 8. F - seznam frontF, Fi - napredujoča frontaG - vhodni ravninski graf G = {P, Ec } v algoritem CDTK - krožnicaKL, KL(P ) - konveksna lupina oz. konveksna lupina nad PLF S(p) - funkcija, ki točki p površja priredi najbližjo razdaljo do srednje osiO - množica objektov na ravninip, pi - točka iz P s koordinatama (x, y) oz. (xi , yi )pi pj - rob med točkama pi in pjP - vhodna množica točk na ravnini ali v prostoruQ - problem, ki ga rešujemo s prebiranjemQe,L - podregija regije Re na levi strani roba eQe,R - podregija regije Re na desni strani roba er - polmer krogaRe - regija trikotnikov triangulacije neposredno ob robu eRT - drevo vsebnostnih relacij napredujočih front FiS - ravnina z vsemi točkamiS - originalno površje objektaS - aproksimacija površja St, ti - trikotnik triangulacijeT - seznam trikotnikov tT , T (P ) - triangulacija oz. triangulacija nad PTi - triangulacija nad točkami v traku BiU - množica umetnih točkV or(P ) - Voronoijev diagram nad P
  9. 9. KazaloSeznam slik ixSeznam tabel xiv1 Uvod 1 1.1 Opredelitev problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Cilji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Struktura disertacije . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Prebirna paradigma 53 Algoritmi Delaunayeve in omejene Delaunayeve triangulacije 9 3.1 Ravninska triangulacija . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Delaunayeva triangulacija . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.1 Algoritmi Delaunayeve triangulacije . . . . . . . . . . . . . . . 16 3.2.1.1 Inkrementalni algoritem Guibas, Knuth in Sharir . . 19 3.2.1.2 Prebirni algoritem Fortune . . . . . . . . . . . . . . . 23 3.2.1.3 Prebirni algoritem Žalik . . . . . . . . . . . . . . . . 25 3.3 Omejena Delaunayeva triangulacija . . . . . . . . . . . . . . . . . . . 31 3.3.1 Algoritmi omejene Delaunayeve triangulacije . . . . . . . . . . 33 3.3.2 Dvokoračni postopki CDT . . . . . . . . . . . . . . . . . . . . 34 3.3.2.1 Vstavljanje robov . . . . . . . . . . . . . . . . . . . . 34 3.3.2.2 Vstavljanje robov z brisanjem . . . . . . . . . . . . . 35 v
  10. 10. KAZALO vi 3.3.2.3 Vstavljanje robov z zamenjavami . . . . . . . . . . . 36 3.3.3 Enokoračni algoritmi CDT . . . . . . . . . . . . . . . . . . . . 39 3.3.3.1 Algoritem CDT Chew . . . . . . . . . . . . . . . . . 394 Prebirni algoritem omejene Delaunayeve triangulacije 44 4.1 Inicializacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2 Prebiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2.1 Napredujoča fronta in podatkovne strukture . . . . . . . . . . 49 4.2.2 Dogodek točke . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.2.3 Dogodek roba . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.2.3.1 Iskanje prvega trikotnika . . . . . . . . . . . . . . . . 54 4.2.3.2 Brisanje sekanih trikotnikov . . . . . . . . . . . . . . 55 4.2.3.3 Triangulacija praznega območja . . . . . . . . . . . . 58 4.3 Finalizacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.4 Časovna analiza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.5 Rezultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 Rekonstrukcija površja iz oblaka točk 67 5.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.1.1 Vzorčenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.2 Sorodne raziskave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.2.1 Algoritmi z delitvijo prostora . . . . . . . . . . . . . . . . . . 71 5.2.1.1 Ploskovno usmerjena izbira celic . . . . . . . . . . . 72 5.2.1.2 Prostorsko usmerjena izbira celic . . . . . . . . . . . 74 5.2.2 Rekonstrukcija površja s funkcijo razdalje . . . . . . . . . . . 76 5.2.3 Rekonstrukcija površja z ukrivljanjem . . . . . . . . . . . . . . 77 5.2.4 Inkrementalni algoritmi za rekonstrukcijo površja . . . . . . . 78 5.2.5 Gručenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.3 Algoritem PowerCrust . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.3.1 Algoritem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
  11. 11. KAZALO vii 5.4 Algoritem BPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.4.1 Preiskovanje prostora . . . . . . . . . . . . . . . . . . . . . . . 88 5.4.2 Izbira semenskega trikotnika . . . . . . . . . . . . . . . . . . . 89 5.4.3 Vrtenje krogle . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 5.4.4 Operatorja združevanja in lepljenja . . . . . . . . . . . . . . . 916 Prebirni algoritem za rekonstrukcijo površja 95 6.1 Gradniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.1.1 Napredujoča fronta . . . . . . . . . . . . . . . . . . . . . . . . 97 6.1.2 Hierarhično vodenje front . . . . . . . . . . . . . . . . . . . . 99 6.1.3 Iskanje najbližjih točk . . . . . . . . . . . . . . . . . . . . . . 100 6.2 Osnovne operacije algoritma . . . . . . . . . . . . . . . . . . . . . . . 103 6.2.1 Odprtje fronte . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 6.2.2 Dodajanje trikotnika . . . . . . . . . . . . . . . . . . . . . . . 104 6.2.2.1 Uravnavanje fronte . . . . . . . . . . . . . . . . . . . 105 6.2.3 Zaprtje fronte . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.3 Potek algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6.3.1 Filtriranje bližnjih točk . . . . . . . . . . . . . . . . . . . . . . 109 6.3.2 Vstavljanje točke v eno fronto . . . . . . . . . . . . . . . . . . 110 6.3.2.1 Delitev fronte . . . . . . . . . . . . . . . . . . . . . . 111 6.3.3 Vstavljanje točk v več front . . . . . . . . . . . . . . . . . . . 114 6.3.4 Dogodkovne točke . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.3.4.1 Dopolnitev odprtja/zaprtja . . . . . . . . . . . . . . 120 6.3.4.2 Dopolnitev delitve/združitve . . . . . . . . . . . . . . 120 6.3.5 Razširitev opisa napredujoče fronte z delitvijo robov . . . . . . 121 6.3.6 Krpanje lukenj . . . . . . . . . . . . . . . . . . . . . . . . . . 123 6.4 Analiza časovne zahtevnosti . . . . . . . . . . . . . . . . . . . . . . . 123 6.5 Rezultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1247 Zaključek 126
  12. 12. KAZALO viiiLiteratura 130Življenjepis 141Bibliografija 142
  13. 13. Slike 2.1 Slikovni prikaz prebiranja. . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Statusna struktura v trenutnem stanju prebiranja. . . . . . . . . . . . 7 3.1 Ravninska triangulacija. . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 Optimizacija minimalnega notranjega kota z zamenjavo roba. . . . . . 12 3.3 Nelegalen rob. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4 Nelegalna (a) in Delaunayeva triangulacija (b). . . . . . . . . . . . . . 16 3.5 Voronoijev diagram in Delaunayeva triangulacija. . . . . . . . . . . . 17 3.6 Določitev velikega trikotnika. . . . . . . . . . . . . . . . . . . . . . . 20 3.7 Vstavljanje točke tvori bodisi tri (a) bodisi štiri trikotnike (b). . . . . 21 3.8 Gradnja podatkovne strukture D: 1. del. . . . . . . . . . . . . . . . . 22 3.9 Gradnja podatkovne strukture D: 2. del. . . . . . . . . . . . . . . . . 23 3.10 Predstavitev delovanja algoritma s stožci, postavljenimi nad točkami in prebirno ravnino π. . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.11 Dogodek točke: na krivulji paraboličnih odsekov se pojavi nov odsek. 26 3.12 Dogodek krožnice: parabolični odsek izgine iz krivulje paraboličnih odsekov. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.13 Primer vstavljanja točke v dano triangulacijo. . . . . . . . . . . . . . 27 3.14 Primeri začetnih konfiguracij v fazi inicializacije. . . . . . . . . . . . . 28 3.15 Prva hevristika preveri kot s sosednjim robom fronte (a) in vstavi nov trikotnik (b) ter nadaljuje, dokler je kot < π/2 (c). . . . . . . . . . . 29 3.16 Druga hevristika odkrije korita (a) in jih zapolni s trikotniki (b). . . . 30 ix
  14. 14. SLIKE x 3.17 Vhodni ravninski graf (a), Delaunayeva (b) in omejena Delaunayeva triangulacija (c). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.18 CDT , vidnost in legalizacija. . . . . . . . . . . . . . . . . . . . . . . . 33 3.19 Vstavljajoč rob e in regija vpliva Re roba e (a) ter mnogokotnika Qe,L in Qe,R (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.20 Triangulacija levega mnogokotnika Qe,L (a-c) in triangulacija desnega mnogokotnika (d). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.21 Prikaz vstavljanja in zamenjav robov. Odstranitev točke p1 (b) zamenjava zadnjega roba (c). . . . . . . . . . . . . . . . . . . . . . . 38 3.22 Razdelitev prostora na trakove, v vsak trak po ena točka. . . . . . . . 39 3.23 Ponazoritev traku brez triangulacije (a) in razdelitev v regije (b). . . 40 3.24 Združitev dveh regij . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.25 Združevanje in povezovanje ob vračanju. . . . . . . . . . . . . . . . . 43 4.1 Točke in robovi po urejanju v fazi inicializacije. . . . . . . . . . . . . 46 4.2 Tvorba velikega trikotnika. . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3 Napredujoča fronta in osnovni nivo podatkovne strukture. . . . . . . 50 4.4 Sredinski primer: projekcija točke pade na rob fonte (a), tvorba trikotnika (b) in legalizacija (c). . . . . . . . . . . . . . . . . . . . . . 52 4.5 Levi primer: projekcija točke zadene točko fronte (a) in tvori dva trikotnika (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.6 Robni primer: projekcija točke zadene rob fronte (a) in razdeli priležni trikotnik (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.7 Po točki pi vstavimo vse njene robove. . . . . . . . . . . . . . . . . . 54 4.8 Iskanje prvega trikotnika. . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.9 Sprehod po trikotnikih ob vstavljanju roba (a) v prvem koraku vrne regiji Qe,L in Qe,R (b) in rezultat trianguliranja (c). . . . . . . . . . . 57 4.10 Sprehod po točkah fronte (a) in triangulacija regije Re (b). . . . . . . 58
  15. 15. SLIKE xi 4.11 Mešani sprehod po točkah fronte (a), rezultirajoči regiji Qe,L in Qe,R (b) in triangulacija (c). . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.12 Triangulacija regije Qe . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.13 Finalizacija zbriše odvečne trikotnike (a) in zgradi konveksno lupino (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.14 Graf odvisnosti hitrosti izvajanja od števila omejitev. . . . . . . . . . 64 4.15 Primer vhoda pri katastrskih podatkih (a) in rezultat triangulacije (b). 65 4.16 Primer vhoda pri triangulaciji površja (a) in rezultat triangulacije (b). 66 5.1 Proces izgradnje površja od zajemanja vzorcev do rezultata pro- gramske rekonstrukcije. . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.2 Primer površja z mejo (a) in vodotesnega površja (b). . . . . . . . . . 70 5.3 Vzorčenje po kriteriju vzorčne poti (a) in rekonstruiran objekt s slabo rekonstruiranim robom (b). . . . . . . . . . . . . . . . . . . . . . . . 71 5.4 Kriterij LFS in srednja os (modra barva)(a) ter rekonstruirano površje (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.5 Črna krivulja prikazuje površje, modra srednjo os in krožnice transformacijo srednje osi. . . . . . . . . . . . . . . . . . . . . . . . . 81 5.6 Voronoijeva celica točke p, pola p− in p+ ter normala površja v točki p. 82 5.7 Diagram moči (polne črte) in dualna regularna triangulacija (črtkane črte). Krogi predstavljajo polarne kroge v 2D. . . . . . . . . . . . . . 83 5.8 Objekt in približek srednje osi (vir: Amenta). . . . . . . . . . . . . . 84 5.9 Polarna kroga sosednjih celic in kot α med presečiščem. . . . . . . . . 85 5.10 Notranje polarne krogle objekta (a) in skorja moči kot rekonstruirano površje (b) (vir: Amenta). . . . . . . . . . . . . . . . . . . . . . . . . 86 5.11 Delovanje algoritma BPA v 2D pri dovolj gostem vzorčenju (a), pri premalo gostem vzorčenju (b) in pri preveliki ukrivljenosti površja (c). 88 5.12 Vrtenje krogle okrog roba pi pj (pravokoten na sliko) najde točko pk , s katero ustvarimo nov trikotnik. . . . . . . . . . . . . . . . . . . . . 91
  16. 16. SLIKE xii 5.13 Operator združevanja doda trikotnik ijk in osveži fronto. . . . . . . 92 5.14 Operator lepljenja v različnih situacijah. . . . . . . . . . . . . . . . . 93 6.1 Predogled delovanja algoritma na krogli (a) in obroču (b, c). . . . . . 96 6.2 Neaktivne (a) in aktivne fronte (b). . . . . . . . . . . . . . . . . . . . 98 6.3 Zanki F0 in F2 ter prstan F1 . Puščice kažejo orientacijo front. . . . . 99 6.4 Gnezdenje front. S črno so označe zanke, z rdečo prstani, modra barva pa označuje fronto, ki jo vstavljamo. . . . . . . . . . . . . . . . 100 6.5 Predstavitev front z drevesom. Z modro je prikazana vstavljena fronta, puščica prikazuje iskanje, siva oglišča pa so tista, kjer smo izvajali vsebnostni test. . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.6 Iskalna struktura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.7 Nastanek fronte (a in c), dodajanje točke v fronto (b) in odprtje fronte (d). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 6.8 Določanje vstavljanja. . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.9 Tvorba trikotnika pc ppc+ . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.10 Tvorba trikotnika pc− ppc . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.11 Tvorba trikotnikov pc− ppc in pc ppc+ . . . . . . . . . . . . . . . . . . . 107 6.12 Zaprtje fronte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.13 Vstavljanje trikotnikov s preverjanjem razdalj (a in b) in zaprtje fronte (c). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.14 Razdelitev točk na intervale (a) in odstranitev točk z upoštevanjem vidnosti (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 6.15 Priredna delitev fronte. . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.16 Podredna delitev fronte. . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.17 Delitev fronte F0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.18 Združitev neaktivnih front kot odprtje. . . . . . . . . . . . . . . . . . 115 6.19 Združitev neaktivnih front ni mogoča zaradi kolinearnosti projekcij (a), zato tvorimo novo neaktivno fronto (b). . . . . . . . . . . . . . . 115
  17. 17. SLIKE xiii 6.20 Priredna združitev . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.21 Podredna združitev. . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.22 Deljenje na primeru. . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6.23 Združevanje na primeru. . . . . . . . . . . . . . . . . . . . . . . . . . 118 6.24 Dogodkovna točka ep (a) in vstavljanje znotraj dogodkovne točke (b). 119 6.25 S točko p prehitro zapremo fronto (a), zato z naslednjo točko p+ tvorimo novo fronto (b), ki gradi nepravilno površje naprej (c) in željen rezultat (d). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 6.26 Primer napake, ko fronte ne najdemo (a), rezultat vstavljanja pa je nova fronta (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6.27 Primer napake, ko najdemo napačno bližnjo točko, ki jo z vidnostjo odtranimo (a), rezultat pa je nova fronta (b). . . . . . . . . . . . . . . 122 6.28 Ob vstavljanju najdemo pomožno točko (a) in rezultat vstavljanja (b).122 6.29 Ob vstavljanju najdemo pomožno točko (a) in rezultat vstavljanja (b).122 6.30 Rekonstrukcija površja krogle (a), kapsul (b), obroča (c) in zajca (d) z algoritmom CRUST (levo) in z našim algoritmom (desno). . . . . . 125
  18. 18. Tabele 4.1 Primerjava izvajalnih časov z obstoječimi algoritmi. . . . . . . . . . . . . 64 4.2 Izvajalni časi posameznih delov algoritma SL. . . . . . . . . . . . . . . . 64 6.1 Primerjava izvajalnih časov med našim algoritmom in algoritmom CRUST. 124 xiv
  19. 19. Poglavje 1Uvod1.1 Opredelitev problemaEna temeljnih paradigem reševanja problemov v računalniški geometriji je prebirnaparadigma, ki predstavlja enostavno prostorsko lokalizacijo reševanja problemov.Temelji na drsenju prebirnega objekta (ponavadi premice ali ravnine) skozi prostorurejenih podatkov v smeri drsenja in lokalno rešuje podproblem. Podrešitev dodak rešitvi, ki leži za prebirnim objektom glede na smer drsenja. Tehnika je bilavelikokrat uporabljena pri reševanju dvodimenzionalnih problemov, v prostoru paje njena uporaba redka.Eden izmed ravninskih problemov, ki ga lahko rešimo s prebiranjem, je triangulacija.Delaunayeva triangulacija je posebna skupina triangulacij, ki tvori optimalnetrikotnike glede na minimalni kot trikotnikov. Področje Delaunayeve triangulacijepredstavlja star problem računalniške geometrije, kjer je bilo do danes razvitihže ogromno algoritmov. Lahko bi rekli, da je problem že rešen. Teoretičnazagotovila pravijo, da je možno Delaunayevo triangulacijo zgraditi iz skorajvsake množice točk, vendar praksa doda še težnjo po optimalni porabi virov,kot sta procesorski čas in delovni pomnilnik. Tako razvijalci težijo k razvojualgoritmov z minimalnimi časi izvajanja in minimalno porabo delovnega pomnilnika. 1
  20. 20. POGLAVJE 1. UVOD 2Rešitve Delaunayeve triangulacije s prebiranjem so redke. Najbolj znan algoritemDelaunayeve triangulacije je Fortuneov prebirni algoritem, ki v osnovi tvoriVoronoijev diagram [42], z njim pa posredno reši tudi Delaunayevo triangulacijo.Boljši algoritem, ki s prebiranjem neposredno tvori Delaunayevo triangulacijo, jerazvil Žalik [92]. Njegov pristop zaradi hitrih izvajalnih časov, majhne porabeprostora in manjše občutljivosti na porazdelitev vhodnih točk predstavlja dobromožnost za rešitev splošnejšega problema omejene Delaunayeve triangulacije.Uporaba omejene Delaunayeve triangulacija je zaradi splošnosti večja, najdemo pajo v računalniški geometriji in v računalniški grafiki, inženirstvu ali v geografskihinformacijskih sistemih [41, 56, 74].Drug problem je rekonstrukcija površja iz oblaka točk. Tudi tukaj je bilo storjenegaže veliko [66], vendar problem rekonstrukcije še ni dokončno rešen. Šele pred kratkimje dobil močno teoretično ozadje [4]. Vendar teorija drži le ob predpostavki, dapredstavlja oblak točk dober vzorec. Splošen algoritem, s katerim bi lahko v praksirekonstruirali površje iz prav vsakega oblaka točk, še ne obstaja.1.2 CiljiCilj, ki smo si ga zadali, je za omenjena problema razviti učinkovita in praktičnapostopka, temelječa na prebirni paradigmi. Prvi algoritem, ki ga želimo razviti, jealgoritem omejene Delaunayeve triangulacije. Izhajali bomo iz Žalikovega algoritmaDelaunayeve triangulacije [92], ki se je s kombinacijo prebiranja in napredujoče fronteizkazal za izjemno hitrega, varčnega in uspešnega pri različnih porazdelitvah vhodnihpodatkov. Pokazali bomo, da je s prebirno tehniko možno zgraditi algoritem omejeneDelaunayeve triangulacije, ki bo boljši ali vsaj primerljiv z obstoječimi postopki.Postavili smo naslednjo hipotezo:
  21. 21. POGLAVJE 1. UVOD 3Hipoteza 1: Prebirni algoritem omejene Delauneyeve triangulacije, ki uporablja napredujočo fronto in ustrezne hevristike, je pri enakomerno in neenakomerno porazdeljenih vhodnih podatkih v splošnem hitrejši od do sedaj znanih algoritmov omejene Delaunayeve triangulacije. Hipotezo bomo poskusili potrditi z izvajanjem algoritma na različno porazde-ljenih vhodnih podatkih, kjer se bomo osredotočili predvsem na realne podatke GIS.Opravili bomo primerjave izvajalnih časov z najpopularnejšimi tovrstnimi algoritmi. Drugi problem, ki ga bomo poskusili rešiti s prebirno paradigmo, jerekonstrukcija površja iz oblaka točk. Prepričani smo, da je z razširitvijo idejeza tvorbo Delaunayeve triangulacije možno zgraditi površje iz oblaka točk. Pravarazširitev Delaunayeve triangulacije v 3D je sicer Delaunayeva tetraedrizacija,vendar je bolj zanimiv problem rekonstrukcije površja, ki predstavlja njenopodmnožico - trikotnike tetraedrov, ki ležijo na površju objekta. Med skupinamipostopkov za rekonstrukcijo površja ne zasledimo algoritmov, temelječih na prebirniparadigmi. Druga hipoteza se glasi:Hipoteza 2: Z ustreznimi hevristikami za nadzor napredujočih front je možno sestaviti algoritem s prebiranjem za rekonstrukcijo površja iz oblaka točk. Hipotezo bomo poskusili potrditi z razvojem prebirnega rekonstrukcijskegaalgoritma, ki ga bomo preverili na različnih primerih.
  22. 22. POGLAVJE 1. UVOD 41.3 Struktura disertacijeDisertacijo bomo razdelili v sedem poglavij. Po uvodnem poglavju bo sledilopoglavje, ki ga bomo namenili predstavitvi prebirne paradigme. Tretje poglavje bovsebovalo teoretično izpeljavo Delaunayeve in omejene Delaunayeve triangulacije,pregled sorodnih raziskav in opise izbranih triangulacijskih algoritmov. V četrtempoglavju bomo opisali lasten algoritem za omejeno Delaunayevo triangulacijo sprebiranjem. Peto poglavje predstavlja drugi del naše disertacije, kjer bomonapravili uvod v področje rekonstrukcije površja, ki mu bo sledil pregled obstoječihrešitev. V šestem poglavju bomo opisali lasten prebirni algoritem za rekonstrukcijo.V zadnjem sedmem poglavju bomo predstavili rezultate obeh razvitih algoritmovin potrdili ali zavrnili hipotezi. Sledil bo zaključek, v katerem bomo povzeli lastneprispevke, prav tako pa bomo podali smernice za nadaljevanje raziskave.
  23. 23. Poglavje 2Prebirna paradigmaPrebirna paradigma ali krajše kar prebiranje (angl. sweeping)1 predstavlja enopomembnejših tehnik pri reševanju geometrijskih problemov, zato si pristop zaslužisvoje poglavje. Opis bomo povzeli po [57]. Pri prebirnih algoritmih na ravnini navidezna prebirna premica drsi po ravnini oddna proti vrhu in med svojo potjo rešuje zadan geometrijski problem. Med problemi,ki so bili rešeni s tehniko prebiranja, najdemo tvorbo Voronoijevega diagrama [42],Delaunayeve triangulacije [92], naš algoritem omejene Delaunayeve triangulacije [27],problem iskanja najbližjih objektov [13, 46], problem odstranjevanja skritih lic [76],izračun najkrajše poti [38] in še bi lahko naštevali. Tehnika je zelo priljubljena, zatojo najdemo v številnih knjigah o računalniški geometriji [65, 71, 73]. Predstavljajmo si množico objektov O na ravnini, pri katerih želimo odgovoritina vprašanje Q. Z vodoravno premico, ki jo postavimo nad vse objekte, pričnemodrseti od zgoraj navdzol. Med drsenjem zberemo vse informacije objektov S, ki sobistvene, da lahko odgovorimo na vprašanje Q. Ko je prebirna premica pod vsemiobjekti, lahko zgradimo končen odgovor na vprašanje Q. 1 tudi preiskovanje 5
  24. 24. POGLAVJE 2. PREBIRNA PARADIGMA 6Med prebiranjem moramo vzdrževati podmnožico objektov, ki jo prebirna premicapreseka. Tem objektom pravimo tudi aktivni objekti. Ker se podmnožica objektovhitro spreminja, jo hranimo v dinamični podatkovni strukturi. Najpogostejeuporabljamo uravnotežena dvojiška iskalna drevesa. Podatkovno strukturoimenujemo statusna struktura (angl. status structure). Prav tako moramo vedeti,kdaj se bo status spremenil in kdaj lahko najdemo delce informacij za grajenjeodgovora na Q. To se zgodi le v določenih položajih prebirne premice. Točke,v katerih se status spremeni, imenujemo dogodki (angl. events), ti pa so podanis koordinato y, saj smo na začetku predpostavili, da je naša prebirna premicavodoravna (v splošnem lahko prebirna premica poteka od katerikoli strani, odvisnood problema, ki ga rešujemo). Ker se premica premika le navzdol, moramo dogodkeurediti glede na koordinato y. Podatkovni strukturi, ki hrani urejene dogodke,pravimo seznam dogodkov (angl. event list). Zdaj naša prebirna premica več nedrsi, temveč skače od dogodka do dogodka, kjer vsakič odstrani dogodek z največjokoordinato y. Prebirna premica zaključi svojo pot, ko iz seznama dogodkov odstranivse dogodke. Premikanje prebirne premice predstavlja ogrodje prebiranja, ki je skupno vsemprebirnim algoritmom. Ključen korak prebirnega pristopa je obdelava dogodkov, kije vezana na posamezen problem. Dva dogodka sta skoraj vedno prisotna: • ko se prebirna premica prvič dotakne objekta iz množice O ali ga prvič seka - objekt vstavimo v statusno strukturo (objekt je aktiven); • ko prebirna premica zapusti zadnjo točko objekta iz O - objekt odstranimo iz statusne strukture (objekt ni aktiven). S prebiranjem v ravnini lahko rešimo dvodimenzionalen geometrijski problems pomočjo enodimenzionalnih dinamičnih podatkovnih struktur. Idejo lahkoposplošimo za trodimenzionalen prostor, kjer skozi prostor drsimo s prebirnoravnino. Statusna struktura je v tem primeru dvodimenzionalna. Pristop prebiranja
  25. 25. POGLAVJE 2. PREBIRNA PARADIGMA 7 a b c d e g f h i j Slika 2.1: Slikovni prikaz prebiranja. d e f g Slika 2.2: Statusna struktura v trenutnem stanju prebiranja.še ni tako razširjen v 3D, zato je njegova najpogostejša uporaba prebiranje s prebirnopremico na ravnini. Izpis 1 prikazuje ogrodje prebiranja. Slika 2.1 prikazuje primeruporabe, kjer prebirno premico pomikamo od zgoraj navzdol. Modra barva na slikipredstavlja dele objektov, ki jih je prebirna premica že obiskala. V celoti so biliobiskani objekti a, b in c. V statusni strukturi se nahajajo objekti d, e, f in g(slika 2.2). Bližnji prihajajoči dogodki, ki spremenijo statusno strukturo, si sledijov naslednjem vrstnem redu: • dno objekta d (odstranitev), • vrh objekta h (vstavitev),
  26. 26. POGLAVJE 2. PREBIRNA PARADIGMA 8 • dno objekta e (odstranitev), • dno objekta g (odstranitev), • vrh objekta i (vstavitev). Izvedbe prebiranja so lahko tudi drugačne, npr. vrtenje prebirne premice okrogtočke [23, 38] ali celo topološka črta namesto geometrijske premice [31].Izpis 1 Ogrodje prebirnega algoritma1. inicializiraj seznam dogodkov2. inicializiraj statusno strukturo3. Dokler seznam dogodkov ni prazen4. izbriši dogodek z največjo y−koordinato iz seznama dogodkov5. če je prebirna premica sekala (ali se dotaknila) novega objekta6. Vstavi objekt v statusno strukturo7. če prebirna premica več ne seka (ali se ne dotika) objekta8. izbriši objekt iz statusne strukture9. odgovori na vprašanje ali del vprašanja z uporabo statusne strukture10. če je potrebno, dodaj nov dogodek v seznam dogodkov Implementacija prebirnih algoritmov ni zahtevna, če uporabimo obstoječoprogramsko kodo za uravnotežena iskalna drevesa, urejanje podatkov in osnovnegeometrijske elemente. Prednost prebirnih algoritmov pred algoritmi strategije deli-in-vladaj je, da nam ni potrebno hraniti vseh objektov v delovnem pomnilnikunaenkrat (v delovnem pomnilniku imamo le objekte, ki so v statusni strukturi).Časovna zahtevnost prebirnih algoritmov je povečini O(n log n), temu pa dodamoše čas za odgovarjanje na vprašanje Q. Prebiranje ni primerno za probleme, kjer jevhodni tok dinamičen. Ponekod prebiranje ni smiselno, če lahko problem rešimo vlinearnem času, kot je npr. določitev oklepajoče škatle množici točk.
  27. 27. Poglavje 3Algoritmi Delaunayeve in omejeneDelaunayeve triangulacijeV tem poglavju bomo formalno definirali ravninsko triangulacijo, predstaviliDelaunayevo pravilo in opisali Delaunayevo triangulacijo ter prešli na definicijoomejene Delaunayeve triangulacije, ki mu bo sledil opis postopkov za tvorbo omejeneDelaunayeve triangulacije.3.1 Ravninska triangulacijaDefinicijo ravninske triangulacije bomo povzeli po [19]. Naj bo podana množicatočk v ravnini P = {p0 , p1 , ..., pn−1 } velikosti n. Definicijo ravninske triangulacijenad množico točk P izpeljemo iz maksimalne delitve ravnine S, za katero velja,da vsebuje le takšne robove, ki se med seboj ne sekajo, saj na tak način ohranimoravninskost delitve. To pomeni, da izven množice S ležijo sami sekajoči se robovi.Če napravimo maksimalno ravninsko delitev s točkami iz P , govorimo o triangulacijinad P oz. T (P ) (slika 3.1). Vsak rob ei,j = pi pj , pri čemer pi , pj ∈ P in i = j, pripada natanko dvematrikotnikoma, razen če leži na robu triangulacije, imenovanem konveksna lupina nad 9
  28. 28. POGLAVJE 3. ALGORITMI DT IN CDT 10 Slika 3.1: Ravninska triangulacija.P oz. KL(P ) (na sliki 3.1 je konveksna lupina narisana s krepkejšimi črtami). Za vsako triangulacijo lahko s pomočjo izračuna konveksne lupine natančnodoločimo število vseh robov in trikotnikov, o čemer govori naslednji izrek [19]: Naj bo P množica n točk na ravnini, ki niso vse kolinearne, in naj k predstavljaštevilo točk iz P , ki ležijo na konveksni lupini. Vsaka triangulacija T (P ) ima2n − 2 − k trikotnikov in 3n − 3 − k robov. Izrek je dokazan s pomočjo Eulerjeve formule [90], ki določa razmerje medštevilom oglišč nv , številom robov ne in številom lic nf ter pravi: nv − ne + nf = 2 Če je m število trikotnikov triangulacije, je število lic nf = m + 1, saj ploskevna ravnini predstavlja tudi zunanjost triangulacije. Zunanje lice ima k robov, kipredstavljajo konveksno lupino. Vsak trikotnik ima 3 robove, vsak rob pa je skupennatanko dvema licema. Število vseh robov je torej ne = (3m + k)/2. Če v formulovstavimo ne in nf , dobimo izračun za m = 2n − 2 − k, iz česar sledi, da je ne =3n − 3 − k.
  29. 29. POGLAVJE 3. ALGORITMI DT IN CDT 11 Nad množico točk na ravnini je možno zgraditi različne triangulacije: • triangulacija množice točk (prostor, ki ga razdelimo na trikotnike, je omejen s konveksno lupino, napeto nad množico točk), • triangulacija enostavnega mnogokotnika (prostor je omejen z mnogokotnikom, katerega notranjost razdelimo v trikotnike). Triangulacije množice točk so lahko optimalne ali neoptimalne. Predstavnikneoptimalnih triangulacij je triangulacija množice točk s posplošenim trikotniškimtrakom (najbolj znana je, med katerimi je najbolj znana Hamiltonova triangu-lacija [7, 37, 53]). Med neoptimalne triangulacije spada tudi triangulacija brezkriterija, ki zahteva le, da so trikotniki ravninski. Najbolj nas zanimajo optimalnetriangulacije, kriteriji optimalnosti pa so lahko različni: • minimizacija najdaljše dolžine robov trikotnika [32], • požrešna triangulacija [62], • minimizacija najmanjšega kota [35], • maksimizacija najmanjšega kota (Delaunayeva triangulacija), • minimizacija največjega kota [33], • maksimizacija najmanjše višine [33], • minimizacija največje razdalje trikotnika od središča njegovega očrtanega kroga [33], • minimizacija vsote dolžine vseh robov (angl. minimum weighted triangula- tion [36]). Danes je najpopularnejša optimalna triangulacija vsekakor Delaunayeva trian-gulacija, med neoptimalnimi pa je bilo največ pozornosti posvečene Hamiltonovitriangulaciji.
  30. 30. POGLAVJE 3. ALGORITMI DT IN CDT 123.2 Delaunayeva triangulacijaNaj bo T triangulacija nad P , ki vsebuje m trikotnikov. Vsak trikotnik ima 3notranje kote, zato je vseh kotov 3m, ki jih uredimo po velikosti v naraščajočemvrstnem redu. Sestavimo vektor kotov A(T ) = (α1 , α2 , ..., α3m ), kjer velja αi ≤ αjpri i < j. Naj bo T druga triangulacija prav tako nad množico točk P z vektorjemkotov A(T ) = (α1 , α2 , ..., α3m ). Pravimo, da je vektor kotov A(T ) večji od vektorjakotov A(T ), če je A(T ) leksiografsko večji od A(T ) oz. če obstaja indeks i,1 ≤ i ≤ 3m tako, da velja αj = αj za vsak j < i in αi > αi . Triangulacija T je optimalna glede na kot, če velja A(T ) ≥ A(T ) za vsetriangulacije T nad P . Za takšno triangulacijo je značilno, da tvori lepše trikotnikeoz. trikotnike, ki niso ozki, takšna triangulacija pa je bolj zaželena v praktičniuporabi. Slika 3.2: Optimizacija minimalnega notranjega kota z zamenjavo roba. Rob pi pj triangulacije T (P ) naj ne leži na konveksni lupini KL(P ) (slika 3.2).Rob pi pj je skupen trikotnikoma i,j,k in j,i,l . Če oba trikotnika skupaj tvoritakonveksni štirikotnik, dobimo novo triangulacijo T tako, da iz T odstranimo robpi pj in namesto njega vstavimo rob pk pl . To operacijo imenujemo zamenjava robov(angl. edge-flip). Koti α1 , ..., α6 v A(T ) so zamenjani z α1 , ..., α6 v A(T ). Rob pi pj je nelegalen,
  31. 31. POGLAVJE 3. ALGORITMI DT IN CDT 13če velja: min(αi ) < min(αi ), i ≤ i ≤ 6. Drugače povedano, rob je nelegalen, če lahko v T lokalno povečamo najmanjšikot z zamenjavo tega roba. Če v triangulaciji T poskrbimo, da ne vsebuje nobeneganelegalnega roba, pravimo, da je T legalna triangulacija. Legalna triangulacija jeoptimalna glede na minimalni notranji kot. Da nam ni potrebno izračunati kotovαi in αi , si pomagamo z naslednjim izrekom: Naj bo rob pi pj skupen trikotnikoma i,j,k in i,j,l in naj bo K krožnica skozitočke pi , pj in pk (slika 3.3). Rob pi pj je nelegalen natanko takrat, ko točka pl leživ notranjosti krožnice K. Nadalje, če točke pi , pj , pk in pl skupaj tvorijo konveksništirikotnik in ne ležijo na skupni krožnici, je točno eden izmed robov pi pj in pk plnelegalen. Iz izreka sledi naslednja ugotovitev: če vsakemu trikotniku triangulacije Točrtamo krog in se znotraj tega kroga ne nahaja nobena druga točka iz P , jetriangulacija T legalna. Tej lastnosti pravimo pravilo praznega kroga. Leta 1934 je zgornjo ugotovitevdokazal ruski matematik Boris Nikolajevič Delone. Ta je svoja dela objavljal vfrancoskem jeziku, zato je preoblikoval svoj priimek v Delaunay. Tako pravilopraznega kroga imenujemo Delaunayevo pravilo. Triangulaciji, pri kateri za vsak partrikotnikov velja pravilo praznega kroga, pravimo Delaunayeva triangulacija, njenerobove in trikotnike pa imenujemo Delaunayevi robovi oz. Delaunayevi trikotniki.Slika 3.4 prikazuje razliko med nelegalno in Delaunayevo triangulacijo. Algoritem, s katerim pridemo do Delaunayeve triangulacije, je zamenjavanelegalnih robov z legalnimi, vse dokler triangulacija ne vsebuje več nelegalnih robov.Lawson [60] je pokazal, da je moč vsako triangulacijo pretvoriti v Delaunayevo, če
  32. 32. POGLAVJE 3. ALGORITMI DT IN CDT 14 nelegalen rob Slika 3.3: Nelegalen rob.izvedemo legalizacijo za vsak par trikotnikov triangulacije. Rekurzivni postopekza lokalno legalizacijo prikazuje izpis 2. Vhod v algoritem legalizacije predstavljatrikotnik i,j,k (slika 3.3), pri katerem bomo preverjali legalnost roba pi pj v danitriangulaciji T . Algoritem poišče sosednji trikotnik trikotniku i,j,k po robu pi pj , v našemprimeru je to trikotnik j,i,l , in v njem izbere oglišče, ki ne leži na robu pi pj .Trikotniku i,j,k nato očrta krog in preveri, ali oglišče pl leži v njegovi notranjosti.Če je temu tako, je rob pi pj nelegalen, zato ga zamenja z robom pl pk . Rezultatzamenjave sta dva nova trikotnika l,k,i in k,l,j , kjer rekurzivno preveri trikotnik l,k,i z roboma pk pi in pi pl ter k,l,j z roboma pl pj in pj pk . Rekurzija se konča, kov triangulaciji T ni več nelegalnih robov. Delaunayeva triangulacija je unikatna, če v njej ne obstaja takšen konveksnimnogokotnik, ki bi imel vsa oglišča na isti krožnici. Delaunayeva triangulacija je neposredno povezana z Voronoijevim diagramom(slika 3.5). Začetki Voronoijevih diagramov segajo v 17. stoletje v čas Descartesa in
  33. 33. POGLAVJE 3. ALGORITMI DT IN CDT 15Izpis 2 Procedura lokalne legalizacije v triangulaciji Tprocedure Legaliziraj( i,j,k , pi pj , T )begin j,i,l = VrniSosednjiTrikotnik( i,j,k , pi pj , T ); if Nelegalnost( i,j,k , pl ) then begin { l,k,i , k,l,j } = ZamenjajRob( i,j,k , j,i,l , pi pj ); Legaliziraj( l,k,i , pk pi , T ); Legaliziraj( l,k,i , pi pl , T ); Legaliziraj( k,l,j , pl pj , T ); Legaliziraj( k,l,j , pj pk , T ); endendizhajajo iz opazovanj vesolja, kjer so ugotavljali, da se skupine nebesnih teles gibljejookrog nevidnih materij, ki jih privlačijo. Tako so pričeli deliti prostor na področjaprivlačnosti. Problematika je postala zanimiva in tako se je pričela razvijati novaveja geometrije. Voronoi je prvi, ki je zanjo postavil matematične temelje leta 1908,zato se diagrami v računalniški geometriji imenujejo po njem (najdemo jih tudipod imeni [10]: Dirichletova področja, Theissenovi mnogokotniki, Wigner-Seitzovapodročja, Johnson-Mehlov model in Blumova transformacija). Naj bo razdalja med točkama a in b označena z dist(a, b). Voronoijev diagramnad množico točk P velikosti n definiramo z delitvijo ravnine na n celic, po eno zavsako točko iz P . Če v celico, definirano s točko pi , vstavimo točko q, velja, da jetočki q izmed vseh točk iz P najbližja točka pi oz. dist(q, pi ) < dist(q, pj ), pj ∈ P, i =j. Voronoijev diagram nad množico točk P označimo kot V or(P ). Celici pravimoVoronoijeva celica, robovom Voronoijevi robovi, ti pa se stikajo v Voronoijevih
  34. 34. POGLAVJE 3. ALGORITMI DT IN CDT 16 Slika 3.4: Nelegalna (a) in Delaunayeva triangulacija (b).točkah. Točkam iz P pravimo Voronoijeva središča (slika 3.5). Če Voronoijevasredišča sosednjih Voronoijevih celic povežemo med seboj z ravnimi robovi, dobimoDelaunayevo triangulacijo. Pravimo, da je Deluanayeva triangulacija dualni grafVoronoijevemu diagramu.3.2.1 Algoritmi Delaunayeve triangulacijeZa algoritme Delaunayeve triangulacije je danes splošno znano, da je njihovapričakovana časovna zahtevnost O(n log n). Največje razlike med algoritmi so
  35. 35. POGLAVJE 3. ALGORITMI DT IN CDT 17 Slika 3.5: Voronoijev diagram in Delaunayeva triangulacija.v dejanskem času procesiranja, v pomnilniških obremenitvah, v zahtevnostiimplementacije in stabilnosti ter v občutljivosti algoritma glede na porazdelitvetočk. Problem Delaunayeve triangulacije predstavlja eno najbolj raziskanih vejračunalniške geometrije, zato je bilo do danes razvitih veliko različnih algoritmov,ki jih v grobem delimo v pet skupin: 1. Algoritmi na principu ovijanja paketa (ali inkrementalni iskalni algoritmi). Za te algoritme je značilno postopno dodajanje točk v trenutno triangulacijo, kjer obstoječim mejnim robovom poiščemo najbližjo točko, ki ustreza Delaunayevemu pravilu, in jo pripnemo Delaunayevi triangulaciji. Predstavnik te skupine je algoritem Fanga in Piegla [39]. Algoritem se v praksi pokaže kot počasen in zelo nestabilen.
  36. 36. POGLAVJE 3. ALGORITMI DT IN CDT 18 2. Inkrementalni konstrukcijski algoritmi. So najbolj razširjeni triangu- lacijski algoritmi. Temeljijo na zaporednem vstavljanju točk v obstoječo Delaunayevo triangulacijo z delitvijo trikotnika, v katerega pade trenutno vstavljena točka. Svoje delovanje pričnejo s tvorbo velikega ali super trikotnika, ki zajame celotno vhodno množico točk in je tudi prvi trikotnik, ki se deli. Najden trikotnik razdelijo na tri ali štiri nove trikotnike, za katere je potrebno še preveriti, ali izpolnjujejo Delaunayevo pravilo. Ker triangulacijo zgradimo nad razširjeno množico točk, moramo na koncu le-te odstraniti. Najbolj znan algoritem so predstavili Guibas, Knuth in Sharir [48]. Algoritem uporablja usmerjen acikličen graf za iskanje trikotnika. Guibas in Stolfi [47] sta izvedla iskanje trikotnika s sprehodom po triangulaciji iz naključnega trikotnika in se izognila iskalni podatkovni strukturi. Su in Drysdale [79] sta za iskanje trikotnika uporabila enakomerno delitev ravnine. Postopek, kjer je iskanje trikotnika prevedeno v problem iskanja najbližje točke z uporabo dvonivojske delitve ravnine, najdemo v [91], postopek z delitvijo ravnine na trakove in uporabo seznama s preskakovanjem pa v [87]. Algoritmi so relativno preprosti za implementacijo. 3. Algoritmi s prebirno premico. Za njih je značilen sprehod s prebirno premico po naraščajoče urejenih vhodnih podatkih v smeri gibanja premice. Prostor za premico predstavlja trenutno rešitev, prostor pred premico pa je še neraziskan. Ko premica obišče točko, govorimo o dogodku. Najbolj znan algoritem za Voronoijev diagram in (posredno) za triangulacijo je napravil Fortune [42], veliko preprostejšo rešitev pa je predlagal Žalik [92]. Algoritmi dosegajo visoke hitrosti. 4. Algoritmi s strategijo deli in vladaj. Za tovrstne algoritme je značilno, da problem razdelijo na podprobleme, dokler ti niso enostavno rešljivi, delne rešitve pa zlijejo ob vračanju iz rekurzije. Triangulacijski algoritmi razdelijo vhodno množico običajno na trakove [22] ali pravokotne celice [28]. Prednost
  37. 37. POGLAVJE 3. ALGORITMI DT IN CDT 19 tovrstnih algoritmov je njihova primernost za paralelno procesiranje, bodisi na enem bodisi na več računalnikih. Druga prednost so nizki izvajalni časi. Slabost, s katero se ti algoritmi ponavadi srečujejo, je relativno težka implementacija, zato se pogosto zadovoljimo s kakšnim programersko manj zahtevnim algoritmom. 5. Algoritem z vbočeno lupino. Zanimivo idejo za tvorbo Delaunayeve triangulacije in Voronoijevega diagrama s pomočjo konveksne lupine v 3D sta predstavila Edelsbrunner in Seidel [30]. Metoda je sestavljena iz treh korakov. Prvi korak preslika vhodno množico na paraboloid, drugi korak nad preslikanimi točkami zgradi 3D konveksno lupino in nato odstrani zgornjo ploskev dobljenega paraboloida. Tretji korak preostale trikotnike preslika na ravnino xy, na kateri se izriše Delaunayeva triangulacija.3.2.1.1 Inkrementalni algoritem Guibas, Knuth in SharirEden najbolj znanih algoritmov za tvorbo Delaunayeve triangulacije so razviliGuibas, Knuth in Sharir [48]. Gre za naključni inkrementalni algoritem, kateregaosnovna ideja je deljenje trikotnikov v nove trikotnike z vstavljanjem točk v povsempoljubnem vrstnem redu. Pripravo podatkov predstavlja premešanje vrstnegareda (angl. randomization) točk, ki zagotavlja pričakovano časovno zahtevnostO(n log n). Algoritem prične s tvorbo velikega umetnega trikotnika, ki zaobjame vse točkeiz množice P (slika 3.6). DT tako izvedemo nad množico točk P U , kjer jeU = {p−1 , p−2 , p−3 } množica oglišč velikega trikotnika. Ker je končni cilj DT (P ) inne DT (P U ), moramo na koncu izbrisati vse robove, katerih vsaj eno izmed ogliščpripada množici U . Točke p−1 , p−2 in p−3 postavimo dovolj daleč, da ne vplivajo na DT (P ).
  38. 38. POGLAVJE 3. ALGORITMI DT IN CDT 20 Slika 3.6: Določitev velikega trikotnika.Dobro postavitev dobimo, če postavimo oklepajoči pravokotnik nad P v izhodiščekoordinatnega sistema. Kot max označimo najdaljšo stranico, za oglišča velikegatrikotnika pa izberemo p−1 (0, 3 max), p−2 (−3 max, −3 max) in p−3 (3 max, 0). Z gradnjo velikega umetnega trikotnika −1,−2,−3 smo zagotovili, da se v njegovinotranjosti nahajajo vse točke. Tako je postopek deljenja trikotnikov splošen.Poteka tako, da najprej poiščemo trikotnik, ki ga bomo razdelili (v primeruvstavljanja prve točke je to veliki trikotnik), nato pa izvedemo deljenje. Pojavita selahko dve situaciji (slika 3.7): • točka pade v notranjost trikotnika - trikotnik razdelimo na 3 nove trikotnike (točka pr razdeli trikotnik i,j,k na trikotnike i,j,r , j,k,r , k,i,r ), in • točka pade na rob - trikotnika, ki jima je rob skupen, razpolovimo (točka pr razdeli trikotnik i,j,k na i,j,r in j,k,r , trikotnik k,l,i pa na k,l,r in l,i,r ). Rob pi pk razpade na robova pi pr in pr pk . V primeru, da rob pripada KL(P ), razdelimo le en trikotnik.
  39. 39. POGLAVJE 3. ALGORITMI DT IN CDT 21 Slika 3.7: Vstavljanje točke tvori bodisi tri (a) bodisi štiri trikotnike (b). Novi robovi niso nujno Delaunayevi, zato takoj sledi postopek legalizacije, kiposkrbi, da je dobljena triangulacija spet Delaunayeva. Po deljenju trikotnika i,j,k(slika 3.7) preverimo robove pi pj , pj pk in pk pi , po deljenju trikotnikov i,j,k in k,l,ipa pi pj , pj pk , pk pl in pl pi . Predstavljeni algoritem za iskanje ustreznega trikotnika uporablja usmerjeniaciklični graf (angl. directed acyclic graph ali DAG), s katerim opišemo časosledživljenja trikotnikov. Označimo ga z D. Notranja vozlišča grafa D predstavljajotrikotnike, ki so obstajali v predhodnih triangulacijah in smo jih tekom vstavljanjatočk razdelili ali uničili, listi pa predstavljajo trikotnike trenutne triangulacije. Vkorenu grafa se nahaja veliki trikotnik, ki predstavlja začetno triangulacijo. Kov trenutno triangulacijo vstavimo novo točko, pričnemo z iskanjem trikotnika, ki
  40. 40. POGLAVJE 3. ALGORITMI DT IN CDT 22ga bomo delili. Z iskanjem pričnemo v korenu D, nato pa nadaljujemo v tistemsinu, ki vsebuje točko. Najden trikotnik se nahaja v listu grafa D. Primer gradnjetriangulacije in grafa D vidimo na slikah 3.8 in 3.9. Zadnji korak na sliki 3.9prikazuje stanje v grafu D ob zamenjavi skupnega roba trikotnikov 4 in 8. Ostane še zadnji korak, v katerem moramo izbrisati vse trikotnike, katerih vsajeno oglišče pripada U . Slika 3.8: Gradnja podatkovne strukture D: 1. del. Slabost algoritma je velika poraba pomnilnika, saj poleg trenutno obstoječih
  41. 41. POGLAVJE 3. ALGORITMI DT IN CDT 23trikotnikov v grafu hranimo vse trikotnike, ki so nekoč obstajali. Učinkovitejše inkrementalne algoritme z uporabo dvonivojske delitve ravnine zaiskanje najbližjega trikotnika sta predstavila Žalik in Kolingerova [91], rešitev zdelitvijo prostora na trakove pa Zadravec in Žalik [87]. Slika 3.9: Gradnja podatkovne strukture D: 2. del.3.2.1.2 Prebirni algoritem FortuneFortune [42] je leta 1987 razvil algoritem za tvorbo Voronoijevega diagrama sprebirno premico, ki dosega časovno zahtevnost O(n log n). Splošno načelo prebirnepremice pravi, da množica podatkov pred premico v smeri gibanja predstavlja šeneobdelane podatke, medtem ko za premico nastaja rezultat. Pri Voronoijevemdiagramu se pojavi problem, saj se robovi, ki pripadajo Voronoijevi celici V (pi ),na prebirni ravnini pojavijo prej, kot prebirna premica doseže ustrezno točko pi .
  42. 42. POGLAVJE 3. ALGORITMI DT IN CDT 24Fortune je problem spretno rešil s preslikavo v 3D prostor tako, da je nad točkenapel stožce in prebirno premico obravnaval kot prebirno ravnino, nagnjeno podkotom 45 ◦ (slika 3.10). Le-ta seka ravnino točk v premici s, ki postane naša prebirnapremica. Algoritem v osnovi ne reši Delaunayeve triangulacije, a ker je le-ta njegovdual (prikazano na sliki 3.5), je preslikava med njima opravljena v linearnem času.Slika 3.10: Predstavitev delovanja algoritma s stožci, postavljenimi nad točkami inprebirno ravnino π. Ker je ravnina nagnjena za enak kot kot stranice stožcev, prebirna premica najdetočko p natanko takrat, ko se prebirna ravnina prvič dotakne stožca, definiraneganad točko p. Presek ravnine s katerim koli stožcem predstavlja parabolo. Presekiravnine z večimi sosednjimi stožci skupaj izrišejo krivuljo paraboličnih odsekov,imenovano tudi spodnja meja paraboličnih odsekov (angl. parabolic front, beachline). Zanimivo je, da se dva sosednja parabolična odseka stikata v točki, ki ležina bisektorju med dvema sosednjima točkama. Potek stičišča opiše Voronoijev rob.Preiskovalna ravnina najprej odkrije Voronoijev rob in šele kasneje točko, ki ta rob
  43. 43. POGLAVJE 3. ALGORITMI DT IN CDT 25definira. Voronoijev diagram je popolno definiran za spodnjo mejo paraboličnihodsekov in ne za s. Jasno je, da je osrednja struktura, ki jo moramo vzdrževati,krivulja paraboličnih odsekov. Algoritem razlikuje med dvema dogodkoma prebirne premice s: • dogodek točke - prebirna premica naleti na točko iz P . Na krivulji paraboličnih odsekov se pojavi nov odsek, ki razdeli enega od odsekov na dva nova (slika 3.11). V trenutku, ko preberemo točko, je presek med ravnino π in stožcem poltrak, ki si ga predstavljamo kot parabolo širine 0. Dogodek pomeni začetek nastajanja novega Voronoijevega roba. • dogodek krožnice - odsek na parabolični krivulji odsekov se skrči v točko in izgine (slika 3.12). Če je βj izginjajoči odsek, sta βj in βk njegova sosednja odseka, tik preden βj izgine. Takšne tri parabole so določene s svojimi točkami pi , pj in pk (slika 3.12a). V trenutku, ko βj izgine, potekajo vse tri parabole skozi skupno točko q. Točka q je enako oddaljena od točk pi , pj in pk , zato obstaja krožnica, ki poteka skozi njih in ima središče v q (slika 3.12b). Najnižja točka krožnice leži na prebirni premici s. Znotraj krožnice ne more obstajati nobena druga točka, saj bi bila razdalja od take točke do q manjša kot razdalja od q do prebirne premice s. Tako je q točka Voronoijevega diagrama. Rezultat dogodka krožnice je torej zaključek Voronoievega roba v Voronoijevi točki. Ko se prebirna premica premakne naprej, presečišče preostalih odsekov βi in βk riše Voronoijev rob (slika 3.12c).3.2.1.3 Prebirni algoritem ŽalikPrebirni algoritem, ki ga bomo izpostavili, je algoritem Delaunayeve triangulacije,ki ga je razvil Žalik [92]. Postopek bomo v tem podpoglavju le orisali, saj je našalgoritem njegova izboljšava in razširitev z omejitvami, ki jo bomo kasneje podrobno
  44. 44. POGLAVJE 3. ALGORITMI DT IN CDT 26 Slika 3.11: Dogodek točke: na krivulji paraboličnih odsekov se pojavi nov odsek.Slika 3.12: Dogodek krožnice: parabolični odsek izgine iz krivulje paraboličnihodsekov.opisali. Pristop je precej drugačen, kot ga je razvil Fortune, čeprav temelji na strategijiprebiranja. Ves postopek poteka na ravnini, kjer točke uredimo po koordinati y,nato pa se z vodoravno prebirno premico premikamo od točke do točke in gradimotrikotniško mrežo. Osnovni gradnik algoritma je napredujoča fronta (angl. advancingfront), ki predstavlja zgornjo mejo triangulacije in mesto, kamor dodajamo novetrikotnike v obstoječo triangulacijo. Spretna implementacija napredujoče fronteomogoča hiter dostop do ustreznega roba fronte, kamor bomo dodali nov trikotnik.Ker je napredujoča fronta tudi edina zahtevnejša struktura, ki jo algoritemuporablja, je algoritem zelo varčen s pomnilnikom in enostaven za implementacijo. Slika 3.13 prikazuje vmesno stanje delovanja algoritma. Zgoraj vidimo
  45. 45. POGLAVJE 3. ALGORITMI DT IN CDT 27napredujočo fronto - mejo triangulacije, kjer se trikotniki dodajajo z napredovanjemprebirne premice s, in spodaj trenutno zgrajen del konveksne lupine, ki jo avtorimenuje spodnja konveksna lupina. Prebirna premica s na sliki 3.13a obišče točko pi .Projekcija točke na napredujočo fronto vrne rob pl pr , s katerim zgradimo trikotnik i,l,r , točko pi pa dodamo v napredujočo fronto (slika 3.13b). Ko prebirna premicaobišče zadnjo točko, s sprehodom po napredujoči fronti in preverjanjem kotov medrobovi napredujoče fronte zgradimo še zgornjo konveksno lupino. Slika 3.13: Primer vstavljanja točke v dano triangulacijo. Eden zahtevnejših korakov je inicializacija, katere cilj je tvorba prvega trikotnika,začetne napredujoče fronte in spodnje konveksne lupine. Ker obstaja verjetnostrazličnih tipov kolinearnosti prvih k točk, je avtor možne situacije razdelil v triskupine konfiguracij, ki so prikazane na sliki 3.14. Zgornji primeri prikazujejo možne
  46. 46. POGLAVJE 3. ALGORITMI DT IN CDT 28situacije pri nekolinearnih začetnih točkah, spodnji pa pri kolinearnih. Obstajajo šezrcalne situacije glede na navpičnico. Slika 3.14: Primeri začetnih konfiguracij v fazi inicializacije. Vstavljanje točke poteka tako, da točki poiščemo najbližji rob fronte, dodamotrikotnik in izvedemo postopek Lawsonove legalizacije, da je pravilu praznega krogavselej zadoščeno. Prav tako se spremeni napredujoča fronta, lahko pa tudi konveksnalupina. Razlikujemo med tremi primeri vstavljanja točke: • Levi primer: pravokotna projekcija točke pade levo od fronte. Vstavljanje zgradi enega ali več trikotnikov, osveži napredujočo fronto in spodnjo konveksno lupino. • Desni primer: pravokotna projekcija točke pade desno od fronte. Izvedemo enako kot za levi primer, le na drugi strani. • Sredinski primer: pravokotna projekcija točke pade na sredino roba fronte ali na točko. Vstavljanje doda enega ali več trikotnikov ter osveži le napredujočo
  47. 47. POGLAVJE 3. ALGORITMI DT IN CDT 29 fronto. V primeru vodoravnega roba fronte lahko vstavljena točka pade neposredno nanj. V tem primeru priležni trikotnik razdelimo na dva. Napredujoča fronta je enodimenzionalna podatkovna struktura, ki služipredstavitvi meje triangulacije in hitremu iskanju. Zaželeno je, da se fronta čimbolj prilega prebirni premici oz. da je čim bolj gladka, saj je takrat najboljučinkovita. Zato algoritem razpolaga z dvema hevrističnima funkcijama, ki skrbitaza njeno glajenje. Izkaže se namreč, da zaradi neenakomerne porazdelitve podatkovprihaja do situacij, kjer deli fronte ostanejo daleč za prebirno premico. Hitroodpravljanje takšnih situacij odpravlja prva hevristika, ki ob vstavitvi trikotnikapreverja kote med sosednjimi robovi fronte in v primeru, da je vmesni kot manjši odπ/2 (slika 3.15a), vstavi dodaten trikotnik (slika 3.15b). Preverjanje kotov poteka vobeh smereh, levo in desno od vstavljene točke, in se ustavi takoj, ko je vmesni kotvečji od π/2 (slika 3.15c).Slika 3.15: Prva hevristika preveri kot s sosednjim robom fronte (a) in vstavi novtrikotnik (b) ter nadaljuje, dokler je kot < π/2 (c). Kljub temu se lahko zgodi, da nastanejo korita oz. globeli, ki jih s prvo hevristikone moremo zaznati in odpraviti. Za to poskrbi druga hevristika, ki takšne globeli
  48. 48. POGLAVJE 3. ALGORITMI DT IN CDT 30 pi Slika 3.16: Druga hevristika odkrije korita (a) in jih zapolni s trikotniki (b).pravočasno odkrije in jih zapolni s trikotniki. Pregledovanje enako kot pri prvihevristiki poteka v smereh levo in desno od vstavljene točke. Slika 3.16a prikazujesituacijo, ko smo vstavili točko pi . Nato vzamemo naslednjo točko na fronti v desnismeri pr in še njeno desno sosedo pr+ . Če je naklon premice, ki poteka skozi piin pr+ manjši od 3/4π, smo našli korito. Koritu poiščemo levi in desni rob terdno (na sliki 3.16b predstavlja levi rob točka pr+ , desni rob točka pa in dno pb ).Območje trianguliramo, pri tem pa seveda upoštevamo Delaunayevo pravilo. Nakoncu osvežimo napredujočo fronto in postopek je končan. Meritve so pokazale, da s pomočjo hevristik algoritem bistveno pohitrimo, sajzmanjšamo število menjav pri legalizaciji. Algoritem dosega časovno zahtevnost
  49. 49. POGLAVJE 3. ALGORITMI DT IN CDT 31O(n log n) in je skoraj neodvisen od porazdelitve podatkov [92].3.3 Omejena Delaunayeva triangulacijaDelaunayevo triangulacijo je možno razširiti tako, da vhodna množica vsebuje tudidaljice. Ta problem so v računalniški geometriji poimenovali omejena Delaunayevatriangulacija (angl. constrained Delaunay triangulation ali CDT). Z upoštevanjemdaljic, ki kasneje postanejo robovi triangulacije, rezultat ni več Delaunayevatriangulacija, ampak triangulacija, ki je Delaunayevi kolikor se le da blizu. To jipreprečujejo ravno daljice, ki jih zaradi tega, ker predstavljajo omejitve, imenujemoomejujoči robovi (angl. constraining edges). Velika uporabnost CDT se je pokazalapri načrtovanju poti [20, 54, 55, 84], pri metodi končnih elementov [45] in vGIS [1, 52, 72]. Vhodno množico predstavimo kot ravninski premočrtni graf G = {P, Ec } (angl.planar straight-line graph ali PSLG), kjer je P množica točk in Ec množicaomejujočih robov. Zahtevamo, da so oglišča robov Ec zastopana v P . Razlikomed Delaunayevo in omejeno Delaunayevo triangulacijo prikazuje slika 3.17. Četrianguliramo samo točke iz P , dobimo Delaunayevo triangulacijo. NekateriDelaunayevi robovi triangulacije lahko sekajo omejujoče robove Ec (slika 3.17b).Če množica robov Ec predstavlja tudi robove triangulacije, dobimo omejenoDelaunayevo triangulacijo (slika 3.17c). Vpeljimo pojem vidnosti (angl. visibility), ki pravi, da sta točki pi in pjmedsebojno vidni, če povezava med njima ne seka nobenega roba iz Ec in če točkipi in pj ne predstavljata oglišč roba iz Ec . Če pogledamo sliko 3.18a, vidimo, da trikotnik t krši klasično Delaunayevopravilo. V takem primeru bi zamenjali rob e z e , vendar tega ne bomo storili,saj rob e predstavlja omejitev. Točki pi in pl sta medsebojno vidni, prav tako tudi
  50. 50. POGLAVJE 3. ALGORITMI DT IN CDT 32Slika 3.17: Vhodni ravninski graf (a), Delaunayeva (b) in omejena Delaunayevatriangulacija (c).točki pj in pl , med pk in pl pa vidnost ne velja. Legalizacija zamenja rob pj pk zrobom pi pm (slika 3.18b). Ker Delaunayevo pravilo ne upošteva robov iz Ec , pravilo praznega krogarazširimo z vidnostjo in ga poimenujemo šibko Delaunayevo pravilo. Tako sedefinicija omejene Delaunayeve triangulacije glasi: Omejena Delaunayeva triangulacija ali CDT nad ravninskim grafom G ={P, Ec } je takšna triangulacija, ki vsebuje vse robove iz Ec in velja, da očrtan krog
  51. 51. POGLAVJE 3. ALGORITMI DT IN CDT 33 Slika 3.18: CDT , vidnost in legalizacija.trikotnika t v triangulaciji ne vsebuje točke iz P , ki je vidna iz vseh oglišč trikotnikat. Pokažimo še, da je Delaunayeva triangulacija le specifičen primer omejeneDelaunayeve triangulacije. Omejena Delaunayeva triangulacija nad grafom G jeDelaunayeva triangulacija, kadar je množica Ec prazna. Torej, DT (G) = CDT (G),ko je Ec prazna množica. Enačaj velja tudi takrat, kadar so vsi robovi iz EcDelaunayevi.3.3.1 Algoritmi omejene Delaunayeve triangulacijeZaradi vse večjih zahtev v inženirstvu se je razvila nova veja algoritmov, ki sozmožni triangulirati velike množice podatkov. Podatki se hranijo na disku, od tampa jih je potrebno prenesti v delovni pomnilnik, zato ti algoritmi namenjajo večjopozornost optimizaciji prenosa podatkov med diskom in pomnilnikom [1, 52]. Mi
  52. 52. POGLAVJE 3. ALGORITMI DT IN CDT 34se bomo osredotočili izključno na način tvorbe omejene Delaunayeve triangulacije,kjer bomo predpostavili, da velikosti delovnega pomnilnika ne predstavlja omejitve.Omejeno Delaunayevo triangulacijo lahko zgradimo na dva načina: • dvokoračni postopki zgradijo CDT (G) v dveh korakih, kjer je prvi korak DT (P ), vstavljanje robov Ec pa predstavlja drugi korak; • enokoračni postopki zgradijo CDT (G) v enem koraku, tako da hkrati upoštevajo celoten graf G, torej točke P in robove Ec .3.3.2 Dvokoračni postopki CDTDvokoračni postopek je preprostejši, saj se pri tvorbi CDT (G) osredotočimo lena problem vstavljanja robov v triangulacijo, ki smo jo dobili v prvem koraku.Tako lahko za izgradnjo DT (P ) izberemo katerikoli algoritem navadne Delaunayevetriangulacije, ki smo jih opisali v predhodnem poglavju.3.3.2.1 Vstavljanje robovV drugem koraku v dobljeno DT (P ) vstavimo vse omejujoče robove iz Ec . Za vsakrob e ∈ Ec moramo poiskati njegovi oglišči, nato pa območje ob robu e predelati tako,da bo e postal del končne CDT (G). Oglišči lahko najdemo s pomočjo podatkovnihstruktur, ki jih je uporabljal algoritem za DT . Iskalne strukture potrebujemoza iskanje bodisi najbližjih točk, robov ali trikotnikov v triangulaciji bodisi zaiskanje oglišč pri vstavljanju robov. Med njimi najdemo dvojiška drevesa (drevoAVL, rdeče-črno drevo, drevo k-D), sekljalne tabele (angl. hash-table), sezname spreskakovanjem (angl. skip-list), usmerjene grafe ter enakomerne delitve prostora. Predelava naključnega inkrementalnega algoritma, ki za iskanje trikotnikovuporablja DAG, je smiselna, če DAG uporabimo tudi za iskanje oglišč ob vstavljanjurobov. Alternativna rešitev bi bila, če bi iz množice točk P odstranili vse tiste točke,
  53. 53. POGLAVJE 3. ALGORITMI DT IN CDT 35ki predstavljajo oglišča robov iz Ec (množico teh točk označimo s Pc ⊆ P ) in bi vprvem koraku zgradili DT (P − Pc ). Drugi korak bi najprej vstavil oglišči roba e insi zapomnil položaj oglišč, nato pa bi prešel na spreminjanje triangulacije tako, dabi rob e pravilno umestil v triangulacijo. Včasih algoritmi za DT ne gradijo takšnih podatkovnih struktur, ki bi bileprimerne za uporabo v drugem koraku. Takrat imamo na voljo več možnosti. Enaje ta, da algoritem DT dopolnimo z gradnjo iskalne podatkovne strukture. Drugamožnost je, da iskalno podatkovno strukturo zgradimo pred izvajanjem algoritmaDT ali po njem. A ker lahko vpeljava dodatnih podatkovnih struktur pomnilniškopreobremeni postopek, obstaja še tretja možnost. Ta za iskanje oglišč ali trikotnikovpotrebuje le triangulacijo in sosednostne povezave med trikotniki. Iskalne algoritme,ki znotraj triangulacije iščejo točke ali trikotnike, imenujemo algoritmi korakanja potriangulaciji (angl. walking algorithms) [25, 58].3.3.2.2 Vstavljanje robov z brisanjemNaj bo e omejujoč rob, ki ga vstavljamo med oglišči pa in pb v obstoječo triangulacijo.Rob e preseka množico robov, zato je te robove (vključno s trikotniki) potrebnoodstraniti. Vsi robovi, ki jih rob e ni sekal, ostanejo v triangulaciji, saj zadostijošibkemu Delaunayevemu pravilu. Območje ob robu, imenovano tudi regija vplivaroba e, označimo z Re . Regija Re vsebuje vse robove in trikotnike, ki jih moramozbrisati. Po brisanju rob e regijo Re razdeli v dve podregiji, ki se stikata z robome. Regiji levo in desno od roba e označimo s Qe,L in Qe,R , če na e gledamo kotna usmerjen rob od pa do pb (slika 3.19). Qe,R in Qe,L nista nujno preprostamnogokotnika (mnogokotnik Qe,L na sliki 3.19b vsebuje rob, ki ni povezan zobema ogliščema). Vsako regijo trianguliramo posebej, zato je dovolj, da postopekrazložimo le za regijo Qe,L . Ko imamo triangulaciji obeh regij Qe,L in Qe,R , medsabo povežemo še trikotnika obeh regij, ki ležita ob robu e.
  54. 54. POGLAVJE 3. ALGORITMI DT IN CDT 36Slika 3.19: Vstavljajoč rob e in regija vpliva Re roba e (a) ter mnogokotnika Qe,L inQe,R (b). S trianguliranjem mnogokotnika pričnemo tako, da skozi pa in pb napnemokrožnico (slika 3.20a). Nato se pomikamo od roba e proti točkam regije Qe,L , doklerne najdemo točke p, ki zadosti Delaunayevemu pravilu. S točko p tvorimo novarobova pa p in ppb , ki ju vstavimo v CDT , točki pa in pb pa izbrišemo iz Qe,L(slika 3.20b). Enak postopek rekurzivno ponovimo za oba nova robova. Točke piščemo le med preostalimi točkami regije Qe,L . Postopek ponavljamo, dokler Qe,Lvsebuje točke (slika 3.20c). Enako storimo za Qe,R , kar vrne triangulacijo celotneregije Re (slika 3.20d).3.3.2.3 Vstavljanje robov z zamenjavamiOpišimo še drugo varianto vstavljanja robov, ki so jo predstavili Dyn, Goren inRippa [29]. Pokazali so, da je katerokoli triangulacijo nad množico točk znotrajmnogokotniške domene možno pretvoriti v katerokoli drugo triangulacijo nad istomnožico točk le z zamenjavami robov. Mnogokotniška domena je spet Re , ki josestavljata Qe,L in Qe,R . Algoritem se sestoji iz dveh glavnih korakov: 1. Procedura menjave vseh robov, ki so presekani z e, poskrbi, da je rob e del nove triangulacije, ki ni nujno CDT.
  55. 55. POGLAVJE 3. ALGORITMI DT IN CDT 37Slika 3.20: Triangulacija levega mnogokotnika Qe,L (a-c) in triangulacija desnegamnogokotnika (d). 2. Lawsonova lokalna legalizacija zagotovi, da je v vsakem trenutku zadoščeno Delaunayevemu pravilu, vendar le znotraj posamezne podregije Qe,L oz. Qe,R . Korak 1 zamenjuje robove v Re postopoma, dokler rob e ni vključen vtriangulacijo. Točke med pa in pb označimo s pi , tako da levi mnogokotnik Qe,Lopišemo z množico oglišč {pa , p1 , p2 , ..., pn , pb }. Postopek razložimo za primer, kjer vQe,L nastopa rob s prostim ogliščem (oglišča si ne deli z drugim robom). Zaporedjepi opiše zanko. Tako lahko več parov {pl , pk } vsebuje isto točko iz Qe,L (v našemprimeru {p2 , p4 })). Za takšne mnogokotnike pravimo, da so večkratno povezani.Vsakemu pi pripada natanko en notranji kot αi . Za vsak rob, ki je bil menjan,velja, da je sekal omejujoč rob e in da sta njegovi oglišči ležali na nasprotnih straneh
  56. 56. POGLAVJE 3. ALGORITMI DT IN CDT 38roba e (pripadali sta torej Qe,L in Qe,R ). Za vsak zamenjan rob pa morajo veljatipogoji zamenjave, kar pomeni, da rob predstavlja diagonalo konveksnega štirikotnika(notranji koti ob ogliščih štirikotnika ob diagonali morajo biti manjši od π).Med robovi, ki sekajo e, zmeraj obstaja rob, ki ga je možno zamenjati. Torejvedno obstaja oglišče pm v Qe,L , kjer je kot αm < π. Obstaja tudi vsaj en robizhajajoč iz pm , ki seka e z drugim krajiščem v Qe,R , čigar notranji kot je manjšiod π. Postopek orišemo na sliki 3.21. Zanka Qe,L predstavlja zaporedje {p2 , p3 , p4 }.Najprej odstranimo točko p1 (slika 3.21b). S postopkom nadaljujemo, dokler namne ostane le še en rob, ki ga je potrebno zamenjati. Rezultat zadnje menjave je robe, ki postane rob omejene Delaunayeve triangulacije (slika 3.21c).Slika 3.21: Prikaz vstavljanja in zamenjav robov. Odstranitev točke p1 (b) zamenjavazadnjega roba (c).
  57. 57. POGLAVJE 3. ALGORITMI DT IN CDT 393.3.3 Enokoračni algoritmi CDTPri snovanju enokoračnih algoritmov sproti razmišljamo o načinu vstavljanja robovin točk. Enokoračni algoritmi [22, 68, 85] so redkejši od dvokoračnih, saj so velikokratdvokoračne rešitve preprostejše in dovolj dobre.3.3.3.1 Algoritem CDT ChewAlgoritem, ki ga bomo opisali, je predstavil Chew [22]. Predpostavljamo, da se grafG nahaja znotraj pravokotnika (grafu le očrtamo oklepajoči pravokotnik). Točkeuredimo v naraščajočem vrstnem redu po koordinati x in pravokotnik razdelimo nanavpične trakove tako, da se v vsakem traku nahaja natanko ena točka. Primerdelitve prikazuje slika 3.22, kjer smo zaradi lažje predstave pravokotnik razdelili naenakomerne trakove (širina trakov zavisi od porazdelitve točk). Če med vhodnimipodatki najdemo vsaj dve točki z enako koordinato x, delitev ni izvedljiva, zatoavtor v takih situacijah predlaga zasuk grafa. Do rešitve pridemo tako, da za vsaktrak posebej izračunamo omejeno Delaunayevo triangulacijo, nato sosednje trakovemed seboj združujemo in računamo njuno skupno triangulacijo, dokler ne zgradimoomejene Delaunayeve triangulacije nad celotnim G. Časovna zahtevnost postopkaje O(n log n). Slika 3.22: Razdelitev prostora na trakove, v vsak trak po ena točka.
  58. 58. POGLAVJE 3. ALGORITMI DT IN CDT 40 Ker prostor delimo glede na točke, razdelimo vse robove Ec , tako da se v trakovihnahajajo le delni robovi. Zato bi morali za vsak trak poleg točke hraniti tudi vsedelne robove, ki potekajo skozi trak, kar bi v primeru dolgih robov in velikegaštevila trakov zasedlo veliko pomnilnika. Prekomernemu hranjenju se izognemo, četrakove razdelimo na regije, kjer vsako omejimo s parom delnih robov. Tako lahkovodimo informacije le za tiste regije, ki v svoji notranjosti hranijo točke oz. delnetriangulacije. Primer traka prikazuje slika 3.23a, razdelitev v regije pa vidimo nasliki 3.23b. Regije, ki jih vodimo, so obarvane z belo. (a) (b) Slika 3.23: Ponazoritev traku brez triangulacije (a) in razdelitev v regije (b).Robove Ec delimo v tri skupine glede na odnos s trakom : • robovi, ki povsem ležijo v traku, • robovi, ki imajo v traku le eno oglišče in • robovi, ki trak presekajo iz leve in desne strani. Slednjih večinoma ne hranimo. Avtor jih imenuje križni robovi (angl. cross-edges). Hranimo samo tiste regije, ki vsebujejo vsaj eno točko. Imenujemo jih
  59. 59. POGLAVJE 3. ALGORITMI DT IN CDT 41točkovne regije. Algoritem se ukvarja s tremi bistvenimi vprašanji: • kako upravljati s točkovnimi regijami, • kako regije združevati ter • kako zliti dve sosednji CDT pri združitvi trakov. Začetne regije ustvarimo v fazi inicializacije in vsebujejo natanko eno točko. Zato potrebujemo informacije o najbližjem zgornjem in spodnjem robu (ta robova stav najslabšem primeru robova začetnega pravokotnika). Najbližje robove poiščemo včasu O(n log n) s pomočjo prebiranja v vodoravni smeri. Ob vračanju sosednja trakova združimo tako, da zlijemo njune regije. Po obehtrakovih se sprehodimo od zgoraj navzdol. Regijo v zlitem traku pričnemo tvorititakrat, ko vsaj eden izmed trakov, ki ju združujemo, vsebuje točkovno regijo. Stvorbo nove regije zaključimo, ko nobeden od trakov ne vsebuje več točkovne regije.Slika 3.24 prikazuje primer združitve regij. Na levi vidimo stanje pred in na desnistanje po združitvi. Ko imamo novo regijo, nam preostane še izračun skupne CDT. Metoda jepodobna metodi za izgradnjo klasične DT, ki sta jo predlagala Lee in Schachter [61].Pojavi se vprašanje, kje v posameznih triangulacijah pričeti z združevanjem. Avtorvpelje štiri pomožne neskončne točke (±∞, ±∞), ki jih postavimo v vogale vsaketočkovne regije (prazne točke na sliki 3.23). Točke so dejansko v neskončnosti,vendar si jih za lažje razumevanje predstavljajmo v vogalih regije. Neskončne točkeposamezne regije lahko geometrijsko sovpadajo s točkami sosednje regije, vendarnimajo medsebojnega vpliva - vsaka regija ima svoje točke. Kadarkoli želimo posečiv triangulacijo regije, za začetno točko uporabimo neskončno točko.
  60. 60. POGLAVJE 3. ALGORITMI DT IN CDT 42 (a) (b) Slika 3.24: Združitev dveh regij Velja, če iz obstoječe regije odstranimo vse neskončne točke in iz njih izhajajočerobove, preostale točke in robovi regije tvorijo CDT. Naj bosta B1 in B2 sosednja trakova, ki ju zlijemo v trak B in naj bo T CDTtraka B. Trakova B1 in B2 vsebujeta vsak svojo CDT (T1 in T2 ), ki se ob zlitju vB spremenita. Če je rob e Delaunayev rob v T in sta obe oglišči v B1 , potem je eDelaunayev rob T v B1 . Združevanje triangulacij T1 in T2 napravimo v treh korakih: 1. Ob meji med trakoma odstranimo neskončne točke, tako da dobimo delno CDT v vsaki polovici. S točkami vred odstranimo tudi vse iz njih izhajajoče robove (tudi Delaunayeve, a ne omejujočih). Neskončne točke nato dodamo v vse štiri vogale nove regije, kjer jih še ni. Edini robovi, ki jih moramo dodati, so robovi, ki sekajo mejo med trakoma. 2. Delne triangulacije zlepimo. 3. Odstranimo vse neskončne točke, ki niso vogalne. Slika 3.25 prikazuje primer CDT od začetka do konca. Na sliki (a) vidimo začetnorazdelitev na 8 trakov, kjer je v vsakem po ena regija s točko. Nato po dva in dvasososednja trakova združimo (b), tako da nam ostanejo le 4 regije, nato 2 (c) in nakoncu dobimo 1 regijo in končno CDT (d).
  61. 61. POGLAVJE 3. ALGORITMI DT IN CDT 43 (a) (b) (c) (d) Slika 3.25: Združevanje in povezovanje ob vračanju. Izboljšavo algoritma je predstavil Moreau [68]. Izognil se je potencialnemuzasuku vhodnega grafa in izboljšal zlivanje trakov, algoritem pa je tako primerentudi za triangulacijo mnogokotnikov.
  62. 62. Poglavje 4Prebirni algoritem omejeneDelaunayeve triangulacijeV tem poglavju bomo predstavili naš pristop za tvorbo omejene Delaunayevetriangulacije s prebirno premico. Algoritem je posplošitev in delna izboljšavaprebirnega algoritma za Delaunayevo triangulacijo, ki ga je predstavil Žalik [92].Njegov algoritem DT se je izkazal za zelo učinkovitega pri različnih porazdelitvahtočk, ponaša pa se tudi z majhno porabo pomnilnika in doseganjem zavidljivo nizkihizvajalnih časov. Kot takšen predstavlja izziv za številne razširitve, saj se s tempoveča njegova uporabnost. Vprašljivo pa je, ali je možno algoritem posplošiti zaproblem omejene Delaunayeve triangulacije tako, da bi ohranili njegovo učinkovitost.Zanima nas, kako vpeljati postopek vstavljanja robov, kjer sta bistveni vprašanji,kdaj in kako vstavljati. Rešitev, ki jo predlagamo, je nekakšna kombinacija medeno- in dvokoračnim algoritmom CDT. Postopek uporablja paradigmo prebiranja zuporabo napredujoče fronte. Algoritem bomo opisali v vrstnem redu izvajanja: • inicializacija, • prebiranje in • finalizacija. 44
  63. 63. POGLAVJE 4. PREBIRNI ALGORITEM CDT 454.1 InicializacijaStalen strošek prebirnih algoritmov je faza inicializacije, katere osnovna naloga jepriprava podatkov tako, da algoritem lahko prične s prebiranjem. Obvezen korakje ureditev geometrijskih objektov glede na izbran način prebiranja. Pri nas greza drsenje prebirne premice po ravnini, zato je najenostavneje, če točke uredimonaraščajoče v smeri ene izmed koordinatnih osi (v našem primeru smo izbralikoordinato y). A ker omejena Delaunayeva triangulacija poleg množice točk navhodu prejme še množico vnaprej definiranih robov oz. ravninski graf G = {P, Ec },moramo pri urejanju točk paziti, da ohranimo prvotne robove. Gre za povsemimplementacijski problem, saj so robovi zaradi varčnosti prostora na disku podanis parom oglišč, ki hranijo položaj točke v P . Pri urejanju točk le-te "premečemo",zato moramo s preprosto preslikavo po ali med urejanjem točk osvežiti tudi roboveEc , da ohranimo prvotno sliko. Vsak rob iz Ec je definiran kot eij = pi pj , kjer sta pi ,pj ∈ P . Zaradi praktičnegarazloga robove usmerimo, tako da je oglišče roba, ki ga prebirna premica obišče prej,pri poimenovanju na prvem mestu, oglišče roba, ki ga premica obišče kasneje, pa nadrugem mestu. Točko pi imenujemo začetna točka roba in točko pj končna točka.Če imamo opravka z vodoravnim robom, za začetno oglišče vzamemo tisto, kateretočka ima manjšo koordinato x. Za rob pi pj velja: yi < yj ali yi = yj in xi < xj . Pri pripravi podatkov vsaki točki pi priredimo množico robov Ei , ki vsebuje vsetiste robove, ki se končajo v točki pi (pi je končna točka roba, torej vse roboveoblike px pi , kjer je x indeks začetne točke). Poglejmo primer na sliki 4.1. Točka p0predstavlja začetno oglišče robov e0,5 in e0,8 . Ker se p0 nikjer ne pojavi kot končnooglišče, je njena E0 ={}. Prazne so tudi množice E1 , E2 , E4 in E6 . Nasprotno velja zatočke p3 (E3 ={e1,3 , e2,3 }), p5 (E5 ={e0,5 }), p7 (E7 ={e5,7 ,e6,7 }) in p8 (E8 ={e0,8 ,e5,8 }).
  64. 64. POGLAVJE 4. PREBIRNI ALGORITEM CDT 46 Slika 4.1: Točke in robovi po urejanju v fazi inicializacije. Zadnji korak inicializacije prebirnega algoritma za navadno DT v faziinicializacije ustvari še prvi trikotnik, s katerim zgradi začetno napredujočo fronto inzačetno spodnjo konveksno lupino. Glede na položaj prvih k točk (k ≥ 3) je možnihveč začetnih konfiguracij, ki so prikazane v prejšnjem poglavju (slika 3.14). Če si obvseh teh primerih poskušamo predstavljati še robove, je različnih situacij še velikoveč. Zato uvedemo rešitev, ki spretno zaobide inicializacijsko raznovrstnost tako, davpeljemo umetni začetni trikotnik, kot kaže slika 4.2. Ustvarimo dve umetni točkip−1 in p−2 , ki ležita levo oz. desno od skrajne leve oz. skrajne desne točke iz množiceP , njuna koordinata y pa je manjša od najnižje točke p0 . Koordinate določimo ponaslednji formuli: p−1 = (xmin − δx , ymin − δy ) p−2 = (xmax + δx , ymin − δy ) δx = 0.3(xmax − xmin ) δy = 0.3(ymax − ymin )
  65. 65. POGLAVJE 4. PREBIRNI ALGORITEM CDT 47 Slika 4.2: Tvorba velikega trikotnika. Umetni trikotnik se tekom triangulacije ne spreminja, saj algoritem legalizacije,ki ga uporabljamo za vzdrževanje Delaunayevega pravila v fazi prebiranja, v umetnitrikotnik ne poseže. Tudi vse trikotnike, ki jih tvorimo s pomočjo umetnih točkp−1 in p−2 , v legalizaciji preskočimo. Z umetnim trikotnikom na enostaven in vselejenak način tvorimo začetno napredujočo fronto F = {p−1 , p0 , p−2 }. Na ta načinsmo potencialno obravnavno zaporedja kolinearnih točk prenesli v fazo prebiranja,kjer niso deležne posebne pozornosti. Z vpeljavo začetnega umetnega trikotnikapridobimo tudi pri prebiranju, saj se zmanjša število različnih obravnav točke. Z uvedbo velikega začetnega trikotnika tudi nekoliko izgubimo, ker ne gradimospodnje konveksne lupine, vendar so rezultati pokazali, da je ta strošek zanemarljiv.4.2 PrebiranjeOsrednji del algoritma predstavlja prebiranje oz. drsenje prebirne premice po ravniniv smeri naraščanja koordinate y. Na svoji poti naleti na dve vrsti dogodkov: • dogodek točke nastopi takrat, ko se premica dotakne točke pi (s točko pi ustvarimo nov trikotnik in ga dodamo v triangulacijo); • dogodek roba nastopi takrat, ko se premica dotakne točke pj , kjer pj
  66. 66. POGLAVJE 4. PREBIRNI ALGORITEM CDT 48 predstavlja končno točko roba pi pj (triangulacijo preuredimo tako, da rob pi pj predstavlja stranico trikotnikov triangulacije). Dogodka sta med seboj povezana. Vsak dogodek roba je hkrati dogodek točke,obratna implikacija ne velja. Pravimo, da dogodek roba sledi dogodku točke, četočka predstavlja končno točko oglišča roba, sicer gre le za navaden dogodek točke. Izpis 3 prikazuje ogrodje prebiranja. Glavna zanka obravnava dogodke točk, kjerv trenutno triangulacijo T vstavimo obiskano točko pi . Nato preverimo, če je točkipi pripadajoč seznam robov Ei prazen. Če ni prazen, notranja zanka poskrbi, daobravnavamo vsak rob e ∈ Ei . Ko v triangulacijo T vstavimo vse robove točke pi ,izvedemo še hevristiki za glajenje napredujoče fronte.Izpis 3 Ogrodje prebirnega algoritma za CDTprocedure Prebiranje(P) for i := 1 to size(P ) do pi = P [i]; T := VstaviTočko(pi , T ); if size(Ei ) > 0 then for j := 1 to size(Ei ) do e := Ei [j]; T := VstaviRob(e, T ); IzvediHevristiko1(); IzvediHevristiko2(); Preden nadaljujemo z natančnim opisom postopkov vstavljanja točk in robov, sipoglejmo lastnosti in implementacijo napredujoče fronte.
  67. 67. POGLAVJE 4. PREBIRNI ALGORITEM CDT 494.2.1 Napredujoča fronta in podatkovne struktureNapredujoča fronta (krajše fronta) F predstavlja zgornjo mejo trenutne triangulacijein s tem mesto dodajanja novih trikotnikov. Njena osnovna naloga je, davstavljajoči točki poišče najbližje ležeči rob, s katerim bomo zgradili nov trikotnik.Geometrijska oblika fronte je lomljenka, sestavljena iz robov mejnih trikotnikov(slika 4.3). Trikotniške robove, ki ležijo na napredujoči fronti, imenujemo rob fronte,točkam pa pravimo točke fronte. Fronta omogoča dostop do mejnih trikotnikov,ki jih potrebujemo pri vzdrževanju sosednostnih povezav vstavljenih trikotnikov strikotniki ob fronti. Napredujoča fronta je enodimenzionalna podatkovna struktura, katere ključiskanja je koordinata x, ki se skriva znotraj točke pi (slika 4.3). Točke fronteso urejene, kar je idealno za hitro iskanje. Vsaka točka fronte hrani dva osnovnapodatka, to sta oglišče fronte, ki predstavlja točko pi , in trikotnik ti , ležeč ob robufronte pi pi+1 . Tako imamo dovolj informacij, da lahko tvorimo nov trikotnik in gapovežemo z ustreznim trikotnikom dane triangulacije. Puščice na sliki predstavljajokazalec na trikotnik, ležeč ob robu fronte (trikotnik ti na sliki). Ko v fronto vstavimonovo točko p, najprej poiščemo rob fronte tako, da vstavljajoči točki poiščemonajbližjo točko pc , s pomočjo katere najdemo rob fronte (to je lahko bodisi robpc−1 pc bodisi ec,c+1 . Z novim trikotnikom fronto osvežimo, zato moramo obveznoosvežiti kazalce na trikotnike. Ker pri iskanju uporabimo le koordinato x točke p,govorimo o projekciji točke p na fronto. Žalik je fronto implementiral kot kombinacijo sekljalne tabele in dvojnopovezanega dinamičnega seznama, ki jo je poimenoval preprost seznam spreskakovanjem (angl. simple skip-list). Takšno implementacijo smo izbrali tudimi. Alternativa je uporaba uravnoteženih dvojiških iskalnih dreves, kot sta drevoAVL ali rdeče-črno drevo ali ena izmed izvedb seznamov s preskakovanjem. Njihovo
  68. 68. POGLAVJE 4. PREBIRNI ALGORITEM CDT 50 Slika 4.3: Napredujoča fronta in osnovni nivo podatkovne strukture.uporabnost je pokazal Zadravec s sodelavci [87, 88].4.2.2 Dogodek točkeOb dogodku točke z iskanjem v podatkovni strukturi napredujoče fronte poiščemoustrezen rob fronte. Projekcija točke pi lahko pade na različne dele fronte, situacijeso naslednje [92]: • Sredinski primer: projekcija točke pi pade na rob fronte; • Levi primer: projekcija točke pi pade na točko fronte; • Robni primer: gre za posebno situacijo sredinskega primera. Točka pi se nahaja na robu fronte. Sredinski primer (slika 4.4a) obravnavamo tako, da zgradimo nov trikotnik l,r,i(slika 4.4b) in osvežimo fronto tako, da vsebuje vstavljeno točko pi . Osvežimo tudikazalec na trikotnik v točki pl . Da zadostimo Delaunayevemu pravilu, pokličemopostopek legalizacije (slika 4.4c). Levi primer (slika 4.5a) obravnava situacijo, kjer projekcija točke pi pade natočko fronte. Ker vemo, da bo hevristika (opisana v nadaljevanju) zgradila dodaten
  69. 69. POGLAVJE 4. PREBIRNI ALGORITEM CDT 51trikotnik, lahko to storimo že zdaj. Zgradimo dva nova trikotnika l−,l,i in l,r,i(slika 4.5b). Točko pl bi sicer morali odstraniti iz fronte, a je hitreje, če točko pl lezamenjamo s točko pi ter osvežimo kazalec na trikotnik v točki pl− . Za oba novatrikotnika pokličemo legalizacijo.Robni primer, kjer točka pi leži neposredno na robu fronte, razdelimo, točko pi pavstavimo v fronto. Pri algoritmu klasične DT moramo obravnavati tudi situaciji, kjer projekcijatočke pi zgreši napredujočo fronto (pade levo oz. desno od F). Omenjeni situacijiza razliko od zgoraj naštetih zahtevata večji poseg v podatkovne strukture, sajvstavljanje točke spremeni tako napredujočo fronto kot tudi spodnjo konveksnolupino. Zaradi vpeljave začetnega umetnega trikotnika se situacijama izognemo.Umetni trikotnik namreč zagotavlja, da vsaka projekcija fronto vselej zadene. Po končanem vstavljanju pokličemo hevristični funkciji za preprečevanjenastajanja zarez in globeli. Postopek je enak kot v prebirnem algoritmu DT (glejpodpoglavje 3.2.1.3 in [92]).4.2.3 Dogodek robaDogodek roba poskrbi, da v triangulacijo na zahtevano mesto vstavimo vseomejujoče robove. Dogodek roba sledi dogodku točke pi , če seznam robov točkeEi ni prazen. Točka pi je torej končna točka enega ali več omejujočih robov ex,i =px pi , kjer px predstavlja začetno točko poljubnega roba iz Ei (takšen primer vidimona sliki 4.7). Če imamo opravka z vstavljanjem več robov hkrati, robove vstavimoenega za drugim. Vstavljajoč rob bomo zaradi preglednosti označili z e, njegovozačetno oglišče pa naj predstavlja točka pj (e =pj pi ). Zaradi različnih preverjanjvpeljemo vektor − , ki je obrnjen v nasprotni smeri roba e in ga definiramo kot → ve→ = pj − pi .−ve

×