Fakulteta za elektrotehniko,

Velikost: px
Začni prikazovanje s strani:

Download "Fakulteta za elektrotehniko,"

Transkripcija

1 INŠTITUT ZA RAČUNALNIŠTVO Doktorska disertacija APROKSIMACIJSKI ALGORITEM GRADNJE SREDNJE OSI ENOSTAVNIH MNOGOKOTNIKOV, TEMELJEČ NA OMEJENI DELA- UNAYEVI TRIANGULACIJI Maribor, maj 2014 Gregor Smogavec Mentor: red. prof. dr. Borut Žalik

2

3 Avtor: Gregor Smogavec Naslov: Aproksimacijski algoritem gradnje srednje osi enostavnih mnogokotnikov, temelječ na omejeni Delaunayjevi triangulaciji UDK: (043.3) Ključne besede: računalniška geometrija, algoritmi, skeleton, srednja os, omejena Delaunayjeva triangulacija, Steinerjeve točke Število izvodov: 10 Oblikovanje: Gregor Smogavec Tisk: Laboratorij za geometrijsko modeliranje in algoritme Vezava: KNJIGOVEZNICA BERTONCELJ, Irena Bertoncelj s.p., Koroška cesta 47, 2000 Maribor Lektor: doc. dr. Darinka Verdonik I

4 ZAHVALA Zahvaljujem se vsem, ki so mi pri nastajanju moje doktorske disertacije pomagali in me motivirali. Predvsem pa se za strokovno pomoč in usmerjanje zahvaljujem svojemu mentorju, red. prof. dr. Borutu Žaliku. II

5

6

7 III

8 Kazalo SEZNAM SLIK... VI SEZNAM TABEL... IX SEZNAM KRATIC IN POJMOV... X SEZNAM OZNAK... XI POVZETEK:... XIII ABSTRACT:...XIV IV 1 UVOD Opredelitev problema Cilji Struktura disertacije VORONOIJEV DIAGRAM IN DELAUNAYJEVA TRIANGULACIJA OMEJENA DELAUNAYJEVA TRIANGULACIJA PREGLED OBSTOJEČIH METOD ZA KONSTRUKCIJO SREDNJE OSI MNOGOKOTNIKOV Eksaktna metoda Generiranje verig Računanje posplošenega Voronoijevega diagrama Združevanje posplošenih Voronoijevih diagramov verig Aproksimacijske metode Algoritmi, temelječi na Voronoijevem diagramu Pristop z uporabo notranjih Voronoijevih točk Pristop z uporabo notranjih Voronoijevih elementov Pristop s presekom med Voronoijevim diagramom in mnogokotnikom Pristop z uporabo dualnosti Algoritem Dey, Zhao Pogoj kota Pogoj razmerja Algoritem Aichholzerja, Aurenhammerja, Hackla in Jüttlerja Aproksimacija meje prosto oblikovanega objekta Delitev domene na poddomene Združevanje posameznih srednjih osi Osnovni primeri Morfološki operator krčenje... 37

9 4.2.5 Algoritem srednje osi z računanjem razdalje Inicializacija Računanje razdalje Metoda FMM Metoda FSM Detekcija točk na srednji osi Redčenje Z APROKSIMACIJSKI ALGORITEM ZA GRADNJO SREDNJE OSI Gradnja omejene Delaunayjeve triangulacije Inicializacija Računanje kotov med mnogokotnikom in konveksno lupino Triangulacija Robni primer Triangulacija mnogokotnika z luknjami Rezultati triangulacije Popravljanje trikotnikov triangulacije Popravljanje trikotnikov s topimi koti Popravljaje trikotnikov v konveksnih ogliščih Generiranje srednje osi Rezultati ANALIZA ALGORITMA Izpeljava časovne zahtevnosti Meritve Prostorska zahtevnost Metrika za določitev natančnosti naše aproksimacije Primerjava natančnosti ZAKLJUČEK ŽIVLJENJEPIS BIBLIOGRAFIJA V

10 Seznam slik SLIKA 1: DELITEV PROSTORA NA KONVEKSNA PODROČJA, KOT JO JE PREDLAGAL DESCARTES (POVZETO PO [56]) SLIKA 2: PRIMER VORONOIJEVEGA DIAGRAMA... 6 SLIKA 3: SOVPADANJE VORONOIJEVIH TOČK IN SREDIŠČ TRIKOTNIKOV DELAUNAYJEVE TRIANGULACIJE. DELAUNAYJEVA TRIANGULACIJA JE PREDSTAVLJENA S ČRTKANIMI, VORONOIJEV DIAGRAM PA S POLNIMI ČRTAMI, POLNE TOČKE PREDSTAVLJAJO OGLIŠČA DELAUNAYJEVIH TRIKOTNIKOV, PRAZNE PA VORONOIJEVE TOČKE IN SREDIŠČA DELAUNAYJEVIH TRIKOTNIKOV SLIKA 4: POSTOPEK ZAMENJAVE ROBOV LEGALIZACIJA SLIKA 5: VHODNA MNOŽICA TOČK IN DALJIC (A), DELAUNAYJEVA TRIANGULACIJA (B) IN OMEJENA DELAUNAYJEVA TRIANGULACIJA (C)... 9 SLIKA 6: LEGALIZACIJA IN VIDNOST SLIKA 7: MNOGOKOTNIK (A), VERIGE OGLIŠČ MNOGOKOTNIKA (B) SLIKA 8: POSPLOŠEN VORONOIJEV DIAGRAM NAD VERIGO, KI JE SESTAVLJENA IZ ELEMENTOV (OGLIŠČE ALI ROB MNOGOKOTNIKA) SLIKA 9: POSTOPEK IZRAČUNA BISEKTORJEV SLIKA 10: PARABOLA MED GORIŠČEM G IN PREMICO SKOZI OGLIŠČI V1 IN V SLIKA 11: DVOJIŠKO DREVO POSPLOŠENIH VORONOIJEVIH DIAGRAMOV VERIG SLIKA 12: PRIKAZ DVEH POSPLOŠENIH VORONOIJEVIH DIAGRAMOV IN NJUNIH SEZNAMOV VERIG S1 IN S SLIKA 13: ZDRUŽENA POSPLOŠENA VORONOIJEVA DIAGRAMA SLIKA 14: VORONOIJEV DIAGRAM VHODNEGA MNOGOKOTNIKA SLIKA 15: RAZLIČNE PREDSTAVITVE SREDNJE OSI SLIKA 16: PRIMER SKORAJ KOPLANARNEGA TETRAEDRA SLIKA 17: PRIKAZ VORONOIJEVE CELICE Z VORONOIJEVO TOČKO P, UP PREDSTAVLJA TRIKOTNIKE V DEŽNIKU. SLIKA JE POVZETA IZ [17] SLIKA 18: RAČUNANJA KOTA MED DELAUNAYJEVIM ROBOM NAD TOČKAMA P IN Q TER APROKSIMACIJO TANGENTNE RAVNINE, DEFINIRANE Z DEŽNIKOM UP. SLIKA JE POVZETA IZ [17] SLIKA 19: DOLOČANJE KOTA MED TOČKO PM, KI JE NA SREDNJI OSI, IN DELAUNAYJEVIM ROBOM MED TOČKAMA P IN Q. SLIKA JE POVZETA IZ [17] SLIKA 20: RAZMERJA DOLŽIN MED DELAUNAYJEVIM ROBOM MED VHODNIMA TOČKAMA P IN Q TER POLMEROM R OČRTANE KROŽNICE TRIKOTNIKA NA TOČKAH P, PI IN PJ. SLIKA JE POVZETA IZ [17] SLIKA 21: PREDSTAVITEV LOKOV, KJER JE LOK A2 LOK S KONSTANTNO UKRIVLJENOSTJO (Α = Β2). SLIKA JE POVZETA IZ [132]. 29 SLIKA 22: RAČUNANJE SPIRALNEGA DVOJNEGA LOKA. RAČUNANJE SREDIŠČA STIČIŠČNE KROŽNICA (A) IN RAČUNANJE PARAMETROV ZA KROŽNA LOKA A0 IN A1 (B). SLIKA JE POVZETA IZ [21] SLIKA 23: RAČUNANJE MAKSIMALNE RAZDALJE MED SPIRALNIM DVOJNIM LOKOM IN VHODNO KRIVULJO. SLIKA JE POVZETA IZ [21] SLIKA 24: PRIMER DELITVE DOMENE V PODDOMENE. SLIKA JE POVZETA IZ [21] VI

11 SLIKA 25: PRIMER RAČUNANJA MAKSIMALNE KROŽNICE NA DVEH KROŽNIH LOKIH. PREMIK IZ TOČKE PI ZA DOLŽINO R1 V SMERI C2 (A) IN PRIMER IZRAČUNANE MAKSIMALNE KROŽNICE (B). SLIKA JE POVZETA PO [21] SLIKA 26: PRIMERI KRIVULJ DRUGEGA REDA SLIKA 27: PRIMERI SREDNJIH OSI MED RAZLIČNIMI TIPI OSNOVNIH GRADNIKOV. ELIPTIČNI LOK (A), HIPERBOLIČNI LOK (B), PARABOLIČNI LOK (C), ELIPTIČNI LOK (D), HIPERBOLIČNI LOK (E), DALJICA (F, H) IN PARABOLIČNI LOK (G) SLIKA 28: OSNOVNI PRIMERI ZA RED ZVEZNOSTI G 1 (POVZETO IZ [21]) SLIKA 29: OSNOVNI PRIMERI ZA RED ZVEZNOSTI G 0 (POVZETO IZ [21]) SLIKA 30: STRUKTURNI ELEMENT ZA MORFOLOŠKO OPERACIJO KRČENJE. ŠTEVILKA 1 POMENI, DA JE PIKSEL POBARVAN, ŠTEVILKA 0 PA, DA JE PIKSEL BELE BARVE. PRAZNE CELICE LAHKO ZAVZAMEJO TAKO ČRNO KOT BELO BARVO SLIKA 31: PRIMER PRIMERJAVE MED STRUKTURNIM ELEMENTOM IN DELOM SLIKE, KI GA TA PREKRIVA SLIKA 32: INICIALIZACIJA ENAKOMERNE MREŽE IN DISKRETIZACIJA VHODNE KRIVULJE SLIKA 33: PRIMER PROPAGACIJE FRONTE SLIKA 34: GRAF RAZMERJA MED ČASOM T(X) IN POTJO X OB KONSTANTNI HITROSTI SLIKA 35: PRIKAZ SOSEDNIH VREDNOSTI ZA ČAS PRIHODA ФI,J,K SLIKA 36: PRIKAZ PROPAGACIJE FRONTE SLIKA 37: RAVNINSKI PRESEK SLIKA 38: PRIKAZ REZULTIRAJOČE RASTRSKE SREDNJE OSI SLIKA 39: RAZLIČNI NAČINI TRIANGULACIJE KONVEKSNEGA MNOGOKOTNIKA SLIKA 40: PRIMER VHODNEGA MNOGOKOTNIKA (OZNAČENEGA S POLNO ČRTO), KONVEKSNA LUPINA (ČRTKANA ČRTA) IN KOTI MED MNOGOKOTNIKOM IN KONVEKSNO LUPINO SLIKA 41: PRIMERI KOTOV MED KONVEKSNO LUPINO IN MNOGOKOTNIKOM SLIKA 42: PRIMERI KOTOV MED MNOGOKOTNIKOM IN KONVEKSNO LUPINO SLIKA 43: PRIMER RAČUNANJA KOTOV V KONKAVNEM OGLIŠČU NA KONVEKSNI LUPINI. KARTEZIČNI KOORDINATNI SISTEM (A), PRESLIKAVA V POLARNI KOORDINATNI SISTEM, ROTACIJA TOČK IN IZRAČUN KOTOV (B) SLIKA 44: KO JE KUMULATIVNA VSOTA KOTOV Α-TRIKOTNIKOV V OGLIŠČU V1 IN KOTA VI-2VIVI-1 ENAKA KOTU Α V OGLIŠČU V1 (A), IZ SKLENJENEGA ZAPOREDJA OGLIŠČ NASTANETA DVE VERIGI, PRIKAZANI Z RAZLIČNIMA BARVAMA (B) SLIKA 45: PRIMER TRIANGULACIJE KONKAVNEGA MNOGOKOTNIKA SLIKA 46: MNOGOKOTNIK, KJER IMAJO VSA OGLIŠČA NA KONVEKSNI LUPINI PRISOTEN KOT Γ SLIKA 47: PRIMER DELITVE ZAPOREDJA OGLIŠČ MNOGOKOTNIKA V DVE MEDSEBOJNO NEODVISNI ZAPOREDJI OGLIŠČ SLIKA 48: PRIMER TRIANGULACIJE MNOGOKOTNIKA Z LUKNJAMI SLIKA 49: PRIMERI TRIANGULACIJE MNOGOKOTNIKOV Z MANJŠIM ŠTEVILOM OGLIŠČ SLIKA 50: PRIMERI TRIANGULACIJE MNOGOKOTNIKOV Z VEČJIM ŠTEVILOM OGLIŠČ SLIKA 51: PRIMER TRIANGULACIJE MNOGOKOTNIKOV Z LUKNJAMI SLIKA 52: POSTOPEK POPRAVLJANJA TOPEGA TRIKOTNIKA Z VSTAVLJANJEM STEINERJEVE TOČKE SLIKA 53: SREDNJA OS MNOGOKOTNIKA VEDNO IZVIRA IZ KONVEKSNEGA OGLIŠČA SLIKA 54: POPRAVLJANJE TRIKOTNIKOV V KONVEKSNIH OGLIŠČIH MNOGOKOTNIKA SLIKA 55: POPRAVLJANJE TRIANGULACIJE, KO NAJBLIŽJA TOČKA IN KONVEKSNO OGLIŠČE NISTA NA ISTEM OBROČU SLIKA 56: REZULTAT POPRAVLJANJA TRIKOTNIKOV V VSEH KONVEKSNIH OGLIŠČIH SLIKA 57: TRIKOTNIKE RAZDELIMO V TIPE A, B IN C SLIKA 58: GRADNJA APROKSIMATIVNE SREDNJE OSI VII

12 SLIKA 59: PRIMERI APROKSIMATIVNIH SREDNJIH OSI, DOBLJENIH Z NAŠIM ALGORITMOM, NA MNOGOKOTNIKIH Z MANJŠIM ŠTEVILOM OGLIŠČ IN BREZ LUKENJ. ŠTEVILO OGLIŠČ: 4 (A); 6 (B); 7 (C); 8 (D); 13 (E); 19 (F) SLIKA 60: PRIMERI APROKSIMATIVNE SREDNJE OSI NAD MNOGOKOTNIKI Z LUKNJAMI. ŠTEVILO OGLIŠČ: 30 (A); 12 (B); 341 (C) SLIKA 61: APROKSIMATIVNA SREDNJA OS NAD MNOGOKOTNIKI Z VEČJIM ŠTEVILOM OGLIŠČ. ŠTEVILO OGLIŠČ 997 (A); 1204 (B); 270 (C) (POVZETO PO [19, 122]) SLIKA 62: PRIMER NAJSLABŠEGA MOŽNEGA MNOGOKOTNIKA, KJER DOBIMO VGNEZDENE KONVEKSNE LUPINE NA KONKAVNIH OGLIŠČIH SLIKA 63: PRIMERI MNOGOKOTNIKOV ZA MERITVE. KONVEKSNI MNOGOKOTNIK (A), KONKAVNI MNOGOKOTNIK (B) IN ZVEZDNI MNOGOKOTNIK (C) SLIKA 64: PRIKAZ METANJA ŽARKOV V NOTRANJOST MNOGOKOTNIKA SLIKA 65: PRIMER EKSAKTNE SREDNJE OSI (A), APROKSIMACIJE SREDNJE OSI (B) IN PLOŠČINE MED NJIMA (C) VIII

13 Seznam tabel TABELA 1: PRIMERJAVA IZVAJALNIH ČASOV (MS) NAŠEGA APROKSIMACIJSKEGA ALGORITMA IN ALGORITMA ZA GENERIRANJE EKSAKTNE SREDNJE OSI TABELA 2: MERITVE ČASA IZVAJANJA ZA REALNE PRIMERE MNOGOKOTNIKOV V MILISEKUNDAH TABELA 3: IZVAJALNI ČASI (MS) PO KORAKIH ZA ALGORITEM VANGOGH IN PRIMERJAVA LE-TEH Z ALGORITMOM TRIANGULACIJE, KI TEMELJI NA PREBIRNI PREMICI TABELA 4: TRIANGULACIJA REALNIH PRIMEROV MNOGOKOTNIKOV TABELA 5: PRIMERJAVA NAŠEGA ALGORITMA Z VORONOIJEVIM DIAGRAMOM IX

14 Seznam kratic in pojmov CDT - omejena Delaunayjeva triangulacija (angl. constrained Delaunay Triangulation AMA - aproksimacijska srednja os (angl. Approximative Medial Axis) EMA - eksaktna srednja os (angl. Exact Medial Axis) VDA - algoritem Voronoijevega digrama (angl. Voronoi diagram algorithm) DAG - usmerjeni aciklični graf (angl. Directed Acyclic Graph) DT - Delaunayjeva triangulacija (angl. Delaunay triangulation) GIS - geografski informacijski sistem (angl. Geographical Information System) LFS - velikost lokalne značilnosti (angl. Local Feature Size) PSLG - ravninski premočrtni graf (angl. Planar Straight-line Graph) X

15 Seznam oznak P E G p, p i p(p i, a, b) v i p i j v i j e i,j v i v i v c v r v s o, o i - množica točk - množica robov - ravninski graf G = {P, E} - točka - pravokotna projekcija točke p i na premico ab - oglišče - daljica med točkama p i in p j - daljica med ogliščema v i in v j - rob med ogliščema v i in v j - vektor - vektor, ki je pravokoten na vektor v i - konveksno oglišče - konkavno oglišče - Steinerjeva točka - element, ki predstavlja oglišče, točka ali rob mnogokotnika ijk T s T i,j,k - trikotnik z oglišči v i, v j in v k - trikotniški trak - triangulacija - trikotnik z oglišči i, j in k, i - trikotnik DT, DT(P) - Delaunayjeva triangulacija CDT, CDT(P, E) - omejena Delaunayjeva triangulacija σ, σ i - veriga s, s i - seznam verig k - krožnica c i K, K i B(o i, o j ) VD, VD(P) - središče krožnice - maksimalna krožnica - bisektor elementov o i in o j - Voronoijev diagram GVD, GVD(P, E) - posplošen Voronoijev diagram XI

16 GVD(σ i ) V(p i ) q(t) a i A p +, p t i A, B, C J Γ v p u p g p V R m D S, S a, S b, S c φ F - posplošen Voronoijev diagram verige σ i - Voronoijeva celica točke p i - krivulja - krožni lok - aproksimacija prosto oblikovanega objekta - pol - dotikališče oz. tangentna točka - tipi trikotnikov - stičišče med dvema krožnima lokoma - stičiščna krožnica - vektor pola - dežnik - gorišče parabole - teme parabole - ravnina - točka na srednji osi - površje - ploščina - gradient - hitrost XII

17 APROKSIMACIJSKI ALGORITEM GRADNJE SREDNJE OSI ENOSTAVNIH MNOGOKOTNIKOV, TEMELJEČ NA OMEJENI DELA- UNAYJEVI TRIANGULACIJI UDK: (043.3) Ključne besede: računalniška geometrija, algoritmi, skeleton, srednja os, omejena Delaunayjeva triangulacija, Steinerjeve točke Povzetek: V doktorski disertaciji uvedemo nov postopek gradnje aproksimativne srednje osi, ki je učinkovitejši od obstoječih metod. Naprej opredelimo problem, področja uporabe in podamo hipotezi. V nadaljevanju na kratko razložimo Voronoijev diagram in opozorimo na povezavo med njim in Delaunayjevo triangulacijo, ki jo razširimo še z opisom omejene Delaunayjeve triangulacije. Zatem se osredotočimo na algoritme gradnje srednje osi, ki jih delimo na eksaktne in aproksimacijske. Sledijo definicije in pregled dosedanjih rešitev. V jedru doktorske disertacije opišemo nov algoritem za konstrukcijo aproksimacije srednje osi mnogokotnika. V tem poglavju opišemo naš algoritem za triangulacijo enostavnega mnogokotnika, uporabljeno hevristiko in korak generiranja srednje osi iz središč dobljenih trikotnikov. Sledi analiza algoritma, kjer izpeljemo prostorsko in časovno zahtevnost, in primerjava našega algoritma z obstoječimi metodami. Razvijemo tudi novo metriko za oceno kakovosti aproksimacije. Doktorsko disertacijo zaključimo s pregledom opravljenega dela in opozorimo na izvirne znanstvene prispevke. XIII

18 APPROXIMATION ALGORITHM FOR MEDIAL AXIS COMPU- TATION ON SIMPLE POLYGONS USING CONSTRAINED DELAU- NAY TRIANGULATION UDK: (043.3) Keywords: computer geometry, algorithms, skeleton, medial axis, constrained Delaunay triangulation, Steiner points Abstract: In this doctoral dissertation a new method for approximating a polygon s medial axis is introduced. As shown by experiments, the new method is more efficient than the existing methods. Firstly the definition of the main problem is given. This is followed by the description of fields, where the medial axis is used, and finished with the hypotheses. In the next chapter, the connection between the Voronoi diagram and the Delaunay triangulation is mentioned, which is followed by the description of the constrained Delaunay triangulation. In the next chapter, algorithms for medial axis construction are described and classified into groups of exact and approximate algorithms. This is followed by definitions and an overview of existing methods. The core of this doctoral dissertation is composed of the description of a new algorithm for medial axis construction of a simple polygon. In this chapter, the triangulation, heuristics and the step for medial axis construction out of the triangles circumcentres are described. The next chapter is devoted to the analysis of our algorithm. Here the time and space complexity are derived and the comparison of our algorithm with the existing ones is given. This is followed by the description of a metric, which evaluates the exactness of a polygon s medial axis. The doctoral dissertation is concluded with evaluation of the hypotheses and an overview of the scientific contributions. XIV

19 1 Uvod 1.1 Opredelitev problema Doktorska disertacija obravnava problem gradnje srednje osi (angl. medial axis) enostavnih mnogokotnikov. Srednja os je množica vseh točk, ki so enako oddaljene do najbližjih robov mnogokotnika. Problem je leta 1969 opredelil Blum kot koncept za prepoznavanje bioloških oblik [1, 2]. Predlagal je dva načina konstrukcije srednje osi: povezovanje središč sosednjih maksimalnih krožnic mnogokotnika in pomikanje mej mnogokotnika v notranjost, dokler se le-te ne presekajo. Množica presečišč predstavlja srednjo os mnogokotnika. Srednjo os uporabljamo na veliko področjih, kot so: razpoznavanje znakov [119], razpoznavanje obrazov [5], geografski informacijski sistemi [3, 4], tridimenzionalno upodabljanje črk [98], opis znakov in simbolov [99], razpoznavanje oblik [100, 101], iskanje poti [6, 7, 8, 112], obdelava slik [9, 105], računalniški vid [10, 11], stroji CNC [14], robotika [38], medicina [39, 97, 103], klasifikacija kromosomov [120], realno-časovno zaznavanje trkov [12, 106], drenažni vzorci vodotokov [107], načrtovanje gibanja [108], ujemanje oblik [109, 110] in drugo [15, 16, 102, 104, 111]. Algoritme za gradnjo srednje osi delimo na eksaktne in približne oz. aproksimacijske. Algoritmi za eksaktno srednjo os velikokrat ne podpirajo mnogokotnikov z luknjami, so implementacijsko zahtevni in pogosto numerično nestabilni [17, 18, 19]. Nekateri algoritmi temeljijo na dekompoziciji domene [20], kjer začetni mnogokotnik delimo na enostavnejše dele, dokler ne pridemo do primera, za katerega je rešitev znana. V zadnjem koraku zlijemo posamezne srednje osi poddomen v celotno srednjo os. Drugi algoritmi rešujejo omenjeni problem na analitičen način [33]. Za vsako konveksno oglišče izračunajo razpolovišče kota in potegnejo žarek proti notranjosti mnogokotnika. Nato izračunajo presečišča med žarki in postopek ponavljajo, kjer prvotna oglišča zamenjajo presečišča žarkov. Aproksimacijske algoritme delimo na vektorske in rastrske. Vektorski algoritmi uporabljajo Voronoijev diagram [17, 23], ki ga zgradijo nad množico točk na robovih mnogokotnika. Voronoijeve točke so potem točke, ki so enako oddaljene do vsaj treh točk mnogokotnika in predstavljajo točke na srednji osi [19]. Isti pristop uporabljamo 1

20 tudi za prosto oblikovane oblike. Meje mnogokotnika diskretiziramo in nad tako dobljeno množico točk zgradimo Voronoijev diagram. Opisani pristop deluje dobro samo pri primerni diskretizaciji. Bolj kot je diskretizacija gosta, bolj Voronoijeve točke konvergirajo proti srednji osi [24] in obratno. Eksaktno rešitev dobimo, če razdalja med sosednjima diskretiziranima točkama teži proti nič. Ekstremno situacijo dobimo, ko diskretizacije ne opravimo. V tem primeru je lahko dobljena srednja os popolnoma nepravilna. Kljub temu da poznamo hitre algoritme za konstrukcijo Voronoijevega diagrama, velika količina diskretiziranih točk ni zaželena, saj podaljšuje izvajalne čase algoritmov. Druga vrsta aproksimacijskih algoritmov rešuje problem konstrukcije srednje osi mnogokotnika na rastrskem nivoju. Algoritmi temeljijo na morfološki operaciji»krčenje«[37, 42, 44] (angl. thinning). Operacijo lahko izvajamo na rasteriziranih objektih. Pri teh postopkih je čas izvajanja pri večjih ločljivostih dolg, pri manjših ločljivostih pa daje nenatančne rezultate [36]. Nekateri algoritmi rešujejo problem srednje osi na rastrskem nivoju z računanjem evklidske razdalje. Ti algoritmi prejmejo na vhodu seznam oglišč mnogokotnika, nato pa za vsako točko v mnogokotniku izračunajo razdaljo do robov mnogokotnika. Točka je na srednji osi, če sta najkrajši razdalji enako dolgi. Algoritmi, ki uporabljajo ta pristop, so preprosti za implementacijo in razširljivi na poljubne dimenzije. Težava pa je v določitvi ustrezne pragovne funkcije in v visokih izvajalnih časih. Za reševanje slednje slabosti si pomagamo z delitvijo prostora. V 2D večinoma uporabljamo štiriška, v 3D pa osmiška drevesa. Algoritmi, ki spadajo v to skupino, lahko dokaj natančno generirajo srednjo os, težave pa imajo pri konstrukciji same srednje osi iz dobljenih točk [39]. Točke, ki sestavljajo srednjo os, namreč izračunamo posamezno, ne glede na njene sosedne točke, ki prav tako sestavljajo srednjo os. Zaradi omenjene slabosti pristop uporabljamo pri analizi slik in vzorcev, kjer povezanost med sosednimi točkami na srednji osi pogosto ni pomembna. V naši nalogi se bomo osredotočili na aproksimacijske algoritme za generiranje srednje osi enostavnih mnogokotnikov na vektorskem nivoju. Namesto Voronoijevega diagrama bomo uporabili omejeno Delaunayjevo triangulacijo. Središča Delaunayjevih trikotnikov Delaunayjeve triangulacije namreč sovpadajo z Voronoijevimi točkami, zato pričakujemo, da bo vsaj večina trikotnikov omejene Delaunayjeve triangulacije tudi so- 2

21 vpadala z Voronoijevimi točkami. Dobljene trikotnike omejene Delaunayjeve triangulacije bomo analizirali in, če bo potrebno, vstavili dodatne (t. i. Steinerjeve) točke na meje mnogokotnika. V zadnjem koraku bomo s povezovanjem središč sosednjih trikotnikov zgradili aproksimacijsko srednjo os. Pričakujemo, da bo s predlaganim pristopom treba vstaviti veliko manj točk kot pri metodi z Voronoijevim diagramom ob zagotavljanju enake stopnje natančnosti. 1.2 Cilji Cilj doktorske disertacije je proučiti eksaktne in aproksimativne algoritme za gradnjo srednje osi enostavnih mnogokotnikov. Razviti želimo nov aproksimacijski algoritem, ki bo dajal sprejemljive rezultate pri občutno manjšem številu dodatnih točk kot do sedaj obstoječi algoritmi, ki temeljijo na konstrukciji Voronoijevega diagrama. Menimo, da bo zato pri isti natančnosti aproksimacije algoritem hitrejši glede na obstoječe algoritme. Algoritem bo uspešno reševal mnogokotnike brez in z luknjami. Teza doktorske disertacije temelji na dejstvu, da obstoječi aproksimacijski postopki za gradnjo srednje osi potrebujejo veliko število dodatnih kontrolnih točk (Steinerjeve točke) na robovih mnogokotnika, da dosežejo želeno natančnost. Posledica tega so daljši izvajalni časi algoritma. Zato postavimo naslednjo hipotezo: Hipoteza 1: Za generiranje aproksimacije srednje osi enostavnega mnogokotnika lahko namesto Voronoijevega diagrama uporabimo omejeno Delaunayjevo triangulacijo in Steinerjeve točke, vstavljene na robove mnogokotnika. Za pristop z Voronoijevim diagramom velja, da je natančnost rešitve zelo odvisna od števila dodatnih kontrolnih točk, postavljenih na robove mnogokotnika. Zato robove mnogokotnika diskretiziramo. Gostoto diskretizacije nadziramo z uporabniško določeno pragovno funkcijo. Menimo, da je dovolj dobro aproksimacijo srednje osi možno doseči z mnogo manj dodatnimi vstavljenimi kontrolnimi točkami ob uporabi ustreznih hevristik, s čimer se izognemo tudi pragovni funkciji. Zato bomo preverili naslednjo hipotezo: 3

22 Hipoteza 2: Število Steinerjevih točk, vstavljenih na robove mnogokotnika, je možno zmanjšati s hevristikami, ki zagotovijo izgradnjo ustrezne triangulacije, primerne za konstrukcijo aproksimativne srednje osi, s čimer odpravimo uporabniško nastavljivo pragovno funkcijo. Za testiranje hipotez bomo razvili in implementirali nov aproksimacijski algoritem gradnje srednje osi. Za gradnjo omejene Delaunayjeve triangulacije bomo uporabili eno izmed znanih rešitev. Algoritem bomo testirali na umetnih in realnih podatkih. Dobljene rezultate bomo primerjali glede na izvajalni čas in pravilnost rešitve z obstoječimi aproksimacijskimi in eksaktnimi algoritmi za konstrukcijo srednje osi. Opravili bomo tudi primerjavo med našim pristopom in tistim z Voronoijevim diagramom ter razvili metrike za določanje ustreznosti aproksimacije. 1.3 Struktura disertacije Doktorska disertacija sestoji iz sedmih poglavij. V drugem poglavju na kratko povzamemo lastnosti Voronoijevih diagramov in njihovega duala Delaunayjeve triangulacije. Ker bo razviti algoritem temeljil na omejeni Delaunayjevi triangulaciji, ji namenimo svoje poglavje (poglavje 3). V naslednjem poglavju opravimo pregled sorodnih del. Jedro doktorske disertacije predstavlja poglavje 5, kjer podamo nov aproksimacijski algoritem konstrukcije srednje osi. Temu sledi analiza časovne in prostorske zahtevnosti algoritma (poglavje 6). V tem poglavju algoritem primerjamo tudi z do sedaj obstoječimi rešitvami ter se opredelimo do postavljenih hipotez. Nalogo povzamemo v poglavju 7, kjer izpostavimo izvirne znanstvene prispevke. 4

23 2 Voronoijev diagram in Delaunayjeva triangulacija Začetki Voronoijevih diagramov in Delaunayjeve triangulacije segajo v 17. stoletje. Descartes je v svojem delu Principia Philosophiae leta 1644 in Le Monde leta 1664 vpeljal diagrame, ki po strukturi in pravilih gradnje ustrezajo današnjim Voronoijevim diagramom [22]. Descartesovi diagrami razdelijo prostor na konveksna področja, uporabil pa jih je za preučevanje relacij med nebesnimi telesi oz. analizo sončnega sistema, kar je prikazano na sliki 1. S S je označeno sonce, ε je zvezda, RQD pa pot kometa. Kljub temu da je Descartes iznašel novo delitev prostora, zanjo ni vpeljal formalne definicije. Slika 1: Delitev prostora na konveksna področja, kot jo je predlagal Descartes (povzeto po [56]). Šele leta 1907 je ruski matematik Voronoi postavil matematične temelje delitve prostora na konveksna področja [29, 57]. Definicija Voronoijevega diagrama [29] pravi naslednje: Imejmo točke p i P, 0 < i n v d-dimenzionalnem prostoru. Množico točk z lastnostjo, da so vse točke znotraj nekega območja bližje točki p i kot katerikoli drugi točki 5

24 iz P, imenujemo Voronoijeva celica. Unija Voronoijevih celic predstavlja Voronoijev diagram. Točkam p i pravimo Voronoijeva središča, robovom Voronoijevi robovi in stičiščem Voronoijevih robov Voronoijeve točke. Slika 2: Primer Voronoijevega diagrama. Primer Voronoijevega diagrama vidimo na sliki 2. Voronoijevi diagrami pogosto predstavljajo odskočno desko pri reševanju raznovrstnih geometrijskih problemov, kot so: določitev najbližjih sosedov dane točke, iskanje minimalnega vpetega drevesa (Evklidovo drevo), določitev konveksne lupine, tvorba Delaunayjeve triangulacije, iskanje največje krožnice. Voronoijevi diagrami so uporabni tudi na drugih področjih, kot so: antropologija in arheologija [69], astronomija [56], biologija, ekologija in gozdarstvo [72, 76], kartografija [59], kristalografija in kemija [73, 75, 77], geologija [62], trženje [63], fizika [78], metalurgija [64], metalografija [74], meteorologija in geografija [79], razpoznavanje vzorcev [67], fiziologija [66], robotika [68], zoologija [65], generiranje mrež [13, 61], vzorci širjenja [58]. 6

25 S pojavom računalnikov so začeli razmišljati tudi o algoritmih za konstrukcijo Voronoijevih diagramov [60]. Sprva so bili ti algoritmi počasni (delovali so v času O(n 2 )), kasneje, sredi sedemdesetih, pa so dosegli časovno zahtevnost O(n log n) [25, 28, 29, 70, 71]. Voronoi je bil tudi prvi, ki je razmišljal o povezovanju središčnih točk med področji (celicami), ki imajo skupen rob, s čimer je dobil Delaunayjevo triangulacijo (slika 3). Voronoijev diagram in Delaunayjeva triangulacija sta dualna grafa. Delaunayjevo triangulacijo je formaliziral ruski matematik Boris Nikolajevič Delone. Dokazal je tako imenovano pravilo praznega kroga, ki je preprost test, s katerim preverimo, ali je obravnavana triangulacija optimalna glede na minimalni notranji kot trikotnikov. Takšni optimalni triangulaciji pravimo Delaunayjeva triangulacija, pravilu pa Delaunayjevo pravilo. Slika 3: Sovpadanje Voronoijevih točk in središč trikotnikov Delaunayjeve triangulacije. Delaunayjeva triangulacija je predstavljena s črtkanimi, Voronoijev diagram pa s polnimi črtami, polne točke predstavljajo oglišča Delaunayjevih trikotnikov, prazne pa Voronoijeve točke in središča Delaunayjevih trikotnikov. Delaunayjevo pravilo praznega kroga je definirano kot [93]: Naj bo rob e i,j skupen trikotnikoma i,j,k in i,j,l in naj bo k krožnica skozi točke p i, p j in p k. Rob e i,j je nelegalen natanko takrat, ko točka p l leži v notranjosti krožnice 7

26 k. Nadalje, če točke p i, p j, p k in p l tvorijo konveksni štirikotnik in ne ležijo na skupni krožnici, je natanko eden izmed robov e i,j in e k,l nelegalen. Iz izreka sledi naslednja ugotovitev. Če vsakemu trikotniku v triangulaciji T očrtamo krožnico in se znotraj krožnice ne nahaja nobena druga točka iz P, je triangulacija legalna in jo imenujemo Delaunayjeva triangulacija. Lawson [55] je dokazal, da je možno vsako triangulacijo spremeniti v Delaunayjevo triangulacijo s postopkom legalizacije. Postopek legalizacije preveri, če je rob med dvema sosednjima trikotnikoma legalen, in če ni, trikotnikoma zamenja skupni rob (slika 4). Legalnost skupnega roba preverjamo z Delaunayjevim pravilom. Legalizacija se izvaja tako dolgo, dokler v triangulaciji ni več nelegalnih robov. Slika 4: Postopek zamenjave robov legalizacija. 8

27 3 Omejena Delaunayjeva triangulacija Delaunayjevo triangulacijo [30, 31, 47] je možno razširiti tako, da vhodna množica vsebuje tudi daljice. Ta problem so v računalniški geometriji poimenovali omejena Delaunayjeva triangulacija (angl. constrained Delaunay triangulation ali CDT). Z upoštevanjem robov, ki po triangulaciji postanejo robovi trikotnikov, triangulacija ni več Delaunayjeva, ampak je triangulacija, ki se samo približa Delaunayjevi triangulaciji. Če vhodna daljica predstavlja nelegalni rob, tega s prej omenjenim postopkom legalizacije ne smemo zamenjati. Tem robovom pravimo omejujoči robovi (angl. constrained edges). Omejeno Delaunayjevo triangulacijo pogosto uporabljamo na primer v GIS-u [52, 53, 54] in pri načrtovanju poti [48, 49, 50, 51]. Slika 5: Vhodna množica točk in daljic (a), Delaunayjeva triangulacija (b) in omejena Delaunayjeva triangulacija (c). Vhodno množico triangulacije predstavlja ravninski graf G = {P, E} (angl. planar straight-line graph ali PSLG), kjer je P množica točk, E pa množica robov (glej sliko 5a). 9

28 Če trianguliramo samo točke iz P, potem dobimo Delaunayjevo triangulacijo (slika 5b). Robovi Delaunayjevih trikotnikov Delaunayjeve triangulacije lahko sekajo vhodne omejujoče robove. Če množica omejujočih robov sovpada z robovi trikotnikov, dobimo omejeno Delaunayjevo triangulacijo (slika 5c). Ker Delaunayjevo pravilo praznega kroga ne upošteva robov iz E, uvedemo tako imenovano šibko Delaunayjevo pravilo [93], ki je kombinacija Delaunayjevega pravila in vidnosti. Vidnost definiramo kot: Točki p i in p j sta medsebojno vidni, če povezava med njima ne seka nobenega roba iz E in če točki p i in p j ne predstavljata oglišč roba iz E. Definicija omejene Delaunayjeve triangulacije [93] se potemtakem glasi: Omejena Delaunayjeva triangulacija nad ravninskim grafom G = {P, E} je takšna triangulacija, ki vsebuje vse robove iz E, in velja, da očrtan krog trikotnika v triangulaciji ne vsebuje točke iz P, ki je vidna iz vseh oglišč trikotnika. Poglejmo primer na sliki 6. Trikotnik krši Delaunayjevo pravilo prazne krožnice. Po definiciji Delaunayjeve triangulacije bi morali rob e i,j zamenjati z robom e k,l. Vendar tega ne smemo storiti, saj je rob e i,j omejujoči rob. Zagotoviti moramo še, da očrtana krožnica trikotnika ne vsebuje nobenih točk, ki so vidne iz vseh oglišč trikotnika. Taka točka na sliki 6a je točka p m. Postopek legalizacije v tem primeru zamenja robova e j,k in e i,m. Na sliki 6b vidimo omejeno Delaunayjevo triangulacijo po legalizaciji. 10

29 Slika 6: Legalizacija in vidnost. Delaunayjeva triangulacija je le specifičen primer omejene Delaunayjeve triangulacije. Omejena Delaunayjeva triangulacija nad grafom G = {P, E} je Delaunayjeva triangulacija, kadar je seznam robov E prazen. DT(G) = CDT(G); G = {P, E}; E = Ta trditev velja tudi takrat, kadar so vsi robovi iz seznama robov E Delaunayjevi. 11

30 4 Pregled obstoječih metod za konstrukcijo srednje osi mnogokotnikov 4.1 Eksaktna metoda Najbolj poznana metoda konstrukcije eksaktne srednje osi enostavnega mnogokotnika je metoda Leeja iz daljnega leta 1988 [33]. Algoritem deluje po strategiji deli in vladaj. Na vhodu prejme zaporedje oglišč mnogokotnika v 1, v 2,, v n. Mnogokotnik mora biti orientiran v nasprotni smeri urinega kazalca. V koraku deli za vhodni seznam oglišč sprva ustvarimo h verig (angl. chain) σ 1, σ 2,, σ h. Za vsako verigo σ i ; 0 i h izračunamo posplošen Voronoijev diagram (angl. generalized Voronoi diagram) [26, 27, 45, 96]. V koraku vladaj algoritem združuje posplošene Voronoijeve diagrame posameznih verig, dokler ne ostane samo eden. Opisana metoda deluje v treh korakih, in sicer: generiranje verig, računanje posplošenega Voronoijevega diagrama posameznih verig in združevanje Voronoijevih diagramov verig Generiranje verig Naj bo dan enostavni mnogokotnik, ki je sestavljen iz robov e i,i+1, i = 0, 1,..., n 1. Veriga σ mnogokotnika predstavlja zaporedje oglišč mnogokotnika v j, v j+1, v j+2,, v k 1, v k, tako da sta oglišči v j in v k konveksni, oglišča v j+1, v j+2,, v k 1 pa konkavna. Število verig, ki jih dobimo na enostavnem mnogokotniku, je n m, kjer je n število vseh oglišč, m pa število konkavnih oglišč. Za konveksni mnogokotnik potem dobimo toliko verig, kolikor je oglišč. 12

31 Za zgled vzemimo generiranje verig nad oglišči mnogokotnika na sliki 7a, kjer so oglišča v 4, v 5, v 6, v 7, v 9, v 10, v 12, v 13, v 14, v 15 in v 16 konveksna, oglišča v 1, v 2, v 3, v 8 in v 11 pa konkavna. Slika 7: Mnogokotnik (a), verige oglišč mnogokotnika (b). Iz primera na sliki 7b dobimo naslednje verige: σ 1 = v 16, v 1, v 2, v 3, v 4 σ 2 = v 4, v 5 σ 3 = v 5, v 6 σ 4 = v 6, v 7 σ 5 = v 7, v 8, v 9 σ 6 = v 9, v 10 σ 7 = v 10, v 11, v 12 σ 8 = v 12, v 13 σ 9 = v 13, v 14 σ 10 = v 14, v 15 σ 11 = v 15, v Računanje posplošenega Voronoijevega diagrama V drugem koraku za vsako izmed dobljenih verig σ i, 1 i h izračunamo posplošen Voronoijev diagram [45]. Ta je za posamezno verigo sestavljen zgolj iz žarkov v konkavnih ogliščih vhodnega mnogokotnika. Žarki potekajo iz konkavnega oglišča proti notranjosti mnogokotnika in so pravokotni na robova mnogokotnika v tem oglišču (slika 8). Z računanjem presečišč med žarki oz. bisektorji nastajajo daljice in parabole. 13

32 Slika 8: Posplošen Voronoijev diagram nad verigo, ki je sestavljena iz elementov (oglišče ali rob mnogokotnika). Daljice dobimo z določitvijo bisektorja med: dvema robovoma mnogokotnika, ki si delita konveksno oglišče, in dvema poljubnima robovoma mnogokotnika. Bisektor med dvema robovoma mnogokotnika, ki si delita konveksno oglišče, izračunamo po naslednjem postopku: Naj bosta daljici predstavljeni s točkami p 1, p 2 in p 3, kjer je p 2 skupno konveksno oglišče. Sprva izračunamo smerna vektorja v 1 in v 2 daljic p 2 1 in p. 2 3 Nato vektorja v 1 in v 2 normaliziramo in po enačbi (1) izračunamo vektor v, ki predstavlja vektor bisektorja med dvema daljicama s skupnim ogliščem. v = v 1 + (v 2 v 1 ) 2 (1) V naslednjem koraku vektor v pretvorimo v poltrak z izhodiščem v skupnem oglišču in izračunamo pravokotno projekcijo točk p 1 in p 3 (označeni s p 1 in p 3 ) na dobljen poltrak. Rezultat je krajša daljica izmed p 2 1 in p. 2 3 Postopek vidimo na sliki 9a. 14 Bisektor med poljubnima robovoma mnogokotnika določimo na podoben način (slika 9b). Imejmo daljici p 1 2 in p. 3 4 Najprej izračunamo smerna vektorja v 1 daljice

33 p 2 1 in v 2 daljice p. 4 3 Nato daljici pretvorimo v premici in izračunamo presečišče med njima. Po enačbi (1) izračunamo vektor v, ki predstavlja vektor bisektorja med daljicama. S pomočjo presečišča med premicama in vektorja v izračunamo poltrak, ki razpolavlja kot med daljicama p 1 2 in p. 3 4 Nato izračunamo pravokotno projekcijo za vse točke obeh daljic na dobljen poltrak. Projicirane točke označimo s p 1, p 2, p 3 in p 4. Rezultat je daljica na notranjih točkah (daljica p 2 3 na sliki 9b). Slika 9: Postopek izračuna bisektorjev. Drugi tip gradnika, ki sestavlja posplošeni Voronoijev diagram, so parabole. Parabole nastanejo zaradi računanja bisektorja med robom mnogokotnika in konkavnim ogliščem. Parabola je predstavljena z enačbo (2), (x x 1 ) 2 = 4 d (y y 1 ), (2) kjer sta x in y spremenljivki. Točka p v = (x 1, y 1 ) predstavlja teme parabole, d pa je evklidska razdalja od temena do gorišča g parabole. Za izračun parabole potrebujemo premico (imenujemo jo vodnica ali angl. directrix) in goriščno točko (angl. focus), ki ni na premici. Sprva rob mnogokotnika pretvorimo v premico, ki predstavlja vodnico in poteka 15

34 skozi oglišči roba mnogokotnika v 1 in v 2. Nato izračunamo pravokotno projekcijo goriščne točke g (konkavno oglišče mnogokotnika) na premico, da dobimo točko g. Na daljici gg izračunamo središčno točko p v. Razdalja od gorišča g parabole do središčne točke p v predstavlja parameter d v enačbi (2) (glej sliko 10). Tako dobimo vse parametre za izračun parabole. Slika 10: Parabola med goriščem g in premico skozi oglišči v1 in v2. slika 11. Izračunani posplošeni Voronoijev diagram vstavimo v dvojiško drevo, kot kaže Slika 11: Dvojiško drevo posplošenih Voronoijevih diagramov verig. 16

35 Za dobljenih h verig bo globina drevesa log 2 h. Posplošene Voronoijeve diagrame verig shranimo v liste drevesa, v notranjih vozliščih dvojiškega drevesa pa dobimo združene posplošene Voronoijeve diagrame sinov, ki jih označimo z GVD(s i ) Združevanje posplošenih Voronoijevih diagramov verig V zadnjem koraku združujemo posplošene Voronoijeve diagrame posameznih verig. Združevanje poteka na sledeč način: Sprva se rekurzivno sprehodimo po drevesu, dokler ne naletimo na prazno notranje vozlišče, ki ima za oba sinova posplošena Voronoijeva diagrama, ki ju združimo. Združen posplošeni Voronoijev diagram GVD(s i ) se zapiše v notranje vozlišče. Postopek se ponavlja, dokler ne obiščemo vseh vozlišč. Končna rešitev je posplošen Voronoijev diagram, zapisan v korenu dvojiškega drevesa. Postopek združevanja dveh posplošenih Voronoijevih diagramov seznamov verig s 1 in s 2 je realiziran na sledeč način: Naj bo s 1 predstavljen z elementi o 1, o 2, o j in s 2 naj predstavlja o j+1, o j+2, o n. o 1 je prvi element verige σ 1, o j pa zadnji element verige σ h 2. o j+1 je prvi element σ h 2 +1, o n pa zadnji element σ h. Za združitev dveh posameznih posplošenih Voronoijevih diagramov potrebujemo delilko oz. delilno lomljenko. Konstrukcija delilke se začne z določitvijo začetnega in končnega bisektorja. Začetni bisektor je definiran z elementoma o j in o j+1 (končni element zadnje verige v s 1 in začetni element prve verige v s 2 ). Ta si delita oglišče v j+1, ki je konveksno. Bisektor B(o j, o j+1 ) konveksnega oglišča predstavlja razpolovišče kota v oglišču v j+1 in ga vzamemo za začetni bisektor. Podobno je skupno oglišče med o 1 in o n (začetni element prve verige v s 1 in končni element zadnje verige v s 2 ) oglišče v 1, ki je prav tako konveksno. Bisektor tega je tudi razpolovišče kota v oglišču v 1 in predstavlja končni bisektor. Po določitvi začetnega in končnega bisektorja pričnemo z gradnjo skupnega posplošenega Voronoijevega diagrama. Združevanje pričnemo v začetnem bisektorju B(o j, o j+1 ). Od tega bisektorja se pomikamo v protiurni smeri in preverjamo, ali obstaja bisektor B(o j, o s ), ki seka začetni bisektor. Ko tega najdemo, se od začetnega bisektorja pomikamo v smeri urinega kazalca in iščemo bisektor B(o j+1, o t ), ki prav tako seka začetni bisektor. V naslednjem koraku preverimo, kateri izmed B(o j, o s ) in B(o j+1, o t ) prvi seka začetni bisektor B(o j, o j+1 ) ta ima krajšo dolžino od začetne točke bisektorja do presečišča. Če je prvi bisektor B(o j, o s ), ki seka začetni bisektor, potem nadaljujemo z 17

36 združevanjem, kjer postane začetni bisektor B(o s, o j+1 ). V nasprotnem primeru za začetni bisektor vzamemo bisektor B(o j, o e ). Združevanje po tem postopku se nadaljuje, dokler ne pridemo do končnega bisektorja ali dokler ne pride do primera, ko ne najdemo dveh presečišč za trenutni bisektor. Poglejmo primer združevanja dveh posplošenih Voronoijevih diagramov na sliki 12, kjer je s 1 = {σ 1 = (o 1 ), σ 2 = (o 2 ), σ 3 = (o 3, o 4, o 5, o 6, o 7, ), σ 4 = (o 8 )} in s 2 = {σ 5 = (o 9 ), σ 6 = (o 10 ), σ 7 = (o 11 ), σ 8 = (o 12, o 13 ), σ 9 = (o 14, o 15 )}. Slika 12: verig s1 in s2. Prikaz dveh posplošenih Voronoijevih diagramov in njunih seznamov Posplošen Voronoijev diagram seznama verig s 1 je na sliki 12 označen s polno črto, s 2 pa črtkano. Sprva določimo začetni in končni bisektor. V seznamu verig s 1 je zadnji element o 12, prvi element v seznamu verig s 2 pa element o 13. Tako določimo začetni bisektor B(o 12, o 13 ) (razpolovišče kota med skupnim ogliščem elementov o 12 in 18

37 o 13 ), skupno oglišče pa je konveksno. Končnega bisektorja ne moremo določiti, saj verigi nista sklenjeni. Če sta verigi sklenjeni, lahko končni bisektor določimo tako, da vzamemo prvo oglišče seznama verig s 1 in zadnje oglišče seznama verig s 2. Nato se prične postopek združevanja. Robove pregledujemo v protiurni smeri od elementa o 12 in v smeri urinega kazalca od elementa o 13 ter iščemo presečišča med začetnim bisektorjem B(o 12, o 13 ) in bisektorji obravnavanih elementov o. Na primeru na sliki 12 iz elementa o 12 pridemo do bisektorja B(o 11, o 12 ). Za tega ugotovimo, da se ne seka z našim začetnim bisektorjem B(o 12, o 13 ). Nadaljujemo na bisektorju B(o 10, o 12 ) in ugotovimo, da se seka z B(o 12, o 13 ). Nadaljujemo iskanje drugega bisektorja iz elementa o 12 v smeri urinega kazalca. Sprva preverimo bisektor B(o 13, o 14 ). Zanj ugotovimo, da se ne seka z B(o 12, o 13 ). Tako nadaljujemo in preverjamo bisektorje B(o 13, o 15 ), B(o 13, o 16 ) in tudi zanje ugotovimo, da ne sekajo B(o 12, o 13 ). Nato preverimo B(o 13, o 17 ) in ugotovimo, da se seka z B(o 12, o 13 ). Sedaj, ko smo na obeh straneh našli bisektor, ki se seka z začetnim bisektorjem, preverimo, katero presečišče (B(o 12, o 13 ) in B(o 10, o 12 ) ali B(o 12, o 13 ) ali B(o 13, o 17 )) je bližje oglišču, iz katerega izhaja začetni bisektor. Ugotovimo, da je to bisektor B(o 10, o 12 ), in določimo naslednji bisektor; to je B(o 10, o 13 ). Sedaj postopek ponavljamo, tako da pregledujemo bisektorje iz elementa o 10 v nasprotni smeri urinega kazalca z zadnjim pregledanim bisektorjem B(o 10, o 13 ) in iz elementa o 13 v smeri urinega kazalca z zadnjim pregledanim bisektorjem B(o 13, o 17 ), da poiščemo bisektor, ki seka B(o 10, o 13 ). Tako v nasprotni smeri urinega kazalca pregledamo bisektorje in ugotovimo, da bisektor B(o 9, o 10 ) seka B(o 10, o 13 ). Pregledujemo od elementa o 13 v smeri urinega kazalca in iščemo bisektor, ki seka B(o 10, o 13 ). Prvi preverjen bisektor zadovolji pogoj. Tako na tej strani dobimo B(o 13, o 14 ). Preverimo še, kateri izmed bisektorjev (B(o 9, o 10 ) in B(o 13, o 14 )) prvi seka bisektor B(o 10, o 13 ). Ugotovimo, da je to bisektor B(o 9, o 10 ). Tako dobimo na eni strani začetni bisektor B(o 9, o 13 ). Postopek ponavljamo, dokler ne pridemo do bisektorja B(o 6, o 20 ). Kljub temu da bisektor ne predstavlja končnega bisektorja, se po obdelavi tega postopek združevanja konča, saj je bisektor B(o 17, o 20 ) edini, ki seka bisektor B(o 6, o 20 ). Na koncu postopka zbrišemo vse robove, ki ležijo na desni strani s 1, in vse robove, ki ležijo na levi strani s 2. Rezultat vidimo na sliki

38 Slika 13: Združena posplošena Voronoijeva diagrama. 20

39 4.2 Aproksimacijske metode V tem podpoglavju bomo predstavili aproksimacijske metode. Delimo jih na metode, ki delujejo na vektorskem in rastrskem nivoju. Vektorske metode rešujejo problem srednje osi z Voronoijevim diagramom [126]. Najdemo jih tudi v 3D [17]; eno izmed njih opišemo v drugem podpoglavju. V nadaljevanju predstavimo metodo, ki deluje s strategijo deli in vladaj [21]. Sledi opis rastrskih aproksimacijskih metod, ki rešujejo problem srednje osi z morfološkim operatorjem»krčenje«[125] in na analitičen način [35] z reševanjem diferencialnih enačb Algoritmi, temelječi na Voronoijevem diagramu V tem podpoglavju bomo predstavili štiri algoritme, ki uporabljajo Voronoijev diagram, ki ga določijo nad mnogokotniki (slika 14). V drugem koraku izluščijo podmnožico Voronoijevih elementov Voronoijevega diagrama, ki aproksimirajo srednjo os. Metode razlikujemo na podlagi izbora podmnožice Voronoijevih elementov, ki bodo aproksimirali srednjo os. Srednjo os aproksimiramo: z Voronoijevimi točkami, vsebovanimi v mnogokotniku [129], z Voronoijevimi elementi, vsebovanimi v mnogokotniku [24, 130], s presekom med notranjostjo mnogokotnika in Voronoijevim diagramom [127] in z uporabo dualnosti vhodnega mnogokotnika [128]. Slika 14: Voronoijev diagram vhodnega mnogokotnika. 21

40 Pristop z uporabo notranjih Voronoijevih točk Metoda, ki jo je predstavil Schmidt v [129], opisuje algoritem za konstrukcijo aproksimativne srednje osi z Voronoijevim diagramom, kjer izluščimo notranje Voronoijeve točke (slika 15a). Slika 15: Različne predstavitve srednje osi. Algoritem na izhodu vrne množico nepovezanih točk, ki slabo opisujejo vhodni mnogokotnik in ne dajejo informacij o topologiji vhodnega mnogokotnika Pristop z uporabo notranjih Voronoijevih elementov Da bi odpravili slabost prejšnje metode, so avtorji v [131] predlagali, da za generiranje srednje osi uporabimo vse elemente Voronoijevega diagrama, ki so v celotni vsebovani v notranjosti mnogokotnika. S tem povežemo Voronoijeve točke, ki aproksimirajo srednjo os (slika 15b). Metoda je uspešna le ob dovolj veliki gostoti oglišč mnogokotnika Pristop s presekom med Voronoijevim diagramom in mnogokotnikom 22 V [127] je Ogniewietz definiral srednjo os kot presek med Voronoijevim diagramom in mnogokotnikom (slika 15c). Rezultat prejšnje metode je podmnožica Voronoijevih

41 elementov te metode. Edino razliko predstavljajo Voronoijevi robovi, ki so delno v zunanjosti mnogokotnika. Pri rezultatu prejšnje metode te robove v celoti odstranimo, pri tej metodi pa vzamemo le njihov del, ki je vsebovan v mnogokotniku Pristop z uporabo dualnosti Metoda, predstavljena v [128], aproksimira srednjo os z upoštevanjem duala vhodnega mnogokotnika. Dualnost mnogokotnika je graf sosednosti notranjih Voronoijevih točk. V 2D je rezultat sestavljen iz Voronoijevih točk in njihovih povezav na Voronoijeve točke sosednjih Voronoijevih celic (slika 15d). Povezave med Voronoijevimi točkami, ki so delno v zunanjosti mnogokotnika, so tudi del rešitve Algoritem Dey, Zhao V članku [17] je predstavljena metoda za aproksimacijo srednje osi nad oblakom točk v 3D. Algoritem na vhodu prejme oblak točk s površja objekta, nad katerim zgradi Voronoijev diagram. Znano je, da v 2D Voronoijeve točke aproksimirajo srednjo os pri zadostni gostoti vhodnih točk [24], kar pa ne velja za aproksimacijo srednje osi v 3D [91]. Ne glede na gostoto vhodnih točk se pri Voronoijevem diagramu v 3D pojavijo Voronoijeve točke, ki so v bližini površja in ne predstavljajo točk na srednji osi. Take točke so definirane kot središča očrtane sfere skoraj koplanarnega tetraedra (glej sliko 16) [15]. Nasprotno ostale Voronoijeve točke, ki sovpadajo s točkami na srednji osi, imenujemo poli. Za te Voronoijeve točke velja, da z večanjem gostote vhodnih točk konvergirajo proti srednji osi [92], enako kot vse Voronoijeve točke v 2D. Poli predstavljajo najbolj oddaljene Voronoijeve točke od vhodnih točk v svoji Voronoijevi celici. 23

42 Slika 16: Primer skoraj koplanarnega tetraedra. Preden nadaljujemo z razlago algoritma, vpeljimo naslednje definicije: Pol p + vhodne točke p je najbolj oddaljena Voronoijeva točka v Voronoijevi celici V(p). Če je V(p) neomejena (zunanje Voronoijeve celice), potem je p + v neskončnosti. Vektor v p = p + p je vektor pola za točko p in njegova smer je definirana kot povprečje vseh smeri robov neomejene Voronoijeve celice. Vektor v p potemtakem aproksimira normalo površja v točki p. Tangentna ravnina je ravnina z normalo n p, ki jo aproksimira vektor v p, in poteka skozi točko površja. Tangentni mnogokotnik za točko površja je definiran kot presek Voronoijeve celice in tangentne ravnine (glej sliko 17a). Dežnik U p za točko površja p je definiran kot seznam Delaunayjevih trikotnikov z vrhnjim ogliščem v točki površja p. Delaunayjevi trikotniki so dualni Voronoijevim robom, ki jih seka tangentna ravnina (slika 17b). Dežnik U p aproksimira površje v točki p. 24

43 Slika 17: Prikaz Voronoijeve celice z Voronoijevo točko p, Up predstavlja trikotnike v dežniku. Slika je povzeta iz [17]. Metoda aproksimira srednjo os s podmnožico Voronoijevih lic, ki so dualna Delaunayjevim robovom. Ti robovi so bodisi zelo dolgi in povzročajo velike kote s površjem, bodisi so vzporedni tangentni ravnini. Iz tega razloga sta avtorja uvedla dva kriterija, ki izluščita pravilna Voronoijeva lica oz. Delaunayjeve robove za aproksimacijo srednje osi, in sicer pogoj kota in pogoj razmerja. Voronoijevo lice je del aproksimativne rešitve srednje osi, če je izpolnjen vsaj eden izmed zgoraj naštetih pogojev Pogoj kota V tem koraku izračunamo kot med Delaunayjevimi robovi e p,q in trikotniki v dežniku U p. Če je kot večji od določenega praga θ, Delaunayjev rob sprejmemo in postane del aproksimacije srednje osi. V nasprotnem primeru ga ne uporabimo pri aproksimaciji. Za izračun kota med Delaunayjevim robom med točkama na površju p in q in trikotniki v dežniku je potrebna aproksimacija tangentne ravnine v točki p (slika 18). Z 25

44 uporabo definicij izračunamo trikotnike v dežniku in jih uporabimo za aproksimacijo tangentne ravnine v točki p. Nato izluščimo vse Delaunayjeve robove e p,q, ki imajo velike kote s tangentno ravnino; to je kot med robom e p,q in trikotnikom nad točkami p, p i in p j. Delaunayjev rob e p,q sprejemno, če izpolnjuje pogoj v enačbi (3). Slika 18: Računanja kota med Delaunayjevim robom nad točkama p in q ter aproksimacijo tangentne ravnine, definirane z dežnikom Up. Slika je povzeta iz [17]. max ( npq) < π 2 θ (3) Pogoj razmerja Samo pogoj kota ne more aproksimirati srednje osi v kontekstu neodvisnosti od gostote vhodnih točk. Z manjšanjem uporabniško nastavljivega parametra θ dobimo več lic, ki tvorijo negladko koničasto aproksimacijo, s prevelikim θ pa sprejmemo premalo lic in posledično dobimo luknje v aproksimaciji. Rešitev je uvedba pogoja razmerja. Poglejmo primer na sliki 19. Iz slike je razvidno, da velja enačba p q = 2u sin θ, kjer je u = (p m p) in predstavlja polmer maksimalne sfere ali krožnice K. Če je θ ε, kjer ε predstavlja gostoto vhodnih točk, velja p q 2u sin ε. Polmer očrtane krožnice trikotnikov v dežniku je reda uε, kar pomeni, da mora biti dolžina pq veliko večja od polmera očrtane krožnice trikotnikov v dežniku. 26

45 Slika 19: Določanje kota med točko pm, ki je na srednji osi, in Delaunayjevim robom med točkama p in q. Slika je povzeta iz [17]. S tem lahko aproksimiramo vse točke na srednji osi, ki imajo kot θ nekajkrat večji od ε. Ne moremo pa aproksimirati točk na srednji osi, ki imajo θ manjši od ε, a če se ε pomika proti nič, dobimo želeno konvergenco. Delaunayjev rob sprejmemo pri naslednjem pogoju: min p q r > ρ, (4) kjer vrednost ρ predstavlja vhodni parameter (glej sliko 20). Slika 20: Razmerja dolžin med Delaunayjevim robom med vhodnima točkama p in q ter polmerom r očrtane krožnice trikotnika na točkah p, pi in pj. Slika je povzeta iz [17]. 27

46 Z večanjem vrednosti parametra ρ dobimo manj šuma, ostanejo pa luknje. Z manjšanjem vrednosti parametra ρ dobimo sicer koničasto aproksimativno srednjo os, a brez lukenj Algoritem Aichholzerja, Aurenhammerja, Hackla in Jüttlerja Algoritem deluje s strategijo deli in vladaj. Na vhodu prejme seznam krivulj, ki predstavljajo mejo prosto oblikovanega geometrijskega objekta (angl. free-form shape) oz. domeno. Sprva algoritem rob objekta aproksimira s krožnimi loki [46], nato pa nad njimi izračuna srednjo os. V koraku deli algoritem določa maksimalne krožnice, ki razdelijo domeno na poddomene. Algoritem nadaljuje z delitvijo tako dolgo, dokler ne naleti na preprost oz. osnovni primer; to je primer, za katerega je srednja os znana. V koraku vladaj algoritem združuje srednje osi osnovnih primerov, dokler ne ostane samo ena. Ta predstavlja končno rešitev oz. eksaktno srednjo os aproksimiranega prosto oblikovanega objekta. Opisani algoritem deluje v treh korakih, in sicer: aproksimacija meje prosto oblikovanega objekta, delitev domene na poddomene in združevanje srednjih osi poddomen Aproksimacija meje prosto oblikovanega objekta Algoritem v prvem koraku vhodne krivulje aproksimira s spiralnimi dvojnimi loki (angl. spiral biarc) z določeno natančnostjo ε. Preden nadaljujemo z opisom postopka, vpeljimo naslednje definicije: Hermitovi podatki (angl. Hermite data [133]) predstavljajo množico točk p i = (x i, f(x i )) funkcije f in njenih odvodov v vsaki točki p i. Dvojni lok (angl. biarc [94]) spada v enoparametrično družino krivulj z zveznostjo G 1. Pridobljen je z združenjem dveh krožnih lokov a 0 in a 1 tako, da imata enak tangentni vektor v skupni točki oz. stičišču. 28

47 Ukrivljenost (angl. constant curvature [132]). Naj bosta p 1 in p 2 končni točki poljubnega loka. Kot β med tangento loka v točki p 2 z daljico p 1 2 ni manjši kot kot α med tangento v točki p 1 z daljico p. 1 2 Če za poljubni lok ta lastnost velja, potem je ukrivljenost monotona. Če sta α in β enaka, pravimo, da je ukrivljenost konstantna (slika 21). Spiralni dvojni lok (angl. spiral biarc [95]) je dvojni lok s konstantno ukrivljenostjo (slika 22). Slika 21: Predstavitev lokov, kjer je lok a2 lok s konstantno ukrivljenostjo (α = β2). Slika je povzeta iz [132]. Postopek aproksimacije vhodnih krivulj q(t) s spiralnimi dvojnimi loki je sledeč: Iz Hermitovih podatkov preberemo točki p 0 in p 1, skozi kateri poteka vhodna krivulja, ter prva in druga odvoda vhodne krivulje v teh točkah. Prva odvoda predstavljata tangento, druga odvoda pa ukrivljenost vhodne krivulje v danih točkah. Spiralni dvojni lok je definiran z dvema krožnima lokoma a 0 in a 1. Osnova za dvojni lok je stičišče oz. stičiščna točka p, ki jo izračunamo iz stičiščne krožnice (označene s k na sliki 22). Taka krožnica poteka skozi točki p 0 in p 1 in ima enak razpon kotov med tangentnima vektorjema v 0 in v 1. Središče c i take krožnice (stičiščne krožnice) se izračuna s presečiščem med pravokotnico na razpolovišče daljice p 0 1 in s pravokotnico na razpolovišče daljice p, 2 3 kjer je p 2 = p 0 + v 0 in p 3 = p 1 + v 1 (glej sliko 22a). Polmer take krožnice je potem r i = c i p 0. Stičišče p izračunamo kot presečišče med stičiščno 29

48 krožnico k in krožnico krožnega loka a 0, ki je definirana s polmerom r 0 = 1 k 0 in središčem c 0 = p 0 + r 0 v 0. Parameter k0 je dobljen iz Hermitovih podatkov in predstavlja ukrivljenost krožnega loka v točki p 0. Sedaj je treba izračunati še krožni lok a 1. Podobno izračunamo središče c 1 krož- nega loka a 1, tako da določimo presečišče med poltrakoma pc 0 in p. 1 v 0 Polmer krožnice je r 1 = c 1 p 1. Drugi krožni lok je potem definiran kot funkcija s parametri (c 1, r 1, p, p 1 ). Skupek krožnih lokov a 0 in a 1 predstavlja spiralni dvojni lok. Končni rezultat računanja spiralnih dvojnih lokov prikazuje slika 22b. Slika 22: Računanje spiralnega dvojnega loka. Računanje središča stičiščne krožnica (a) in računanje parametrov za krožna loka a0 in a1 (b). Slika je povzeta iz [21]. Preden preidemo na korak računanja srednje osi, dobljene spiralne dvojne loke ocenimo glede na to, kako dobro se prilegajo vhodnim krivuljam. Ocenitev poteka tako, da vzamemo dva krožna loka a 0 in a 1 ter med njima ustvarimo spiralni dvojni lok po prej opisanem postopku. Tega ovrednotimo glede na natančnost prilagajanja z vhodno krivuljo. Če je napaka prevelika (večja od ε), vhodno krivuljo razdelimo na polovico in postopek ponavljamo, dokler ni napaka manjša od ε. 30

49 Evalvacijo natančnosti prileganja spiralnega dvojnega loka z vhodno krivuljo opravimo z merjenjem maksimalne razdalje med njima. Razdalja se izračuna po naslednjem postopku (glej sliko 23): Sprva projiciramo stičišče p na vhodno krivuljo tako, da iz središča c 0 (središče krožnega loka a 0 ) v smeri p pošljemo žarek in izračunamo presečišče med tem žarkom ter vhodno krivuljo q(t). Projicirano točko označimo s p. V naslednjem koraku vhodno krivuljo q(t) oz. del vhodne krivulje enakomerno diskretiziramo in pošiljamo žarke iz središča c 0 in c 1 proti diskretiziranim točkam na vhodni krivulji. Največja razdalja med presečišči žarkov s spiralnim dvojnim lokom in presečišči žarkov z vhodno krivuljo predstavlja napako aproksimacije vhodne krivulje. Slika 23: Računanje maksimalne razdalje med spiralnim dvojnim lokom in vhodno krivuljo. Slika je povzeta iz [21] Delitev domene na poddomene Delitev roba prosto oblikovanega objekta (korak deli) oz. začetne domene poteka tako, da v domeno vstavljamo maksimalne krožnice. Taka krožnica razdeli domeno v toliko poddomen, kot je število dotikališč med maksimalno krožnico in spiralnimi dvojnimi loki (slika 24a). Po vstavitvi maksimalne krožnice preverimo, ali so dobljene poddomene sestavljene iz manjšega števila krožnih lokov, kot pa je sama domena. V primeru, da niso, se maksimalna krožnica ponovno izračuna nad drugim parom krožnih lokov. Vsako poddomeno zaključimo s krožnim lokom (glej sliko 24b), ki mu pravimo umetni lok, nato pa poddomeno dalje delimo z maksimalno krožnico. Delitev se izvaja, dokler poddomena ne predstavlja enega izmed osnovnih primerov. Za take primere srednjo os izračunamo neposredno. 31

50 Slika 24: Primer delitve domene v poddomene. Slika je povzeta iz [21]. Jedro tega koraka je računanje maksimalne krožnice in delitev domene na poddomene. Postopek računanja maksimalne krožnice je naslednji: Imejmo množico krožnih lokov a i, 1 i n, ki predstavljajo aproksimacijo prosto oblikovanega geometrijskega objekta A v smeri urinega kazalca. Najprej se kreira krožnica k, ki se dotika loka a i v točki p i in poljubnega loka a j, 1 j n j i. Temu sledi sprehod skozi krožne loke prosto oblikovanega objekta. Preverjamo, ali se krožnica k seka ali prekriva s katerim izmed njih. Če se ne seka ali prekriva z nobenim lokom, krožnica k predstavlja maksimalno krožnico K. V nasprotnem primeru (krožnica se seka ali prekriva z lokom a l, 1 j l n) pa izračunamo krožnico, ki je manjša od prejšnje in se dotika drugega poljubnega loka a l. Postopek ponavljamo, dokler ne dobimo maksimalne krožnice. Osrednji del računanja maksimalne krožnice je konstrukcija kroga, ki se dotika loka a i v točki p i in drugega poljubnega loka a j (glej sliko 25a). Točka p i se določi pred računanjem maksimalne krožnice in predstavlja središčno točko krožnega loka a i, če je le-ta sestavljen iz dveh konveksnih oglišč. V nasprotnem primeru p i predstavlja konkavno oglišče krožnega loka a i. Točka c i, ki predstavlja središče maksimalne krožnice, mora ležati na premici l. Ta poteka od središča loka a i proti dotikališču p i. Če se premaknemo iz točke p i za dolžino r 1 proti središču c 2, pridemo v točko c 1 (slika 25a). Le-ta tvori skupaj s c 1 in c i ena- 32

51 kokraki trikotnik. To lastnost lahko izkoristimo tako, da izračunamo pravokotnico na razpolovišče daljice c 1 1 in izračunamo presečišče med dobljeno pravokotnico in premico l. Presečišče predstavlja središče maksimalne krožnice K s polmerom c i p i (slika 25b). Slika 25: Primer računanja maksimalne krožnice na dveh krožnih lokih. Premik iz točke pi za dolžino r1 v smeri c2 (a) in primer izračunane maksimalne krožnice (b). Slika je povzeta po [21] Združevanje posameznih srednjih osi Srednja os je sestavljena iz lokov. Vsak lok srednje osi pripada dvema osnovnima geometrijskima gradnikoma na meji prosto oblikovanega objekta. Osnovni gradniki so lahko krožni lok, daljica ali oglišče. Različni pari osnovnih gradnikov tvorijo različne loke na srednji osi, in sicer so ti lahko hiperbolični, parabolični ali eliptični. Preden nadaljujemo z opisom koraka algoritma, uvedimo naslednje definicije. Ekscentričnost ali izsrednost (angl. eccentricity) definiramo kot razmerje med razdaljo od točke na loku do gorišča in razdaljo od točke na loku do vodnice. Razmerje je konstantno za posamezen tip lokov. 33

52 Stožnica (angl. conic section) je množica vseh točk, ki imajo enako razdaljo med poljubno točko, ki ji pravimo fokus, in daljico, ki ji pravimo vodnica. Tip krivulje definiramo z ekscentričnostjo, kot sledi: krožnica ali krožni lok (angl. circular arc) je krivulja z ekscentričnostjo 0, elipsa ali eliptični lok (angl. elliptic arc) je krivulja z ekscentričnostjo med 0 in 1, parabola (angl. parabolic arc) je krivulja z ekscentričnostjo 1 in hiperbola (angl. hyperbolic arc) je krivulja z ekscentričnostjo, večjo od 1. Primere različnih krivulj drugega reda vidimo na sliki 26. Slika 26: Primeri krivulj drugega reda. Različni pari osnovnih gradnikov definirajo različne loke: krožna loka lahko definirata eliptični (glej sliko 27a) ali hiperbolični (slika 27b) lok glede na položaj dveh podpornih krožnic in orientacijo lokov na mejah prosto oblikovanega objekta, krožni lok in daljica vedno definirata parabolični lok (slika 27c), 34

53 krožni lok in točka definirata eliptični lok (glej sliko 27d), če oglišče leži v notranjosti podporne krožnice loka, drugače pa hiperbolični lok (slika 27e), dve daljici definirata premico (slika 27f), daljica in točka definirata parabolični lok (slika 27g) in dve točki definirata daljico (slika 27h). Slika 27: Primeri srednjih osi med različnimi tipi osnovnih gradnikov. Eliptični lok (a), hiperbolični lok (b), parabolični lok (c), eliptični lok (d), hiperbolični lok (e), daljica (f, h) in parabolični lok (g) Osnovni primeri V klasifikaciji osnovnih primerov predpostavimo, da je srednja os sestavljena iz največ treh gradnikov. V primeru, da bi vseeno nastopilo več vozlišč, lahko domeno nadalje razdelimo z maksimalno krožnico. To predstavlja slika 28, kjer lahko zgled c predstavimo s tremi različicami zgleda b. Če operiramo s krivuljami reda zveznosti G 1, se izkaže, da je število osnovnih primerov štiri (glej sliko 28). 35

54 Slika 28: Osnovni primeri za red zveznosti G 1 (povzeto iz [21]). V primeru, da operiramo z redom zveznosti G 0, se število osnovnih primerov dvigne na devet (slika 29). Slika 29: Osnovni primeri za red zveznosti G 0 (povzeto iz [21]). Srednjo os za posamezni osnovni primer izračunamo neposredno in je sestavljena izključno iz lokov [113]. 36

55 4.2.4 Morfološki operator krčenje Algoritmi, ki rešujejo problem srednje osi s pomočjo morfološkega operatorja krčenje, spadajo v družino rastrskih algoritmov. Ideja teh algoritmov je, da na vhodu sprejmejo bitno sliko, na kateri so objekti označeni s črno barvo. Algoritem postopoma črne piksle spreminja v bele tako, da je na koncu objekt širok le en piksel oziroma en voksel ali je prostor 3D. Objekt, ki se krči, se nikoli ne razdeli in vedno obdrži topologijo vhodnega objekta [125]. V koraku krčenja algoritem zaporedno obiskuje piksle slike ter jim spreminja barvo iz črne v belo. Ključnega pomena za spremembo barve je strukturni element (angl. structuring element), ki definira vrsto morfološkega operatorja. Strukturni element za operacijo krčenja je definiran z matrikama, prikazanima na sliki 30. Pikslu na poziciji (1,1) pravimo izvor. Slika 30: Strukturni element za morfološko operacijo krčenje. Številka 1 pomeni, da je piksel pobarvan, številka 0 pa, da je piksel bele barve. Prazne celice lahko zavzamejo tako črno kot belo barvo. Algoritem deluje tako, da postavlja izvor strukturnega elementa na vse piksle vhodne bitne slike in primerja vrednosti med strukturnim elementom in piksli slike, katere strukturni element prekriva. Če so vse vrednosti enake, potem algoritem pikslu slike postavi barvo na belo. V primeru, da se vrednosti razlikujejo, algoritem izvede rotacijo strukturnega elementa za 90 stopinj in ponovno primerja vrednosti pikslov med delom bitne slike in strukturnim elementom. Postopek ponavlja, dokler ne preveri vseh osem možnosti (glej sliko 31) ali ne pride do ujemanja. 37

56 Slika 31: ta prekriva. Primer primerjave med strukturnim elementom in delom slike, ki ga Algoritem srednje osi z računanjem razdalje Metoda spada v družino aproksimacijskih metod za pridobivanje srednje osi nad objekti s prosto oblikovanimi. Problem srednje osi rešuje z računanjem razdalje (angl. distance solutions). Za to uporablja nelinearno parcialno diferencialno enačbo z imenom Eikonal. Enačba se ovrednoti z metodo FMM (Fast Marching Method) [40, 81, 82, 83, 84] ali metodo FSM (Fast Sweeping Method) [41, 85, 86, 87, 88, 89]. 38

57 Na vhodu algoritem prejme poljubno krivuljo q(t) ali seznam krivulj, ki so lahko sklenjene ali pa tudi ne. Nato formira enakomerno mrežo. Za vsako kontrolno točko enakomerne mreže izračunamo razdaljo do vhodnih krivulj. Z Laplaceovo determinanto [80] izluščimo točke, ki so na srednji osi. Ker se v koraku računanja razdalje uporablja pragovna funkcija, so končna srednja os oz. njeni segmenti sestavljeni iz oblaka točk. Točke se nato pretvorijo v bitno sliko in zapolnjeni piksli ali voksli se tanjšajo (angl. thinning methods). Tako je končna srednja os vedno široka en piksel ali voksel. Algoritem deluje v štirih korakih: inicializacija, računanje razdalje, detekcija točk na srednji osi in tanjšanje Inicializacija V koraku inicializacije ustvarimo enakomerno mrežo velikosti N M. Število kontrolnih točk mreže je potemtakem N + 1 v smeri x in M + 1 v smeri y, velikost posamezne celice v vse smeri pa predstavlja vrednost parametra h ( x = y = z = h). Algoritem na vhodu prejme seznam krivulj, ki predstavljajo začetno mejo objekta. Krivulje se sprva transformirajo na interval x [0, N] in y [0, M] nato pa se diskretizirajo. Vsaki kontrolni točki se priredi stanje in vrednost. Stanje je lahko»poznano«,»nepoznano«ali»začasno«, glede na to, ali je kontrolna točka že bila obiskana, vrednost pa predstavlja najmanjšo razdaljo od kontrolne točke do mej vhodnih krivulj. 39

58 Slika 32: Inicializacija enakomerne mreže in diskretizacija vhodne krivulje. Na sliki 32 vidimo primer začetnega stanja po diskreditaciji meje, kjer pobarvane točke predstavljajo začetno fronto. Vsem pobarvanim točkam nastavimo stanje na poznano in izračunamo razdalje kontrolnih točk do mej krivulj. Vsem ostalim nepobarvanim točkam nastavimo stanje na nepoznano in dobijo vrednost Računanje razdalje Po inicializaciji algoritem prične z računanjem razdalje vseh nepoznanih kontrolnih točk uniformne mreže do vhodnih krivulj. Da bi se izognili časovno potratnemu računanju razdalje od točk na mreži do vhodnih krivulj, je Sethian [83] predlagal preslikavo problema na časovno odvisen problem. Predstavljajmo si zaprto krivuljo q(t) v 2D ali v 3D, ki ravnino oz. prostor deli na tri dele, in sicer notranjost q(t) +, zunanjost q(t) in mejo krivulje oz. fronto q(t). Predpostavimo, da se q(t) širi ali krči v pravokotni smeri z znano hitrostjo F (F 0). Cilj je, da sledimo gibanju krivulje oz. fronte q(t), ki se spreminja skozi čas v eni smeri. Določitev pozicije fronte je izračun časa prihoda fronte φ i,j, ko prečka točko p i,j. Primer prikazuje slika

59 Slika 33: Primer propagacije fronte. Enačba, ki opisuje čas prihoda, je x = F t, kjer x predstavlja pot, F hitrost in t čas. Potem dobimo: Slika 34: Graf razmerja med časom t(x) in potjo x ob konstantni hitrosti. dx = F dt ali F = dx dt (5) in 1 = F dt dt (6) V več dimenzijah postane enačba gibanja gradient in tako dobimo 41

60 φ F = 1. (7) Spremenljivka φ predstavlja čas prihoda. V tem primeru je φ = φ(x, y) funkcija v R 3 ali R 2. Če podamo koordiante (x, y), nam φ vrne čas prihoda fronte do točke (x, y). Če je hitrost odvisna samo od pozicije x, potem se enačba reducira na to, kar poznamo pod izrazom enačba Eikonal (enačba (7)). Primer vidimo na sliki 33, kjer je prikazan čas prihoda φ fronte, ki se radialno širi z enakomerno hitrostjo F = 1. Enačba (7) se ovrednoti z metodama FMM ali FSM, predstavljenima v nadaljevanju Metoda FMM Ena izmed metod za reševanje sistema nelinearnih enačb je tako imenovana metoda FMM (angl. Fast Marching Method), ki jo je vpeljal Sethian leta 1996 [83]. Ideja metode je, da opisuje čas, v katerem bo fronta prispela do poljubne točke ob hitrosti F (F 0). Po ideji je metoda zelo podobna Dijkstravemu algoritmu [90] za iskanje optimalne poti. Za to bo uporabila enačbo Eikonal in jo ovrednotila. S tem bomo izračunali čas prihoda φ za vsako točko p i,j,k na podlagi njenih sosed (glej sliko 35). Slika 35: Prikaz sosednih vrednosti za čas prihoda фi,j,k. V prvem koraku opravimo diskretizacijo gradienta φ v enačbi (7) s pomočjo Godunove sheme [43]. Osher [123] in Sethian [40] sta predlagala obliko, povzeto v enačbi (8), 42

61 max(d x i,j,k T, D +x i,j,k T, 0) 2 + max(d y i,j,k T, D +y ij,,k T, 0) 2 + = 1 2, (8) F i,j,k ( max(d z i,j,k T, D +z i,j,k T, 0) 2 ) kjer sta D + in D diferencialna operatorja naprej in nazaj, definirana z: D x i,j,k = φ i,j,k φ i 1,j,k x D +x i,j,k = φ i+1,j,k φ i,j,k x D y i,j,k = φ i,j,k φ i,j 1,k y D +y i,j,k = φ i,j+1,k φ i,j,k y (9) D z i,j,k = φ i,j,k φ i,j,k 1 z D +z i,j,k = φ i,j,k+1 φ i,j,k z S substitucijo enačb (9) v enačbo (8) dobimo naslednjo obliko, zapisano v enačbi (10): max ( φ φ 1 x 2, 0) + max ( φ φ 2 2 y, 0) + max ( φ φ 2 3, 0) = 1 z F 2, (10) kjer je φ = φ i,j,k φ 1 = min (φ i 1,j,k, φ i+1,j,k ) φ 2 = min(φ i,j 1,k, φ i,j+1,k ) (11) φ 3 = min (φ i,j,k 1, φ i,j,k+1 ) Podobno kot pri Dijkstravemu algoritmu se tudi tukaj vpelje red pri izbiri točk na mreži. Čas prihoda za vsako točko je odvisen zgolj od časa prihoda sosednjih točk, ki imajo manjše vrednosti. Tako se lahko enačba (10) še dalje poenostavi na: ( φ φ 2 1 x ) + ( φ φ 2 2 y ) + ( φ φ 2 3 ) = 1 (12) z F 2 43

62 Metoda FMM deluje na sledeč način: Fronta je sestavljena iz točk, ki imajo stanje nastavljeno na začasno. V prvem koraku poiščemo točko na fronti, ki ima najmanjšo vrednost φ. Tej točki nastavimo stanje na poznano in poiščemo vse sosednje točke, ki imajo nepoznano stanje na mreži, ter jih vstavimo na fronto. Vsem novim točkam spremenimo stanje na začasno in jim izračunamo vrednost φ po enačbi (12). Postopek rekurzivno ponavljamo, dokler obstajajo točke z nepoznanim stanjem. Poglejmo primer delovanja metode FMM na sliki 36, kjer imamo enakomerno mrežo. Točke na mreži imajo zraven koordinat podano informacijo o stanju posamezne točke. Črna barva označuje poznano, siva začasno, bela pa nepoznano stanje. Fronta je sestavljena iz sivih točk in se bo pomikala navzven (slika 36a). Sprva poiščemo točko na fronti, ki ima najmanjšo vrednost φ. V našem primeru naj bo to točka p i,j. Tej točki nastavimo stanje na poznano in poiščemo vse njene sosede. Sosednjim točkam nastavimo stanje na začasno ter za vsako izračunamo vrednost φ po enačbi (12) (slika 36b). Nato spet poiščemo točko na fronti, ki ima najmanjšo vrednost φ (v našem primeru je to točka p i+1,j na sliki 36c), ter ji nastavimo stanje na poznano. Tej točki poiščemo sosednje točke, jim nastavimo stanje na začasno in jim izračunamo čas prihoda φ (slika 36d). Postopek nadaljujemo, dokler imamo točke z neznanim stanjem. 44

63 Slika 36: Prikaz propagacije fronte Metoda FSM Kot alternativa metodi FMM, opisani v prejšnjem poglavju, opravlja ta metoda podobno funkcijo. Slabost metode FMM je iskanje točk na fronti z najmanjšo vrednostjo φ i,j. Da bi se izognili implementaciji iskalnih podatkovnih struktur, so razvili metodo FSM (angl. Fast Sweeping Method). Postopek diskretizacije parcialnih diferencialnih enačb v točkah na mreži pri metodi FSM poteka z Godunovo shemo [43]. Predlagali so naslednjo rešitev [41, 40]: (max (φ i,j φ x min, 0)) 2 + (max(φ i,j φ y min, 0)) 2 = F 2 h 2, (13) kjer je φ i,j vrednost točke na mreži in φ x min = min (φ i 1,j, φ i+1,j ), φ y min = min (φ i,j 1, φ i,j+1 ). 45

64 Na mejnih točkah (p 0,j, p i,0, p i,m in p N,j ) mreže vzamemo vrednost, ki obstaja. Na primer pri točki p 0,j se enačba (13) preslika v (max(φ 0,j φ 1,j, 0)) 2 + (max(φ 0,j φ y min, 0)) 2 = F 2 h 2. (14) Če operiramo v 2D prostoru, se zgornja enačba preslika v min(a, b) + F h, če je a b F φ i,j = { a+b+ 2F 2 h 2 (a b) 2, (15), drugače 2 kjer je a = φ x min in b = φ y min, h predstavlja širino celice. Opisana metoda za vsako točko mreže p i,j, ki ima stanje nastavljeno na nepoznano, izračuna rešitev φ i,j po enačbi (15). Ob tem uporablja rešitve sosednjih točk na mreži, in sicer p i±1,j, p i,j±1, katerim se je najkasneje izračunala rešitev. Nato se vrednost za točko p i,j na mreži posodobi in predstavlja manjšo vrednosti med trenutno φ i,j in novo vrednostjo φ i,j v točki p i,j (enačba (16)). φ i,j = min (φ i,j, φ ) i,j (16) Ker en prehod ne more zagotoviti konvergiranja do pravilne vrednosti za poljubno vrednost F, mora metoda nad celotno mrežo opraviti 2 n prehodov, in sicer: 1. i = 0: N, j = 0: M 2. i = N: 0, j = 0: M 3. i = N: 0, j = M: 0 4. i = 0: N, j = M: 0 Parameter n pomeni število dimenzij. 46

65 Detekcija točk na srednji osi Po tem, ko smo ovrednotili vse točke na enakomerni mreži, sledi postopek detekcije točk, ki sestavljajo srednjo os. Ta izkorišča lastnost, da je točka na srednji osi enako oddaljena do več vhodnih krivulj. Iz tega razloga predstavljajo vrednosti na točkah na srednji osi lokalni maksimum. Na sliki 37 so prikazane tri točke na srednji osi. Izločanje točk na srednji osi realiziramo z Laplaceovim operatorjem ( 2 φ) [35]. Pri točkah na mreži v okolici lokalnega maksimuma 2 φ konvergira proti. Vsaka točka, ki izpolnjuje pogoj 2 φ < ε, je na srednji osi. Slika 37: Ravninski presek Redčenje Z 2 Zaradi uporabe pragovne funkcije pri računanju razdalje ( 2 φ < ε) je končna srednja os sestavljena iz točk, bolj natančno iz oblaka točk. Primer vidimo na sliki 38. Za srednjo os je značilno, da je široka en piksel ali voksel. Iz tega razloga moramo dobljeno srednjo os nadalje razredčiti (angl. thinning methods). 47

66 Vendar konstrukcija srednje osi zahteva redukcijo in povezljivost med točkami v oblaku. Oblaka točk ali vokslov ne moremo poenostaviti z metodami za poenostavitev oblaka točk, ker vsebuje srednja os delilne točke (angl. branching point) in s temi metodami ne moremo zagotoviti povezljivosti med sosednjimi. Iz tega razloga se uporablja naslednja metoda za zagotavljanje zgoraj napisanih lastnosti: Oblak točk najprej pretvorimo v bitno sliko (R 2 Z 2 ), nato pa opravimo redčenje točk nad bitno sliko z algoritmom, opisanim v [124]. Na koncu piksle pretvorimo iz Z 2 v R 2. Slika 38: Prikaz rezultirajoče rastrske srednje osi. 48

67 5 Aproksimacijski algoritem za gradnjo srednje osi Srednja os je definirana kot množica vseh točk, ki so enako oddaljene do najbližjih robov mnogokotnika. Nekateri avtorji zato uporabljajo Voronoijev diagram [17,23], ki ga zgradijo nad množico točk na robovih mnogokotnika. Voronoijeve točke so potem točke, ki so enako oddaljene do vsaj treh točk mnogokotnika in predstavljajo točke na srednji osi. Znano je [19, 29], da je Delaunayeva triangulacija dualna Voronoijevem diagramu. Voronoijeve točke sovpadajo s središči Delaunayevih trikotnikov (glej sliko 3) [24], ki pa so posledično tudi na srednji osi. Zato bomo nad vhodnim mnogokotnikom uporabiti algoritem omejene Delaunayeve triangulacije. Ta lahko ponekod krši Delaunayev kriterij, zato središča teh trikotnikov ne sovpadajo s točkami na srednji osi. Iz tega razloga smo uvedli hevristiko, ki popravi omenjene trikotnike omejene Delaunayeve triangulacije. Naš algoritem deluje v treh korakih: gradnja omejene Delaunayeve triangulacije, popravljanje triangulacije z vstavljanjem Steinerjevih točk in gradnja aproksimacije srednje osi. 5.1 Gradnja omejene Delaunayjeve triangulacije V tem poglavju se bomo ukvarjali s triangulacijo enostavnih mnogokotnikov. Ti lahko vsebujejo luknje ali so brez njih. Preden nadaljujemo z razlago, uvedimo naslednje definicije: Zunanji obroč mnogokotnika je enostavna sklenjena lomljenka, ki jo moramo prečkati, če potujemo iz neskončnosti in želimo priti v notranjost mnogokotnika. Enostavna lomljenka je lomljena črta, ki zaporedno povezuje oglišča mnogokotnika in se ne seka s seboj. Luknja mnogokotnika je enostavna sklenjena lomljenka, ki se nahaja znotraj zunanjega obroča mnogokotnika. Vsak mnogokotnika ima nič ali končno mnogo lukenj, ki 49

68 niso vgnezdene. Sestavljena je iz konkavni in konveksnih oglišč, ki pa so orientirane v smeri urinega kazalca. Veriga mnogokotnika je pri našem algoritmu definirana kot sklenjeno zaporedje konkavnih in konveksnih oglišč. Oglišča, ki so prisotna v eni verigi, niso prisotna v nobeni drugi verigi. Veriga je vedno orientirana v smeri urinega kazalca. Triangulacijo mnogokotnikov lahko delimo na triangulacijo konveksnih oz. izbočenih in konkavnih oz. vbočenih mnogokotnikov. Triangulacija konveksnega mnogokotnika je trivialna in je izvedljiva v času O(n). Na sliki 39 vidimo različne načine triangulacije konveksnega mnogokotnika. Eden izmed načinov triangulacije takega mnogokotnika je, da vzamemo poljubno oglišče mnogokotnika v i, ki bo oglišče vsakega novega trikotnika. Prvi trikotnik bo na ogliščih v i, v i 1 in v i 2, naslednji trikotnik na ogliščih v i, v i 2 in v i 3 itd. (glej sliko 39c). V nadaljevanju doktorske disertacije bomo takemu načinu triangulacije rekli neposreden način triangulacije. Slika 39: Različni načini triangulacije konveksnega mnogokotnika. V primeru, da ima mnogokotnik tudi konkavna oglišča (takšnemu mnogokotniku pravimo konkavni mnogokotnik), pa triangulacija ni več trivialna, saj lahko po zgoraj opisanem postopku dobimo neravninsko triangulacijo, tj. trikotniki triangulacije se delno prekrivajo. Zato moramo za vsak nov trikotnik preveriti, ali je katero konkavno oglišče vhodnega mnogokotnika vsebovano v novem trikotniku. Če ni, trikotnik vstavimo, v nasprotnem primeru pa poiščemo nova tri oglišča in postopek ponavljamo. Algoritem, ki na tak način triangulira mnogokotnik, imenujemo algoritem rezanja uhljev (angl. ear cutting 50

69 algorithm) [71]. Njegova časovna zahtevnost je O(n 3 ). Seveda pa obstajajo še druge, bolj učinkovite metode, kot so: Grahamovo preiskovanje (O(n 2 )) [115], triangulacija z enakomerno delitvijo ravnine (O(n 2 )) [116], algoritem s prebirno premico (O(n log n)) [117] in Seidlov naključni inkrementalni algoritem (O(n log n)) [118]. Za triangulacijo enostavnega mnogokotnika smo pri naši disertaciji izbrali pristop, ki deluje na podoben način kot algoritem rezanja uhljev [71]. Poimenovali ga bomo algoritem VanGogh. Namesto opravljanja testa vsebnosti konkavnih oglišč za vsak nov trikotnik algoritem uporablja konveksno lupino. Konveksno/izbočeno lupino določimo samo na konkavnih ogliščih vhodnega mnogokotnika in nam omogoča, da v dani iteraciji trianguliramo del vhodnega mnogokotnika (to je del med konveksno lupino in zunanjim obročem mnogokotnika na sliki 40 je potemnjen) brez vsebnostnega testa. Za vsako oglišče na konveksni lupini izračunamo kote med konveksno lupino in zanko mnogokotnika. Nato algoritem zaporedno obiskuje oglišča, ki so na konveksni lupini, in vstavlja nove trikotnike glede na predhodna in naslednja oglišča mnogokotnika od trenutnega konkavnega oglišča na konveksni lupini. Triangulacija poteka, dokler je vsota kotov trikotnikov v trenutnem oglišču manjša ali enaka od kota med konveksno lupino in mnogokotnikom. Ko ta pogoj ni več izpolnjen, algoritem prične obdelovati naslednje oglišče na konveksni lupini. Po obisku vseh oglišč na konveksni lupini algoritem izračuna konveksno lupino na preostalih konkavnih ogliščih vhodnega mnogokotnika in postopek triangulacije se ponavlja, dokler ne obdelamo vseh konkavnih oglišč. Del mnogokotnika, ki ostane, vsebuje samo konveksna oglišča, katerih triangulacija je trivialna. Tak mnogokotnik trianguliramo neposredno (glej sliko 39). Če je v mnogokotniku prisotno eno konkavno oglišče, ga je možno triangulirati neposredno, saj je konkavno oglišče vidno vsem konveksnim ogliščem. Vsi trikotniki, ki nastanejo, so sestavljeni iz konkavnega oglišča. Ko je triangulacija končana, algoritem za vsak trikotnik preveri Delaunayjev pogoj in, če je treba, opravi legalizacijo (zamenjuje diagonale dveh sosednjih si trikotnikov). 51

70 Slika 40: Primer vhodnega mnogokotnika (označenega s polno črto), konveksna lupina (črtkana črta) in koti med mnogokotnikom in konveksno lupino. Algoritem deluje v treh korakih: inicializacija, računanje kotov med mnogokotnikom in konveksno lupino in triangulacija mnogokotnika Inicializacija Mnogokotnik, ki ga algoritem prejme na vhodu, je predstavljen z zaporedjem oglišč. Ta shranimo v seznam oglišč. Nato algoritem pretvori seznam oglišč v krožni dvosmerno povezan seznam [71] ter vsakemu oglišču v seznamu oglišč nastavi kazalec na njegov zapis v krožnem dvosmerno povezanem seznamu. Za vsako oglišče algoritem izračuna kot in klasificira oglišča na konkavna ter konveksna. 52

71 5.1.2 Računanje kotov med mnogokotnikom in konveksno lupino V tem podpoglavju je predstavljena metoda za izračun kotov med mnogokotnikom in konveksno lupino. Konveksno lupino izračunamo samo nad konkavnimi oglišči mnogokotnika. Za izračun konveksne lupine uporabimo algoritem quick-hull, predstavljen v [121]. Tako mnogokotnik kot tudi konveksna lupina naj bosta orientirana v smeri urinega kazalca. Za izračun kota oz. kotov v poljubnem konkavnem oglišču v i na konveksni lupini potrebujemo še štiri dodatna oglišča. To so oglišča: v i 1 in v i+1, ki sta neposredni predhodnik in naslednik konkavnega oglišča v i na mnogokotniku, ter v j 1 in v j+1, ki sta neposredni predhodnik in naslednik oglišča v i na konveksni lupini. Obstajajo trije tipi kotov med konkavnim ogliščem na konveksni lupini in mnogokotnikom (glej sliko 41). Kot med v i 1 v i v j 1 naj bo označen z α (slika 41a), kot med v i+1 v i v j+1 z β (slika 41a) in kot med v j 1 v i v j+1 z γ (slika 41b). Kot α naj bo orientiran negativno, kot β pa pozitivno. V primeru, da kot ni orientiran tako, pravimo, da ne obstaja oz. da ni prisoten. Slika 41: Primeri kotov med konveksno lupino in mnogokotnikom. Preden predstavimo podrobnosti računanja kotov, vpeljimo naslednje trditve za konkavna oglišča mnogokotnika na konveksni lupini: - v oglišču je zmeraj prisoten vsaj eden izmed treh vrst kotov (slika 42), 53

72 - v oglišču sta lahko prisotna največ dva kota, izmed katerih nobeden ni kot γ (slika 42a), - če je v oglišču prisoten kot γ, potem α in β nista prisotna (slika 42h), - če obstaja α, ni nujno, da obstaja β (slika 42b, c, d), - če obstaja β, ni nujno, da obstaja α (slika 42e, f, g). Slika 42: Primeri kotov med mnogokotnikom in konveksno lupino. Izračun kotov poteka na naslednji način: Sprva algoritem vsem petim ogliščem (oglišča v i 1, v i, v i+1, v j 1 in v j+1 ) odšteje vrednost koordinat oglišča v i. S tem prestavi oglišče v i v koordinatno izhodišče kartezičnega koordinatnega sistema (slika 43a). Nato se na novo pridobljene koordinate oglišč pretvorijo v polarni koordinatni sistem (enačba (17)) in iz dobljenih vrednosti kotov φ i izračunamo kote α, β in γ (glej sliko 43b). 54

73 Slika 43: Primer računanja kotov v konkavnem oglišču na konveksni lupini. Kartezični koordinatni sistem (a), preslikava v polarni koordinatni sistem, rotacija točk in izračun kotov (b). Po definiciji je kot α v oglišču v i enak kotu φ 1, kot β pa je enak razliki kotov (φ 3 φ 2 ). V primeru, da sta φ 1 in φ 2 večja od φ 3 (pomeni, da sta daljici v j 1 i in v i j+1 zunaj mnogokotnika), priredimo kotu α vrednost kota v oglišču, torej φ 3. V primeru, da je samo eden izmed φ 1 ali φ 2 večji od φ 3 (ena izmed daljic v j 1 i in v i j+1 je zunaj mnogokotnika), je eden izmed kotov (α ali β) enak nič oz. pravimo, da ne obstaja. Če je φ 1 večji od φ 3, potem kot α ne obstaja, β pa je enak (φ 3 φ 2 ) in obratno, če je φ 2 večji od φ 3, potem je α enak φ 1, β pa ne obstaja. arctan ( y ), če je x > 0 x arctan ( y ) + π, če je x < 0 in y 0 x φ i = { arctan ( y ) π, če je x < 0 in y < 0 x π, če je x = 0 in y > 0 2 3π, če je x = 0 in y < 0 2 nedefinirano, če je x = 0 in y = 0 (17) 55

74 5.1.3 Triangulacija Algoritem triangulacije izbere poljubno konkavno oglišče v i na konveksni lupini in vstavlja trikotnike glede na njegova sosednja oglišča. Preden nadaljujemo z razlago postopka triangulacije, uvedimo naslednje definicije: α-trikotnik je trikotnik, ki je definiran z oglišči v i, v i 1 (predhodnik oglišča v i ) in v i 2 (predhodnik oglišča v i 1 ). β-trikotnik je trikotnik, ki je definiran z oglišči v i, v i+1 (naslednik oglišča v i ) in v i+2 (naslednika oglišča v i+1 ). 56 Triangulacija mnogokotnika v okolici konkavnega oglišča poteka v dveh korakih. V prvem koraku algoritem išče predhodnike in predpredhodnike trenutnega konkavnega oglišča v i na konveksni lupini ter tvori ustrezne trikotnike. Za trikotnik i,i 1,i 2 algoritem izračuna kot trikotnika v oglišču v i. Če je kumulativna vsota kotov α-trikotnikov v oglišču v i in kota v i 2 v i v i 1 manjša ali enaka kotu α v tem oglišču, trikotnik i,i 1,i 2 vstavimo in odstranimo oglišče v i 1. V naslednji iteraciji oglišče v i 1 predstavlja oglišče v i 2 v predhodni iteraciji. Postopek vstavljanja trikotnikov nadaljujemo, dokler je kumulativna vsota kotov α-trikotnikov v oglišču v i in kota v i 2 v i v i 1 manjša od kota α v oglišču v i. Če je kumulativna vsota kotov α-trikotnikov v oglišču v i in v i 2 v i v i 1 večja od kota α v oglišču v i, izračunamo presečišče, ki ga označimo z v s1. Presečišče izračunamo med premico na ogliščih v i in v j 1 ter daljico v. i 1 i 2 Presečišče v s1 predstavlja novo Steinerjevo točko, ki jo vstavimo na rob mnogokotnika med oglišči v i 1 in v i 2. Nato preverimo, če se v j 1 (predhodnik oglišča v i na konveksni lupini) nahaja na daljici v. i s1 Če se ne nahaja tam, potem vstavimo nov trikotnik i,i 1,s1 in odstranimo oglišče v i 1. V nasprotnem primeru (v j 1 je na daljici v ) i s1 vstavimo dva nova trikotnika, in sicer trikotnik i,i 1,j 1 in trikotnik j 1,i 1,s1, ter popravimo povezave med oglišči oz. razdelimo mnogokotnik na dve verigi. Postopek delitve mnogokotnika imenujmo α -delitev mnogokotnika

75 Delitev mnogokotnika poteka tako, da algoritem sprva vstavi novo točko v s, ki ima identične koordinate kot oglišče v j 1. Novo točko vstavimo na rob mnogokotnika med oglišči v j 1 in v p, ki predstavlja naslednika oglišča v j 1 na mnogokotniku. Nato popravimo sosednostne relacije oglišč v j 1, v s, v i in v i 2. Predhodnik oglišča v i postane oglišče v j 1, naslednik oglišča v i 2 pa oglišče v s. Predhodnik oglišča v s postane oglišče v i 2, naslednik v j 1 pa v i. Oglišči v j 1 in v s postaneta konveksni. Kot rezultat delitve mnogokotnika dobimo dodatno oglišče (oglišče v s, ki je konveksno) in dve verigi. Na koncu algoritem preveri, če sta v posamezni verigi prisotni manj kot dve konkavni oglišči. Če sta, algoritem verigo triangulira neposredno, kjer je konkavno oglišče prisotno v vseh trikotnikih. V nasprotnem primeru algoritem popravi kot v oglišču v s in ponovno izračuna kot med mnogokotnikom in konveksno lupino v oglišču v s. Slednji kot je po ponovnem izračunu vedno kot α. Oglejmo si primer delitve mnogokotnika na sliki 44. Prvi vstavljen trikotnik je bil 1,0,17, oglišče v 0 pa smo odstranili. Do tega koraka so označbe oglišč naslednje: v i = v 1, v j 1 = v 10, v p = v 11, v i 1 = v 17, v i 2 = v 16. Nato je algoritem poskusil vstaviti trikotnik 1,17,16. Kumulativna vsota kotov vseh α-trikotnikov v oglišču v 1 in kota v 16 v 1 v 17 je večja od kota α v oglišču v 1. Po prej opisanem postopku algoritem izračuna presečišče v s1 med premico na ogliščih v 1 in v 10 ter robom mnogokotnika v, kamor se presečišče tudi vstavi. Nato algoritem preveri, ali je oglišče v 10 (oglišče v j 1 ) na daljici v 1 s1 (daljica v ). i s1 Algoritem ugotovi, da je oglišče na daljici, zato vstavi dva nova trikotnika (trikotnik 1,17,10 in 10,17,s1 ). Nato ustvarimo novo oglišče v s, ki ima identične koordinate kot oglišče v 10 ter ga vstavimo na rob mnogokotnika v (rob v ). j 1 p V naslednjem koraku algoritem popravi sosednostne relacije oglišč, kjer postane: predhodnik v 1 (oglišče v i ) postane oglišče v 10 (oglišče v j 1 ), naslednik v s1 postane oglišče v s, predhodnik v s postane oglišče v s1 in naslednik v 10 postane oglišče v 1. 57

76 Slika 44: Ko je kumulativna vsota kotov α-trikotnikov v oglišču v1 in kota vi- 2vivi-1 enaka kotu α v oglišču v1 (a), iz sklenjenega zaporedja oglišč nastaneta dve verigi, prikazani z različnima barvama (b). Verigi, ki nastaneta s popravljanjem sosednostnih relacij, sta: s 1 = {v 1, v 2, v 3, v 4, v 5, v 6, v 7, v 8, v 9, v 10 } in s 2 = {v s, v 11, v 12, v 13, v 14, v 15, v 16, v s1 } (glej sliko 44b). V oglišču v s se s spremembo sosednih oglišč spremeni tako kot v oglišču kot tudi kot med mnogokotnikom in konveksno lupino. Kot v oglišču je definiran s v 11 v s v s1, kot med mnogokotnikom in konveksno lupino pa s v s1 v s v 15 (glej sliko 44b), ki je zmeraj kot α. Postopek triangulacije, kadar je kumulativna vsota kotov α-trikotnikov v oglišču v i in v i 2 v i v i 1 enaka kotu α v oglišču v i, se razlikuje samo po tem, da namesto oglišča v s1 uporabljamo oglišče v i 2. V drugem koraku algoritem išče naslednike in naslednike naslednikov trenutnega konkavnega oglišča v i na konveksni lupini ter ustvarja trikotnike. Za oglišče v i algoritem sprva poišče njegovega naslednika (označenega z v i+1 ) in naslednika le-tega oglišča (označenega z v i+2 ) v mnogokotniku. Za trikotnik i,i+1,i+2 algoritem izračuna kot trikotnika v oglišču v i. Če je kumulativna vsota vseh kotov β-trikotnikov v oglišču v i in kota v i+2 v i v i+1 manjša ali enaka kotu β v tem oglišču, trikotnik i,i+1,i+2 vstavimo in odstranimo oglišče v i+1. Postopek vstavljanja trikotnikov nadaljujemo, dokler je kumulativna vsota kotov β-trikotnikov in kota v i+2 v i v i+1 manjša od kota β v oglišču v i. 58

77 Če je kumulativna vsota kotov β-trikotnikov in kota v i+2 v i v i+1 večja od kota β v oglišču v i, izračunamo presečišče v s1 med premico na ogliščih v i in v j+1 ter daljico v. i+1 i+2 Presečišče v s1 predstavlja novo Steinerjevo točko, ki jo vstavimo na rob mnogokotnika med oglišči v i+1 in v i+2. Nato algoritem preveri, če se oglišče v j+1 nahaja na daljici v. i s1 Če se ne nahaja tam, potem algoritem vstavi nov trikotnik i,i+1,s1 in izbriše oglišče v i+1. V nasprotnem primeru vstavimo dva nova trikotnika (trikotnik i,i+1,j+1 in j+1,i+1,s1 ) in razdelimo mnogokotnik na dve verigi. Kadar je kumulativna vsota kotov β-trikotnikov v oglišču v i in v i+2 v i v i+1 enaka kotu β v oglišču v i, se postopek razlikuje samo po tem, da namesto oglišča v s1 uporabljamo oglišče v i+2. Postopek delitve mnogokotnika je analogen že napisanemu postopku α-delitve mnogokotnika s to razliko, da namesto oglišča v j 1 uporabimo oglišče v j+1, namesto v i 1 oglišče v i+1 in namesto v i 2 oglišče v i+2. Postopek delitve mnogokotnika v tem primeru imenujemo postopek β-delitve mnogokotnika. Do sedaj smo obrazložili, kako algoritem triangulira mnogokotnik s tem, da vstavlja trikotnike na podlagi predhodnih (α-trikotniki) oz. naslednjih (β-trikotniki) oglišč trenutnega konkavnega oglišča v i na konveksni lupini. V primeru, da algoritem pride do oglišča na konveksni lupini, v katerem je prisoten kot γ, postopek triangulacije spremenimo, saj ga z obstoječimi prijemi ni mogoče triangulirati. Predhodna kot tudi naslednja oglišča v i so vsebovana v notranjosti konveksne lupine. Vsak tak trikotnik, ki bi ga vstavili s predhodno omenjeno trojico oglišč ( i,i 1,i 2 ali i,i+1,i+2 ), bi lahko kršil pravilo o ravninski triangulaciji. Problem z oglišči, ki imajo prisoten kot γ, delno rešujeta predhodno opisana postopka za delitev mnogokotnika, kjer se oglišču spremeni kot γ v α ali β. Prav tako triangulacijo mnogokotnika nadaljujemo, če ima oglišče v i prisoten kot γ in je del vsaj enega izmed predhodno vstavljenih trikotnikov. V nasprotnem primeru (torej, če ima oglišče kot γ in ni del nobenega trikotnika) oglišče preskočimo. V naslednji iteraciji bo oglišče v vsakem primeru spet del konveksne lupine. Vsa ostala konkavna oglišča, ki bodo prvič postala del konveksne lupine, bodo poskrbela za spremembo kota iz γ v α ali β v oglišču v i. Algoritem, ko obdela predhodnike in naslednike trenutnega konkavnega oglišča na konveksni lupini, celoten postopek ponovi na naslednjem oglišču, ki je na konveksni lupini. Ko algoritem obdela vsa oglišča na konveksni lupini, ponovno izračuna konveksno 59

78 lupino na konkavnih ogliščih. Ko so vsa konkavna oglišča v mnogokotniku obdelana, se algoritem zaključi. Del mnogokotnika, ki ostane netrianguliran, trianguliramo neposredno (glej sliko 39c). Na koncu algoritem izvede popravljanje vseh trikotnikov z Delaunayjevim pogojem. Poglejmo primer triangulacije mnogokotnika na sliki 45. Na začetku zgradimo konveksno lupino. Ta je sestavljena iz oglišč v 15, v 10, v 1, v 9 in v 14 (slika 45a). Nato za vsako oglišče na konveksni lupini izračunamo kote med mnogokotnikom in konveksno lupino ter pričnemo postopek triangulacije, opisan v tem poglavju. Algoritem prične triangulirati mnogokotnik v poljubnem oglišču na konveksni lupini. V našem primeru naj bo to kar prvo oglišče na konveksni lupini, torej oglišče v 15. To oglišče ima samo kot β. V tem primeru bo algoritem preskočil korak konstrukcije α- trikotnikov. Algoritem bo poiskal naslednje oglišče oglišča v 15 (to je oglišče v 16 ), nato pa naslednika naslednjega oglišča (to je oglišče v 17 ). Za trikotnik 15,16,17 bo algoritem izračunal kot v 16 v 15 v 17. Ker je kot v 16 v 15 v 17 manjši od kota β v oglišču v 15 in ker še ne obstaja noben β-trikotnik v oglišču, se trikotnik 15,16,17 vstavi in oglišče v 16 se izbriše. Algoritem nadaljuje tako, da ponovno poišče naslednika oglišča v 15 (to je oglišče v 17 ) in naslednika naslednjega oglišča (to je v 0 ) ter izračuna v 17 v 15 v 0. Ker je kumulativna vsota kotov β-trikotnikov in v 17 v 15 v 0 manjša od kota β v oglišču v 15, trikotnik 15,17,0 vstavimo in izbrišemo oglišče v 17. Algoritem nadaljuje tako, da ponovno pogleda naslednje oglišče oglišča v 15 (to je v tem primeru v 0 ) in naslednika naslednjega oglišča (to je v 1 ) ter izračuna v 1 v 15 v 0. Kumulativna vsota kotov vseh do sedaj vstavljenih β-trikotnikov v oglišču v 15 in v 1 v 15 v 0 presega kot β v oglišču v 15. Zato izračunamo presečišče med robom mnogokotnika v 0 1 ter premico na ogliščih v 15 in v 9 (v 15 je trenutno oglišče, ki ga algoritem obdeluje, v 9 pa je naslednje oglišče oglišča v 15 na konveksni lupini). Presečišče predstavlja novo Steinerjevo točko, ki jo vstavimo na rob v, 0 1 označimo pa z v 20. Po prej opisanem postopku algoritem razdeli mnogokotnik na dva dela, ker se oglišče v 10 nahaja na daljici v Sprva vstavimo dva nova trikotnika, in sicer 15,0,10 in 9,20,10, nato pa razdelimo mnogokotnik. Dobimo dve verigi, in sicer s 1 = {v 1, v 2, v 3, v 4, v 5, v 6, v 7, v 8, v 9, v 10, v 20 } in s 2 = {v 21, v 11, v 12, v 13, v 14, v 15 }. Oglišče v 21 je nastalo kot dvojnik koordinat oglišča v 10 (slika 45b). Nato preverimo, če je mogoče 60

79 katero izmed zaporedij oglišč triangulirati neposredno. Izkaže se, da je možno triangulirati drugo zaporedje, saj vsebuje samo eno konkavno oglišče (oglišče v 14 ). Tako dobimo naslednje trikotnike: 14,13,12, 14,12,11, 14,11,21 in 14,21,15 (slika 45c). Algoritem nato še popravi kote v oglišču v 10 (oglišče v j+1 ), in sicer: kot v oglišču je definiran s v 20 v 10 v 9, kot β v tem oglišču pa s v 20 v 10 v 1. Algoritem je z β-trikotniki zapolnil celoten razpoložljiv kot β, zato gre na naslednje oglišče na konveksni lupini, to je oglišče v 1. Oglišče v 1 ima prisotna kota α in β. Algoritem sprva poišče predhodnika oglišča v 1 (to je oglišče v 20 ) in predpredhodnika oglišča v 1 (to je oglišče v 10 ) ter izračuna kot trikotnika v oglišču v 1 ( v 20 v 1 v 10 ). Kumulativna vsota kotov α-trikotnikov v oglišču v 1 in v 20 v 1 v 10 je enaka kotu α v oglišču v 1. Ker se oglišče v 10 (predhodnik na konveksni lupini oglišča v 1 ) ne nahaja na daljici v 1 10 (robne točke daljice se ne upoštevajo), vstavimo nov trikotnik 1,20,10 in odstranimo oglišče v 20. Ker smo kot α v oglišču v 1 zapolnili, gre algoritem na drugi korak triangulacije triangulacija oglišča v 1 in njegovih naslednikov. Dobimo trikotnik 1,2,3 in izračunamo kot trikotnika v oglišču v 1. Izračunani kot presega vrednost kota β v v 1, zato novega trikotnik ne vstavimo. Izračunamo presečišče med premico na ogliščih v 1 in v 9 (oglišči v i in v j+1 ) in robom mnogokotnika v 1 3 (rob v ). i+1 i+2 To presečišče je nova Steinerjeva točka, ki jo vstavimo na rob mnogokotnika med oglišči v 2 in v 3 (oglišče v 22 ) ter dodamo nov trikotnik 1,2,22. S tem smo obdelali oglišče v 1 (slika 45d). Postopek nadaljujemo v naslednjem oglišču na konveksni lupini, v oglišču v 9. Oglišče ima kot γ in še ni del nobenega obstoječega trikotnika (α- ali β-trikotnika). Zato ga algoritem preskoči (slika 45e). Ker je algoritem obdelal vsa oglišča na konveksni lupini, določi novo konveksno lupino nad vsemi preostalimi konkavnimi oglišči. Konkavna oglišča v mnogokotniku so v 3, v 9 in v 8 in so vsi člani nove konveksne lupine (slika 45f). Ponovno izračunamo kote med konveksno lupino in mnogokotnikom za vsako oglišče na konveksni lupini, triangulacija pa se prične v poljubnem oglišču konveksne lupine. V našem primeru pričnimo v oglišču v 3. Ker ima oglišče kota α in β, najprej generiramo α-trikotnike. Prvi je trikotnik 3,22,1, za katerega izračunamo kot v oglišču v 3. v 22 v 3 v 1 je manjši od kota α v oglišču v 3, zato trikotnik 3,22,1 vstavimo in odstranimo oglišče v 22. Za naslednji trikotnik (trikotnik 3,1,10 ) izračunamo kot v oglišču v 3 ( v 1 v 3 v 10 ). Ker je kumulativna vsota kotov α-trikotnikov v oglišču v 3 ( v 22 v 3 v 1 ) in kota v 1 v 3 v 10 manjša od kota α v oglišču v 3, vstavimo trikotnik 3,1,10 in odstranimo oglišče v 1. Nato algoritem za trikotnik 3,10,9 61

80 izračuna kot v 10 v 3 v 9. Kumulativna vsota kotov vseh α-trikotnikov v oglišču v 3 ( v 22 v 3 v 1 + v 1 v 3 v 10 ) in v 10 v 3 v 9 presega kot α v oglišču v 3. Zato izračunamo presečišče med daljico v 10 v 9 in premico na ogliščih v 3 in v 8 (oglišči v i in v j 1 ). Dobimo Steinerjevo točko, ki jo vstavimo na rob mnogokotnika v Označimo jo z v 23 (oglišče v s1 ). Ker oglišče v 8 (oglišče v j 1 ) ni na daljici v 3 23 (daljica v ), i s1 vstavimo trikotnik 3,10,23 in odstranimo oglišče v 10. Triangulacijo nadaljujemo z drugim korakom triangulacije. Generiramo trikotnik 3,4,5. v 4 v 3 v 5 je manjši od kota β v oglišču v 3, zato trikotnik vstavimo ter ostranimo oglišče v 4. Algoritem nadaljuje s trikotnikom 3,5,6. Kumulativna vsota kotov vseh β-trikotnikov in v 5 v 3 v 6 presega kot β v oglišču v 3, zato izračunamo presečišče med premico na ogliščih v 3 in v 9 ter daljico v. 5 6 Presečišče označimo z v 24 (glej sliko 45g). Nato popravimo sosednostne relacije v mnogokotniku, saj je oglišče v 9 (oglišče v j+1 ) na daljici v 3 24 (daljica v ). i s1 Zatem oglišče v 9 podvojimo (označimo ga z v 25 ) in ga vstavimo na rob mnogokotnika v Nato razdelimo mnogokotnik na dva dela, in sicer: v 24, v 6, v 7, v 8, v 9 ter v 25, v 23, v 3. Za oba dela mnogokotnika algoritem ugotovi, da ju je možno neposredno triangulirati. Prvo zaporedje vsebuje eno konkavno oglišče (oglišče v 8 ). Trikotniki, ki nastanejo, so: 8,7,6, 8,6,24 in 8,24,9. Drugo zaporedje ima samo tri oglišča, iz katerih nastane trikotnik 25,23,3. Ker v mnogokotniku ne obstaja več nobeno konkavno oglišče, se algoritem zaključi. Rezultat triangulacije vidimo na sliki 45h. Na koncu algoritem popravlja obstoječe trikotnike tako, da zadostijo Delaunayjevemu pogoju. 62

81 Slika 45: Primer triangulacije konkavnega mnogokotnika. 63

82 5.1.4 Robni primer V prejšnjem podpoglavju smo opisali delovanje algoritma triangulacije mnogokotnika, temelječega na konveksni lupini. Algoritem triangulira dele mnogokotnika, ki so med zunanjim obročem mnogokotnika ter konveksno lupino. Če ima oglišče kot α, generiramo trikotnike glede na trenutno oglišče in predhodna oglišča mnogokotnika. Če ima oglišče kot β, tvorimo trikotnike glede na trenutno oglišče na konveksni lupini in naslednja oglišča na mnogokotniku. Če ima oglišče kot γ in ni vsebovano še v nobenem trikotniku triangulacije, potem triangulacija z obstoječimi postopki v okolici takega oglišča ni možna. Povedali smo, da so predhodna in naslednja oglišča takega oglišča vsebovana v konveksni lupini, zaradi česar lahko dobimo neravninsko triangulacijo. Zato algoritem tako oglišče preskoči. V primeru, da imamo na konveksni lupini vsa oglišča, pri katerih je prisoten kot γ, triangulacijski postopek odpove (za primer glej sliko 46). γ. Slika 46: Mnogokotnik, kjer imajo vsa oglišča na konveksni lupini prisoten kot V tem primeru najprej poiščemo oglišče na konveksni lupini, ki ima najmanjšo vrednost koordinate x. Označimo ga z v i. Nato poiščemo konveksna oglišča mnogokotnika, ki imajo vrednost koordinate x manjšo od vrednosti koordinate x oglišča v i, in izmed njih izberemo oglišče v n z najmanjšo razdaljo do oglišča v i. Povezava med tema 64

83 ogliščema je diagonala, ki je zmeraj v celoti znotraj mnogokotnika. Z diagonalo lahko razdelimo mnogokotnik na dve verigi. S tem se kot v oglišču v i spremeni iz γ v α ali β, kar nam omogoča, da mnogokotnik v okolici oglišča v i trianguliramo na že opisan način. Kot rezultat delitve mnogokotnika dobimo dve dodatni oglišči (oglišče v s1 in oglišče v s2 ), dve neodvisni verigi. Na sliki 47a vidimo robni primer, kjer imajo vsa oglišča kot γ. Oglišče v 12 predstavlja oglišče v i, oglišče v 0 pa je potem oglišče v 12. Rezultat popravljanja sosednostnih relacij med oglišči je na sliki 47b, kjer prva veriga predstavlja oglišča v 0, v s2, v 13, v 14, v 15, v 16, druga veriga pa oglišča v 12, v s1, v 1, v 2, v 3, v 4, v 5, v 6, v 7, v 8, v 9, v 10, v 11 in v 12. Slika 47: Primer delitve zaporedja oglišč mnogokotnika v dve medsebojno neodvisni zaporedji oglišč Triangulacija mnogokotnika z luknjami Triangulacija mnogokotnika z luknjami je rešena na podoben način, kot smo to naredili pri robnem primeru. Tako zunanji obroč mnogokotnika kot tudi luknje so predstavljene z ločenimi seznami oglišč in orientirane v smeri urinega kazalca. Algoritem triangulira mnogokotnik z luknjami na sledeč način: Že v koraku inicializacije priredimo luknjam informacijo o tem, kateremu obroču pripadajo, in obroču vse luknje. V času triangulacije algoritem sprva preveri, ali ima zunanji obroč luknjo. Če jo ima, se ustvari seznam konkavnih oglišč, ki je sestavljen iz konkavnih oglišč zunanjega obroča in konkavnih oglišč vseh lukenj v zunanjem obroču. Nad tem seznamom konkavnih oglišč izračunamo konveksno lupino. 65

84 Če vsaj eno oglišče na konveksni lupini pripada zunanjemu obroču mnogokotnika, potem trianguliramo del mnogokotnika med konveksno lupino in zunanjim obročem mnogokotnika po že opisanem postopku (glej podpoglavje 5.1.3). V nasprotnem primeru (torej, če so vsa oglišča konveksne lupine del ene ali več lukenj oz. če so vsi koti γ) združimo zunanji obroč in luknjo mnogokotnika. Pri postopku združevanja najprej poiščemo oglišče na konveksni lupini (oglišče v i ), ki ima najmanjšo koordinato x, temu oglišču pa najbližje oglišče (oglišče v n ), ki ima manjšo koordinato x. Nato vstavimo v mnogokotnik diagonalo na ogliščih v i in v n, ki povezuje luknjo, na kateri je oglišče v i, ter zunanji obroč mnogokotnika. V ogliščih v i in v n ponovno izračunamo kote med mnogokotnikom in konveksno lupino, postopek triangulacije pa pričnemo v oglišču v i. Primer triangulacije mnogokotnika z luknjami si lahko ogledamo na sliki 48. Imejmo mnogokotnik z oglišči v 0, v 1, v 2, v 3 in dve luknji, kjer je prva definirana z oglišči v 4, v 5, v 6, v 7, druga pa z v 8, v 9, v 10, v 11. Konkavna oglišča so v 4, v 5, v 6, v 7, v 8, v 9, v 10, v 11. Mnogokotnik ima dve luknji, zato kreiramo seznam konkavnih oglišč, ki je sestavljen iz vseh konkavnih oglišč mnogokotnika in vseh lukenj. Nad tem seznamom oglišč izračunamo konveksno lupino, ki je sestavljena iz v 4, v 5, v 9, v 10, v 11, v 7 (slika 48a). Nato ugotovimo, da nobeno oglišče konveksne lupine ni na zunanjem obroču mnogokotnika. Iz tega razloga pričnemo s postopkom združevanja zunanjega obroča mnogokotnika in luknje. Oglišče z najmanjšo koordinato x na konveksni lupini je oglišče v 10 (oglišče v i ), temu najbližje oglišče na zunanjem obroču mnogokotnika pa oglišče v 3 (oglišče v n ). Ti oglišči podvojimo glede na koordinate. Tako dobimo oglišče v 12, ki ima enake koordinate kot oglišče v 3, in oglišče v 13, ki ima enake koordinate kot oglišče v 10. Oglišče v 13 vstavimo na rob mnogokotnika e 3,0, oglišče v 12 pa na e 10,11. Slednje oglišče je tudi del konveksne lupine. Nato ustvarimo seznam oglišč, kjer združimo zunanji obroč mnogokotnika in zanko, na kateri je oglišče z najmanjšo koordinato x (oglišče v 3 ). Na tak način dobimo nov mnogokotnik, definiran z oglišči v 3, v 10, v 9, v 8, v 7, v 10, v 13, v 0, v 1, v 2, triangulacijo pa pričnemo v oglišču v 10. V tem oglišču vstavimo naslednja α-trikotnika 10,13,11, 11,13,14 in naslednje β-trikotnike 10,3,2, 10,2,9 in 9,2,15 (slika 48b). Triangulacijo nadaljujemo v naslednjem oglišču na konveksni lupini, to je oglišče v 11. V tem oglišču vstavljamo samo 66

85 β-trikotnike. Najprej vstavimo 11,14,0. Naslednji trikotnik 11,0,1 bi presegel kot β v oglišču v 11, zato vstavimo novo Steinerjevo točko na e 0,1 (oglišče v 16 ). Ker je naslednje oglišče (oglišče v 7 ) na konveksni lupini del luknje, in ne zunanjega obroča mnogokotnika, združimo zunanji obroč mnogokotnika in to luknjo. Tako dobimo nov mnogokotnik, definiran na ogliščih: v 11, v 7, v 6, v 5, v 4, v 17, v 16, v 1, v 15, v 9, v 8. Nato vstavimo β-trikotnika 11,0,7 in 7,0,16 (slika 48c). Triangulacijo nadaljujemo v oglišču v 17, kjer ponovno vstavimo β-trikotnike, in sicer 17,16,4, 4,16,18 (slika 48d). Nato gremo na oglišče v 4, kjer vstavimo 4,18,1, 4,1,5 in 5,1,19 (slika 48e). Naslednje oglišče, ki ga obravnavamo, je oglišče v 5. V tem koraku nastaneta trikotnika 5,19,15 in 5,15,9 (slika 48f). Ker so vsa oglišča obdelana, izračunamo novo konveksno lupino. Ta je sestavljena iz oglišč v 8 in v 6 (slika 48g). Po izračunov kotov pričnemo triangulacijo v oglišču v 8. Tako vstavimo trikotnik 8,11,7. Oglišče v 8 se spremeni iz konkavnega v konveksnega, in ker imamo v mnogokotniku prisotno samo še eno konkavno oglišče, lahko ta del trianguliramo neposredno. Tako iz konkavnega oglišča (oglišče v 6 ) zaporedno ustvarjamo trikotnike, in sicer 6,7,8, 6,8,9 in 6,9,5. Rezultat triangulacije je viden na sliki 48h. 67

86 Slika 48: Primer triangulacije mnogokotnika z luknjami. 68

87 5.1.6 Rezultati triangulacije Na sliki 49 pokažemo nekaj primerov dobljene triangulacije z opisanim algoritmom, na sliki 50 vidimo triangulacijo mnogokotnikov z večjim številom oglišč, na sliki 51 pa primere triangulacije mnogokotnikov z luknjami. Vsi rezultati so dobljeni brez korekcije z Delaunayjevim kriterijem. Slika 49: Primeri triangulacije mnogokotnikov z manjšim številom oglišč. 69

88 Slika 50: Primeri triangulacije mnogokotnikov z večjim številom oglišč. 70

89 Slika 51: Primer triangulacije mnogokotnikov z luknjami. 71

90 5.2 Popravljanje trikotnikov triangulacije Po gradnji omejene Delaunayjeve triangulacije analiziramo dobljene trikotnike in jih po potrebi spremenimo. Posebno pozornost namenimo: topim trikotnikom in trikotnikom, ki vključujejo konveksna oglišča mnogokotnikov Popravljanje trikotnikov s topimi koti Podpoglavje opisuje postopek analize in popravljanja topih trikotnikov, ki imajo tri sosednje trikotnike (glej sliko 52). Iz topega oglišča v c mnogokotnika (oglišče v 6 na sliki 52a) pošljemo vektor proti središču očrtane krožnice c l. Nato izračunamo presečišče med vektorjem in vsemi robovi trenutnega topega trikotnika. S pomočjo sosedskih relacij trikotnikov triangulacije se pomaknemo v sosedni trikotnik preko roba, kjer se je presečišče zgodilo. Postopek ponavljamo, dokler ne naletimo na primer, ko se nobeden izmed robov trikotnika ne seka z vektorjem ali pa poslani vektor preseka rob mnogokotnika. Če se nobeden izmed robov trikotnika ne seka z vektorjem, pomeni, da je središče topega trikotnika v mnogokotniku in topega trikotnika ne popravljamo. Nasprotno, če se vektor in rob mnogokotnika sekata, vstavimo Steinerjevo točko na prebodeni rob mnogokotnika. Točko vstavimo po naslednjem postopku: Najprej poiščemo skupno oglišče v a, ki je na prebodenem robu mnogokotnika in topem trikotniku (v a je v 8 na sliki 52a). Nato izberemo rob topega trikotnika, ki ne vsebuje oglišča v a (rob e 3,6 na sliki 52a), in izračunamo točko p, ki predstavlja razpolovišče omenjenega roba. Nato kreiramo vektor c l p in izračunamo presečišče tega s predhodno prebodenim robom mnogokotnika (rob e 8,9 na sliki 52a). Na presečišče vstavimo novo Steinerjevo točko, ki jo označimo z v s. To točko nato vstavimo v obstoječo triangulacijo. To naredimo tako, da vsem trikotnikom, ki so bili prebodeni z vektorjem v c c l, premaknemo oglišče v a v oglišče v s. Po premiku vseh trikotnikov dobimo vrzel, ki jo zapolnimo s trikotnikom Δ cas. Rezultat celotnega koraka popravljanja topih trikotnikov s tremi sosedi vidimo na sliki 52b. 72

91 točke. Slika 52: Postopek popravljanja topega trikotnika z vstavljanjem Steinerjeve V podpoglavju opisan postopek izboljšave triangulacije popravlja samo trikotnike, ki imajo središče očrtane krožnice zunaj mnogokotnika in imajo tri sosedne trikotnike Popravljaje trikotnikov v konveksnih ogliščih Vemo, da srednja os vedno izvira iz konveksnih oglišč mnogokotnika (glej sliko 53). Zato moramo ustrezno popraviti vse trikotnike v konveksnih ogliščih. Zaradi nadaljnjih postopkov moramo zagotoviti naslednji lastnosti: da konveksna oglišča mnogokotnika pripadajo samo enemu trikotniku in ta trikotnik naj bo enakostraničen. Slika 53: Srednja os mnogokotnika vedno izvira iz konveksnega oglišča. 73

92 Na sliki 54a vidimo primer triangulacije mnogokotnika. Postopek popravljanja trikotnikov v konveksnih ogliščih mnogokotnika z vstavljanjem Steinerjevih točk je sledeč: Sprva ustvarimo seznam trikotnikov, ki vsebujejo konveksno oglišče v c (na sliki 54a je v c = v 1 ). Ta seznam trikotnikov uredimo v protiurni smeri okrog oglišča v c, da dobimo trikotniški trak T s (na sliki 54a je T s = Δ 2, Δ 1 ). Nato oglišču v c poiščemo najbližje oglišče v n (na sliki 54a je v n = v 4 ), tako da zaporedno računamo evklidsko razdaljo od v c do vseh oglišč, ki sestavljajo trikotnike v T s. Če sta dve oglišči enako oddaljeni od oglišča v c, potem vzamemo prvo. Razdalja d v c v n predstavlja polmer krožnice k, katere središče je v oglišču v c. Na presečišču med krožnico k s polovičnim polmerom in robovoma mnogokotnika, ki vsebujeta konveksno oglišče v c, vstavimo dve Steinerjevi točki v s1 in v s2. Prva Steinerjeva točka v s1 se vstavi na rob v c v c+1, v s2 pa na rob v c 1 v c. Dve na novo pridobljeni točki moramo sedaj povezati v obstoječo triangulacijo mnogokotnika. To storimo tako, da najprej izračunamo kot v c 1 v c v c+1 v konveksnem oglišču v c (na sliki 54b računamo kot v 4 v 1 v 2 ). Nato zaporedno v protiurni smeri spreminjamo trikotnike iz T s, kjer vsakemu trikotniku prestavimo oglišče iz v c v v s1 ali v s2. Kriterij, ki določa, kam se bo oglišče prestavilo, je kumulativna vsota kotov trikotnikov v oglišču v c. Dokler je kumulativna vsota kotov trikotnikov v oglišču v c manjša od razpolovišča kota v oglišču v c, trikotniku prestavimo oglišče v c v oglišče v s1 (glej sliko 54b). V nasprotnem primeru pa trikotniku prestavimo oglišče iz v c v v s2 (glej sliko 54c). Po spremembi vseh trikotnikov iz T s dobimo vrzel, ki jo zapolnimo z dvema dodatnima trikotnikoma: Δ c,s1,s2 (glej sliko 54d) in Δ s2,s1,n (glej sliko 54e). Na sliki 54f je prikazana triangulacija mnogokotnika, kjer so vsa obdelana konveksna oglišča. 74

93 Slika 54: Popravljanje trikotnikov v konveksnih ogliščih mnogokotnika. Z opisanim postopkom popravljanja trikotnikov triangulacije zagotovimo, da je obema zahtevanima lastnostnima zadoščeno, torej da konveksno oglišče pripada samo enemu trikotniku in da je le-ta enakokraki. V primeru, da je v konveksnem oglišču mnogokotnika prisoten samo en trikotnik, se postopek popravljanja trikotnikov triangulacije poenostavi tako, da ne kreiramo seznama trikotnikov. V primeru, da najbližja točka v n ni na istem obroču kot konveksno oglišče v c, se postopek triangulacije vrzeli razlikuje od prej opisanega. Poglejmo konveksno oglišče v c na sliki 55a. Po urejanju trikotnikov v nasprotni smeri urinega kazalca (T s = Δ 2, Δ 1, Δ 3 ), iskanju najbljižje točke v n in spreminjanju trikotnikov v T s (glej sliko 55b) dobimo vrzel. Zapolnimo jo z vstavljanjem dveh novih trikotnikov: Δ c,s1,s2 (glej sliko 55c) in Δ n,s1,s2 (glej sliko 55d). Rezultat popravljanja trikotnikov v vseh konveksnih ogliščih vidimo na sliki

94 Slika 55: Popravljanje triangulacije, ko najbližja točka in konveksno oglišče nista na istem obroču. Zaradi premikanja trikotnikov se lahko zgodi, da premik oglišča trikotnik izrodi (vsa tri oglišča postanejo kolinearna). Izrojene trikotnike algoritem odstrani. 76

95 Slika 56: Rezultat popravljanja trikotnikov v vseh konveksnih ogliščih. 5.3 Generiranje srednje osi Po koraku triangulacije in popravljanja trikotnikov omejene Delaunayjeve triangulacije sledi korak gradnje aproksimacije srednje osi mnogokotnika. Postopek rekurzivno obišče vse trikotnike in zgradi aproksimacijo srednje osi. Srednja os se zgradi na podlagi tipov trikotnikov, ki jih definiramo, kot sledi (glej sliko 57): trikotniki, ki sovpadajo z enim robom mnogokotnika, so tipa A, trikotniki, ki sovpadajo z dvema robovoma mnogokotnika, so tipa B in trikotniki, ki sovpadajo s tremi robovi mnogokotnika, so tipa C. Slika 57: Trikotnike razdelimo v tipe A, B in C. 77

96 Trikotniki tipa C cepijo oz. razdelijo srednjo os, trikotniki tipa B predstavljajo izhodišče srednje osi iz konveksnih oglišč mnogokotnika, medtem ko trikotniki tipa A prispevajo h končni rešitvi odsek. Celoten postopek gradnje aproksimacije srednje osi je obrazložen v nadaljevanju. Algoritem prične gradnjo aproksimativne srednje osi v poljubnem trikotniku tipa C. Takšen trikotnik vedno obstaja zaradi predhodnega vstavljanja Steinerjevih točk. Sprva se za omenjen tip trikotnika preveri, ali je središče očrtane krožnice trikotnika v tem trikotniku. Če je, središče očrtane krožnice trikotnika predstavlja točko na srednji osi in algoritem rekurzivno obišče vse sosednje trikotnike. Če algoritem naleti na trikotnik tipa A, ustvari povezavo med zadnjo točko, vstavljeno na srednjo os, in razpoloviščem skupnega roba z naslednjim trikotnikom. Ker je trikotnik tipa A, pomeni, da ima samo dva sosednja trikotnika in da je skupni rob z naslednjim trikotnikom samo eden. Če algoritem obišče trikotnik tipa B, odstrani vse daljice med trenutnim trikotnikom tipa B in zadnjim obiskanim trikotnikom tipa C, ki so bile dodane zaradi trikotnikov tipa A. Nato vstavi daljico, ki povezuje središče očrtane krožnice zadnjega trikotnika tipa C in vrhnjega oglišča (angl. top vertex) trikotnika tipa B. V primeru, da središča očrtane krožnice ni v trikotniku (topi trikotnik), je postopek gradnje aproksimativne srednje osi nekoliko drugačen. Sprva algoritem pošlje vektor iz topega oglišča trikotnika tipa C proti središču očrtane krožnice. Vsi trikotniki, prebodeni z žarkom, se označijo kot onemogočeni in ne prispevajo h končni rešitvi. Algoritem rekurzivno obiskuje sosednje trikotnike in na podlagi posameznih tipov obiskanih trikotnikov doda daljico k aproksimativni srednji osi, kot smo pravkar opisali. 78

97 Slika 58: Gradnja aproksimativne srednje osi. Poglejmo primer na sliki 58. Gradnjo srednje osi pričnemo v trikotniku C 2 (slika 58a). Središče očrtane krožnice trikotnika C 2 je v trikotniku A 1. Trikotnik A 1 onemogočimo in ga v nadaljnjem postopku gradnje srednje osi ne obravnavamo več (ne vpliva na strukturo srednje osi). Iz trikotnika C 2 obiščemo trikotnik B 2. Zadnjo točko, vstavljeno 79

98 na srednjo os (središče očrtane krožnice trikotnika C 2 ), povežemo z zgornjo točko trikotnika B 2 (glej sliko 58b). Algoritem se rekurzivno vrne na trikotnik C 2, iz katerega obiščemo trikotnik B 1 (slika 58c). Uporabimo enak postopek kot prej in algoritem se rekurzivno vrne na trikotnik C 2. Iz tega trikotnika obiščemo še zadnji neobiskan sosednji trikotnik trikotnika C 2 trikotnik A 1. Ker je bil trikotnik A 1 označen za onemogočenega (iz tega razloga ne vpliva na strukturo srednje osi), ga preskočimo in nadaljujemo z gradnjo srednje osi s trikotnikom C 1 (slika 58d). Središče očrtane krožnice trikotnika C 1 povežemo z zadnjo točko, vstavljeno na srednjo os (središče očrtane krožnice trikotnika C 2 ). Algoritem obišče trikotnik A 2. Zadnjo točko, vstavljeno na srednjo os, povežemo z razpoloviščem skupnega roba med trikotnikoma A 2 in A 3 (glej sliko 58e). Algoritem nadaljuje gradnjo srednje osi s trikotnikom A 3, kjer postopek ponovimo zadnjo točko na srednji osi povežemo z razpoloviščem skupnega roba trikotnikov A 3 in C 3 (slika 58f). Naslednji obiskan trikotnik je trikotnik C 3. Središče očrtane krožnice C 3 je v trikotniku A 3, zato trikotnik A 3 onemogočimo. Ker je bil A 3 že obravnavan, se njegov vpliv na srednjo os izbriše in povežemo še zadnjo točko na srednji osi (središče očrtane krožnice C 3 ) z razpoloviščem skupnega roba med A 2 in A 3 (glej sliko 58g). Iz C 3 algoritem nadaljuje pot do trikotnika B 5. Zadnjo na srednjo os vstavljeno točko (središče očrtane krožnice trikotnika C 3 ) povežemo z vrhnjim vozliščem trikotnika B 5 (slika 58h). Podobno obdelamo trikotnik B 4 na sliki 58i. Nato se rekurzivno vrnemo do trikotnika C 1. Edini še neobiskan sosednji trikotnik trikotnika C 1 je trikotnik A 4. V tem primeru povežemo zadnjo točko na srednji osi (središče očrtane krožnice C 1 ) in razpolovišče skupnega roba med trikotnikoma A 4 in A 5 (glej sliko 58j). Nato algoritem obišče trikotnik A 5 in spet doda daljico na srednjo os (razpolovišče skupnega roba med A 4 in A 5 ter razpolovišče skupnega roba med A 5 in B 3 ) (glej sliko 58k). Gradnjo nadaljujemo s trikotnikom B 3. Sprva vse spremembe na srednji osi (vstavljene točke), nastale zaradi trikotnikov tipa A med trenutnim trikotnikom (trikotnik B 3 ) in zadnjim trikotnikom tipa C (trikotnik C 1 ), izbrišemo. Nato se na srednjo os vstavi povezava med središčem očrtane krožnice C 1 in vrhnjim ogliščem B 3. Rekurzija se prekine (algoritem je obiskal vse trikotnike) in postopek gradnje srednje osi se zaključi. Končno srednjo os mnogokotnika vidimo na sliki 58l. Enak postopek gradnje srednje osi uporabimo tudi pri mnogokotnikih z luknjami. 80

99 5.4 Rezultati V tem poglavju predstavimo rezultate gradnje srednje osi z našim algoritmom na testnih mnogokotnikih. Na sliki 59 vidimo srednje osi mnogokotnikov z manj oglišči in brez lukenj, na sliki 60 srednje osi pri mnogokotnikih z luknjami, na sliki 61 pa vidimo rezultat algoritma na mnogokotnikih z večjim številom oglišč. Slika 59: Primeri aproksimativnih srednjih osi, dobljenih z našim algoritmom, na mnogokotnikih z manjšim številom oglišč in brez lukenj. Število oglišč: 4 (a); 6 (b); 7 (c); 8 (d); 13 (e) (povzeto po [114]); 19 (f). 81

100 Slika 60: Število oglišč: 30 (a); 12 (b); 341 (c). Primeri aproksimativne srednje osi nad mnogokotniki z luknjami. 82

101 Slika 61: Aproksimativna srednja os nad mnogokotniki z večjim številom oglišč. Število oglišč 997 (a); 1204 (b); 270 (c) (povzeto po [19, 114, 122]). 83

102 6 Analiza algoritma V tem poglavju analiziramo naš algoritem najprej glede na časovno in prostorsko zahtevnost, nato pa glede na kvaliteto aproksimacije srednje osi v primerjavi z obstoječo eksaktno in aproksimacijsko rešitvijo. 6.1 Izpeljava časovne zahtevnosti Predstavljeni algoritem deluje v treh korakih. V prvem koraku zgradimo omejeno Delaunayjevo triangulacijo. Algoritem triangulira mnogokotnik s pomočjo konveksne lupine, ki jo zgradi nad konkavnimi oglišči. Za konstrukcijo konveksne lupine smo uporabili algoritem quick-hull, predstavljen v [121], ki ima časovno zahtevnost O(u log u), kjer u predstavlja število konkavnih oglišč. Nato izračunamo kote med konveksno lupino in mnogokotnikom. Časovna zahtevnost tega koraka je O(z), kjer je z u in predstavlja število oglišč konveksne lupine. Nato zaporedno obiskujemo konkavna oglišča na konveksni lupini ter vstavljamo trikotnike med konveksno lupino in mnogokotnikom. Po obisku vseh oglišč algoritem izračuna konveksno lupino na preostalih konkavnih ogliščih vhodnega mnogokotnika in postopek triangulacije ponavlja, dokler ne obdelamo vseh konkavnih oglišč. Del mnogokotnika, ki ostane, vsebuje samo konveksna oglišča, katerih triangulacija je izvedljiva v konstantnem času. Ko je triangulacija končana, algoritem za vsak trikotnik preveri Delaunayjev pogoj in po potrebi zamenjuje diagonale dveh sosednjih si trikotnikov. Celotna časovna zahtevnost algoritma za triangulacijo mnogokotnika je odvisna od tega, kolikokrat se izračuna konveksna lupina. Potemtakem je pričakovana časovna zahtevnost O(Hu log u), kjer H predstavlja število vgnezdenih konveksnih lupin. Najslabši možen primer mnogokotnika za triangulacijo vidimo na sliki 62, kjer imamo n 3 konkavnih oglišč, ta pa so razporejena tako, da v eni iteraciji dobimo samo šest oglišč na konveksni lupini. Posledično dobimo n konveksnih lupin. Za prvo konveksno lupino mora algoritem prevereriti vseh n 3 konkavnih oglišč, v drugi iteraciji pa le 6 še n 9, v tretji n 15 itd. Število oglišč, ki jih mora algoritem preveriti, predstavlja 84

103 naslednja vrsta n 6 i=1 (n + 3 6i), ki jo predstavimo z enačbo n2. Za eno iteracijo algoritem quick-hull potrebuje O(n log n) časa, kjer je n število oglišč. Če imamo n 6 iteracij, potem quick-hull potrebuje (n 3) log (n 3) + (n 9) log (n 9) + (n 15)log (n 15)+ To vsoto lahko zapišemo kot log ( je enako n 6 I=1 n 6 i=1 12 (n + 3 6i) (n+3 6i) ), kar (n + 3 6i) log (n + 3 6i). Upoštevajmo, da je logaritemska funkcija naraščajoča, zato je za vsak i log(n + 3 6i) log n. Posledično je: n 6 (n + 3 6i) log(n + 3 6i) I=1 n 6 (n + 3 6i) log n I=1 n 6 log n (n + 3 6i). I=1 n 6 Dobljeno končno aritmetično zaporedje I=1 (n + 3 6i) zapišemo z naslednjo enačbo: S m = m(b 1 + b m ) 2 m = b i i=1 ; b i = n + 3 6i. Tukaj moramo ločiti dva primera, in sicer: - n = 6h in - n = 6h + a; a {1,2,3,4,5}, kjer je h N. Če je n = 6h, potem je k (6h + 3 6i) I=1 = h(6h 3 + 3) 2 = 3h 2 = 3 ( n 2 6 ), kar je enako n2 12. Če je n = 6h + a, potem je 85

104 k (6h + a + 3 6i) I=1 = h(6h + a 3 + a + 3) 2 = h(3h + a) n a a = (n + 2a ), kar je enako n2 a Iz tega sledi: n 6 log ( (n + 3 6i) (n+3 6i) ) { i=1 n 2 12 n 2 a 2 12 log n ; 6 n, log n ; 6 n kar nam daje najslabšo časovno zahtevnost O(n 2 log n). Najboljša časovna zahtevnost je O(n). Tako časovno zahtevnost dobimo pri konveksnih mnogokotnikih in konkavnih mnogokotnikih, ki imajo manj kot dve konkavni oglišči. Slika 62: Primer najslabšega možnega mnogokotnika, kjer dobimo vgnezdene konveksne lupine na konkavnih ogliščih. 86

105 V drugem koraku trikotnike analiziramo in jih, če je treba, popravimo po postopku, ki je opisan v podpoglavju 5.2. Najslabši možen primer predstavlja konveksen mnogokotnik, saj moramo vstaviti 2n novih oglišč (za vsako konveksno oglišče vstavimo dve oglišči). Posledično dobimo 3n 2 trikotnikov. V zadnjem koraku sledi sprehod skozi vse dobljene trikotnike triangulacije s pomočjo medsosednostnih relacij, kjer se zgradi srednja os. Ta korak se izvede v času O(n). Potemtakem je celotna časovna zahtevnost algoritma odvisna od algoritma triangulacije. 6.2 Meritve Za določitev učinkovitosti našega algoritma (AMA Approximate Medial Axis) smo njegove izvajalne čase primerjali z izvajalnimi časi algoritma za generiranje eksaktne srednje osi (EMA Exact Medial Axis). Tega smo dobili iz [32] in je implementiran po postopku, opisanem v [33]. Algoritem za generiranje eksaktne srednje osi ne podpira mnogokotnikov z luknjami, zato smo meritve izvajalnega časa opravili samo na mnogokotnikih brez lukenj. Rezultati meritev generiranja eksaktne in aproksimacijske srednje osi so prikazani v tabeli 1, čas pa je izražen v milisekundah. Meritve smo opravili na računalniku s procesorjem Intel Core Quad Q GHz s 4 GB pomnilnika, uporabili pa smo mnogokotnike s slike 63. Slika 63: Primeri mnogokotnikov za meritve. Konveksni mnogokotnik (a), konkavni mnogokotnik (b) in zvezdni mnogokotnik (c). 87

106 Tabela 1: Primerjava izvajalnih časov (ms) našega aproksimacijskega algoritma in algoritma za generiranje eksaktne srednje osi. Število oglišč Algoritem Vrsta mnogokotnika Konveksni Konkavni Zvezdni EMA AMA EMA AMA EMA AMA EMA AMA EMA AMA Meritve smo izvajali nad mnogokotniki z velikim številom oglišč, na katerih smo samo enkrat izračunali konveksno lupino (tabela 1). Meritve za realne primere smo povzeli v tabeli 2, kjer smo uporabili mnogokotnike iz slik 59 in

107 Tabela 2: Meritve časa izvajanja za realne primere mnogokotnikov v milisekundah. Mnogokotnik Št. oglišč AMA EMA Slika 59a Slika 59b Slika 59c Slika 59d Slika 59e Slika 59f Slika 61a Slika 61b Slika 61c Jedro našega aproksimacijskega algoritma za generiranje srednje osi je triangulacija. Tega smo primerjali z algoritmom za omejeno Delaunayjevo triangulacijo, ki temelji na prebirni premici (označujemo ga s SWL) in je predstavljen v [31]. V času objave je bil med najučinkovitejšimi algoritmi za konstrukcijo omejene Delaunayjeve triangulacije. Izvajalne čase obeh algoritmov smo povzeli v tabeli 3, kjer smo triangulirali mnogokotnike s slike 63. V tabeli 4 smo primerjali izvajalne čase triangulacij za realne primere mnogokotnikov iz slik 59, 60 in

108 Konveksni Konkavni Zvezdni Tabela 3: Izvajalni časi (ms) po korakih za algoritem VanGogh in primerjava leteh z algoritmom triangulacije, ki temelji na prebirni premici. Mnogokotnik VanGogh Čas raču- Vrsta mnogokotnika Št. oglišč nanja konveksnih lu- Čas triangulacije Število Čas legalizacije zamenjanih robov Skupen čas SWL pin

109 Mnogokotnik Tabela 4: Triangulacija realnih primerov mnogokotnikov. Št. oglišč VanGogh (konkavna/ konveksna) Št. konveksnih lupin Čas računanja konveksnih lupin Čas triangulacije Čas legalizacije Skupen čas SWL Slika 59a 0/ Slika 59b 1/ Slika 59c 2/ Slika 59d 2/ Slika 59e 4/ Slika 59f 7/ Slika 60a 20/ Slika 60b 8/ Slika 60c 176/ Slika 61a 505/ Slika 61b 577/ Slika 61c 97/ Naš algoritem triangulacije temelji na računanju konveksne lupine. Konveksna lupina se izračuna zgolj na konkavnih ogliščih mnogokotnika. Ker le-teh pri konveksnem mnogokotniku ni, se mnogokotnik triangulira neposredno. Iz tega razloga pri takih mnogokotnikih tudi dosegamo najnižje čase. Pri konkavnem in zvezdnem mnogokotniku so konkavna oglišča prisotna in se konveksna lupina mora izračunati vsaj enkrat. Iz meritev v tabeli 3 je razvidno, da je naš algoritem triangulacije bistveno hitrejši na danih primerih mnogokotnikov kot algoritem triangulacije, ki temelji na prebirni premici. Enako velja za realne mnogokotnike s slik 59, 60 in

110 6.3 Prostorska zahtevnost Analizirajmo sedaj še prostorsko zahtevnost postopka generiranja aproksimacije srednje osi. Prostorska zahtevnost je v celoti odvisna od števila oglišč. Algoritem sprva prebere seznam oglišč, ki predstavljajo enostavni mnogokotnik. Prostorska zahtevnost je seveda enaka številu oglišč n. Nato v drugem koraku nad vhodnimi oglišči algoritem ustvari omejeno Delaunayjevo triangulacijo. Triangulacija sestoji iz n 2 trikotnikov, kjer je n število vseh oglišč mnogokotnika. V tretjem koraku trikotnike analiziramo in jih po potrebi popravimo. Odseke triangulacije popravimo z vstavljanjem Steinerjevih točk. Če privzamemo najslabši možni primer, kjer obdelujemo konveksni mnogokotnik, potem vstavimo 2n oglišč. V zadnjem koraku algoritma samo ustrezno povežemo sosedne trikotnike. Najslabša možna prostorska zahtevnost je potem 3n 2, ki predstavlja število trikotnikov. 6.4 Metrika za določitev natančnosti naše aproksimacije Najpomembnejša informacija pri vsakem aproksimativnem algoritmu je informacija o tem, kako natančno/kvalitetno rešitev dobimo v primerjavi z eksaktno rešitvijo. Iz tega razloga smo razvili metriko, ki oceni kvaliteto aproksimativne rešitve [122]. Ocenitev temelji na razmerju ploščin med eksaktno in aproksimacijsko srednjo osjo s ploščino celotnega mnogokotnika. 92

111 Slika 64: Prikaz metanja žarkov v notranjost mnogokotnika. Za ocenitev posamezne srednje osi sta potrebna dva koraka. V prvem koraku mnogokotnik diskretiziramo. Iz vsake točke na robovih mnogokotnika pošljemo žarek v notranjost mnogokotnika pravokotno glede na rob, na katerem točka leži. Nato izračunamo presečišče žarka z eksaktno srednjo osjo in razdaljo (označeno z d e ) med začetno točko žarka na mnogokotniku ter tem presečiščem. Poleg diskretizacije robov opravimo tudi diskretizacijo kota v konkavnih ogliščih (glej sliko 64). Kot sprva odmaknemo za π 2 od obeh robov v konkavnem oglišču, nato pa na enak način pošiljamo žarke v notranjost mnogokotnika in računamo presečišča z eksaktno srednjo osjo. Vsota vseh dolžin d e predstavlja ploščino mnogokotnika, ki jo označimo s S a. V drugem koraku ponovimo postopek, kjer iz vsake diskretizirane točke pošljemo žarek pravokotno v notranjost mnogokotnika in računamo presečišča z eksaktno in aproksimativno srednjo osjo. Nato izračunamo razdaljo d e in d a, ki predstavlja razdaljo od diskretizirane točke do aproksimativne srednje osi. Izberemo krajšo razdaljo in dol- m žine seštejemo, kot kaže naslednja enačba S b = i=0 min (d e, d a ). Razlika med ploščino celotnega mnogokotnika S a in ploščino S b predstavlja ploščino med eksaktno in aproksimacijsko srednjo osjo, ki jo označujemo s S c (slika 65c). Končno oceno metrike za kvaliteto rešitve izračunamo kot razmerje med celotno ploščino mnogokotnika S a in ploščino S c, ki je ploščina med srednjima osema (Napaka = S c S a ). 93

112 Slika 65: Primer eksaktne srednje osi (a), aproksimacije srednje osi (b) in ploščine med njima (c). 6.5 Primerjava natančnosti V podpoglavju primerjamo natančnost rešitev našega algoritma (AMA) in algoritma, temelječega na Voronoijevem diagramu (VDA), z rešitvijo algoritma za eksaktno srednjo os (EMA). Implementacijo Voronoijevega diagrama smo pridobili iz [34], ki implementira prebirni Fortunov algoritem [28]. Algoritem za konstrukcijo srednje osi, ki temelji na Voronoijevem diagramu, smo opisali v razdelku Kvaliteto rešitev aproksimacijskih algoritmov (AMA in VDA) smo ocenjevali z metriko, opisano v podpoglavju 6.4. Kvaliteta rešitve srednje osi, pridobljene z Voronoijevim diagramom, je zelo odvisna od gostote oglišč mnogokotnika [24]. Nižja kot je gostota oglišč, slabše kvalitete je rešitev in obratno. V naših eksperimentih smo sprva generirali aproksimativno srednjo os na originalnem mnogokotniku in ocenili, kako blizu je eksaktni srednji osi. Nato smo na vsako razpolovišče roba mnogokotnika vstavili dodatno oglišče. S tem smo povečali gostoto oglišč in ponovno ocenili kvaliteto rešitve z Voronoijevim diagramom. Postopek smo ponavljali, dokler ni bila kvaliteta dobljene rešitve primerljiva s kvaliteto rešitve našega algoritma. Z vstavljanjem oglišč na razpolovišča robov mnogokotnika se je čas izvajanja seveda močno povečeval. Rezultati meritev so prikazani v tabeli 5. Sodeč po meritvah je naš algoritem bistveno boljši. Na izbranih primerih je generiral aproksimativno srednjo os, ki je bila po oceni metrike za natančnost 5% napačna. V najboljšem primeru je dal eksaktno rešitev (glej primer na sliki 59a). 94

113 Tabela 5: Primerjava našega algoritma z Voronoijevim diagramom. AMA Št. vstavljenih Steiner- Mnogokotnik Št. začetnih oglišč časi [ms] [%] Izvajalni Napaka jevih točk Slika 59a Slika 59b Slika 59c Slika 59d Slika 59e Slika 59f VDA Št. Izvajalni Napaka oglišč časi [ms] [%]

114 7 Zaključek Doktorska disertacija obravnava postopek gradnje srednje osi enostavnih mnogokotnikov. V uvodnih poglavjih smo se seznanili s pojmom srednje osi in pogledali njene osnovne značilnosti. Opravili smo pregled sorodnih del ter izpostavili prednosti in slabosti obstoječih pristopov. Ugotovili smo, da nekateri avtorji rešujejo problem srednje osi z Voronoijevim diagramom, aproksimativno srednjo os pa predstavljajo povezane Voronoijeve točke sosednjih si Voronoijevih celic. Voronoijev diagram je dualen Delaunayjevi triangulaciji, saj Voronoijeve točke sovpadajo s središči trikotnikov Delaunayjeve triangulacije. To je bila tudi motivacija za pričujočo nalogo. V drugem poglavju smo zato podali definicije Voronoijevih diagramov Delaunayjeve triangulacije. V naslednjem poglavju smo definirali omejeno Delaunayjevo triangulacijo. V četrtem poglavju smo opravili pregled sorodnih del. Metode smo razdelili na eksaktne in aproksimativne, slednje pa na vektorske in rastrske. V naslednjem poglavju smo predstavili naš algoritem za tvorjenje aproksimativne srednje osi enostavnih mnogokotnikih. Naš algoritem deluje v treh korakih: omejena Delaunayjeva triangulacija, korekcija triangulacije s hevrističnim postopkom in konstrukcija aproksimacije srednje osi mnogokotnika. Poglavje 6 smo posvetili analizi našega algoritma. Izpeljali smo časovno in prostorsko zahtevnost algoritma, nato pa ga primerjali tudi z meritvijo izvajalnih časov z referenčnimi algoritmi. Ker je v večini primerov časovno najbolj zahtevna konstrukcija omejene Delaunayjeve triangulacije, smo primerjali naš algoritem z algoritmom, ki deluje po principu prebirne premice. Na koncu smo naš algoritem za konstrukcijo aproksimativne srednje osi testirali glede na kvaliteto rešitve v primerjavi z aproksimativnim algoritmom, ki temelji na Voronoijevem diagramu. Ugotovili smo, da je naš algoritem občutno boljši od tega, do sedaj najpogosteje uporabljanega pristopa. Cilj doktorske disertacije je bil pregled obstoječih metod za gradnjo aproksimacije srednje osi ter izdelava novega, učinkovitejšega postopka. Postopki, ki generirajo aproksimacijo srednje osi z uporabo Voronoijevega diagrama, potrebujejo za gradnjo srednje osi veliko število dodatnih kontrolnih točk na robovih mnogokotnika, da dosežejo želeno natančnost. Posledica tega so daljši izvajalni časi algoritma. Zato smo postavili naslednji hipotezi: 96

115 Za generiranje aproksimacije srednje osi enostavnega mnogokotnika lahko namesto Voronoijevega diagrama uporabimo omejeno Delaunayjevo triangulacijo in Steinerjeve točke, vstavljene na robove mnogokotnika. in Število Steinerjevih točk, vstavljenih na robove mnogokotnika, je možno zmanjšati s hevristikami, ki zagotovijo izgradnjo ustrezne triangulacije, primerne za konstrukcijo aproksimativne srednje osi, s čimer odpravimo uporabniško nastavljivo pragovno funkcijo. Pri primerjavi AMA in EMA se je izkazalo, da naš algoritem dosega nižje izvajalne čase. Pri primerjavi natančnosti rešitve naš algoritem generira v najboljšem primeru eksaktno srednjo os, v najslabšem primeru pa aproksimativno srednjo os s 5% napako z metriko, ki smo jo predlagali. Pri primerjavi AMA in VDA smo z našim algoritmom dosegali občutno nižje izvajalne čase ob primerljivi natančnosti rešitve. Poleg tega je naš algoritem pri manjšem številu vstavljenih Steinerjevih točk na robove mnogokotnika generiral primerljivo srednjo os kot VDA, s čimer smo potrdili hipotezi. Povzemimo izvirne znanstvene prispevke predstavljene doktorske disertacije: zasnova in implementacija novega algoritma triangulacije mnogokotnika, ki temelji na konveksni lupini, zasnova in implementacija postopka za generiranje aproksimativne srednje osi, ki temelji na omejeni Delaunayjevi triangulaciji, vpeljava hevristike, ki nadzoruje triangulacijo z načrtnim vstavljanjem dodatnih točk na odseke robov mnogokotnika, razvoj hevristike za oceno kakovosti dobljene aproksimacije srednje osi, teoretična analiza časovne zahtevnosti za nov algoritem triangulacije mnogokotnika, ki temelji na konveksni lupini, teoretična analiza časovne in prostorske zahtevnosti algoritma za generiranje aproksimativne srednje osi in 97

116 eksperimentalni dokaz učinkovitosti našega algoritma v primerjavi z eksaktnim in tistim, ki uporablja Voronoijev diagram za pridobitev aproksimativne srednje osi. Pristop z uporabo omejene Delaunayjeve triangulacije se je v naših testih pokazal kot zelo učinkovita rešitev. Dosega izjemno nizke čase izvajanje in hkrati daje zelo natančno aproksimacijo srednje osi. 98

117 Literatura [1] Blum, H. A Transformation for extracting new descriptors of shapes. Symposium on Models for the Perception of Speech and Visual Form, Cambridge: MIT-Press, 1967; str [2] Blum, H. Biological shape and visual science (Part 1). Journal of theoretical biology, 38, (1973), str [3] Lee, J. A Spatial Access-oriented implementation of a 3-D GIS topological data model for urban entities. Geoinformatica, 8, (2004), 3, str [4] Mena, J. B., Automatic vectorization of segmented road networks by geometrical and topological analysis of high resolution binary images. Knowledge-Based Systems, 19, (2006), 8, str [5] Hallinan, P. W., Gordon, G. G., Yuille, A. L., Giblin, P., Mumford, D. Two and three dimensional patterns of the face. A. K. Peters, [6] Geraerts, R., Overmars, M. H., Clearance based path optimization for motion planning. Proceedings of the 2007 International Conference on Computational Science and Its Applications - Volume Part I. Kuala Lumpur: Springer-Verlag, 2007, str: [7] Geraerts, R., Overmars, M. Creating high-quality roadmaps for motion planning in virtual environments. The International Journal of Robotics Research, 26, (2007), 8, str [8] Guibas, L., Holleman, R., Kavraki, L. E., A probabilistic roadmap planner for flexible objects with a workspace medial axis based sampling approach. Intelligent Robots and Systems, 1, (1999), str [9] Sonka, M., Hlavac, V., Boyle, R., Image processing, analysis, and machine vision (second edition). Thomson-Engineering, [10] Gooch, B., Coombe, G., Shirley, P., Artistic Vision: painterly rendering using computer vision techniques. Proceedings of the 2nd international symposium on Nonphotorealistic animation and rendering. Annecy: ACM, [11] Sheehy, D., Armstrong, C., Robinson, D. Shape description by medial surface construction. Visualization and Computer Graphics, 2, (1996), 1, str

118 [12] Hubbard, P. M. Approximating polyhedral with spheres for time critical collision detection. ACM Transactions on Graphics, 15, (1996), 3, str [13] Sheffer, A., Etizon, M., Rappoport, A., Bercovier, M. Hexahedral mesh generation using the embedded Voronoi graph. Engineering with Computers, 15, (1999), 3, str [14] Gershon, E., Elaine C., Sam D. MATHSM: medial axis transform toward high speed machining of pockets. Computer-Aided Design, 37, (2005), 2, str [15] Gibblin, P. J., Kimia, B. B. A formal classification of 3D medial axis points and their local geometry. Pattern Analysis and Machine Intelligence, 26, (2004), 2, str [16] Teichmann, M., Teller, S. Assisted Articulation of Closed Polygonal Models. Arnaldi, B., Hégron, G. (ur.). Computer Animation and Simulation 98. Vienna: Springer, 1999, str [17] Dey, T. K., Zhao, W. Approximate medial axis as a Voronoi subcomplex. Computer- Aided Design, 36, (2004), 2, str [18] Foskey, M., Lin, M. C., Manocha, D. Efficient computation of a simplified medial axis. Journal of Computing and Information Science in Engineering, 3, (2003), 4, str [19] Dorado, R. Medial axis of a planar region by offset self-intersections. Computer- Aided design, 41, (2009), 12, str [20] Choi, H., Choi, S., Moon, H. Mathematical theory of medial axis transform. Pacific Journal of Mathematics, 181, (1997), 1, str [21] Aichholzer, O., Aigner, W., Aurenhammer, F., Hackl, T., Jüttler, B., Rabl, M. Medial axis computation for planar free-form shapes. Computer-Aided Design, 41, (2009), 5, str [22] Aurenhammer, F., Klein, R. Voronoi Diagrams. Sack, J.R., Urrutia, G. Handbook of Computational Geometry. Amsterdam: Elsevier Science Publishing, 2000, str [23] Dey, T. K., Zhao, W. Approximating the medial axis from the Voronoi diagram with a convergence guarantee. Algorithmica, 38, (2004), 1, str

119 [24] Brandt J. W. Convergence and continuity criteria for discrete approximation of the continuous planar skeletons. CVGIP: Image Understanding. 59, (1994), 1, str [25] Jin, L., Donguk, K., Lisen, M., Deok-Soo, K., Shi-Min, H. A sweepline algorithm for Euclidean Voronoi diagram of circles. Computer-Aided Design, 38, (2006), 3, str [26] Held, M., Hubera, S. Topology-oriented incremental computation of Voronoi diagrams of circular arcs and straight-line segments. Computer-Aided Design, 41, (2009), 5, str [27] Kalra, N., Ferguson, D., Stentz, A. Incremental reconstruction of generalized Voronoi diagrams on grids. Robotics and Autonomous Systems, 57, (2009), 2, str [28] Fortune, S. J. A sweepline algorithm for Voronoi diagrams. Algorithmica, 2, (1987), 1-4, str [29] De Berg, M., Cheong, O., Van Kreveld, M., Overmars, M. Computational geometry, algorithms and applications. Santa Clara: Springer-Verlag, [30] Maur, P., Kolingerova, I. The employment of regular triangulation for constrained Delaunay triangulation. Lagana, A., Gavrilova, M. L., Kumar, V., Mun, Y., Tan, C. J. K., Gervasi, O. (ur). ICCSA (3), Springer, 2004, str [31] Domiter, V., Žalik, B. Sweep-line algorithm for constrained Delaunay triangulation. International Journal of Geographical Information Science, 22, (2008), 4, str [32] [33] Lee, D. T. Medial axis transformation of a planar shape. Pattern Analysis and Machine Intelligence, 4, (1982), 4, str [34] [35] Xia, H., Tucker, P. G. Distance Solutions for Medial Axis Transform. Proceedings of the 18th International Meshing Roundtable, Berlin: Springer, 2009, str [36] Lixin, C., Jian, L. Computation of medial axis and offset curves of curved boundaries in planar domain. Computer-Aided Design, 40, (2008), 4, str

120 [37] Soumen, B., Gaurav, H. A Medial Axis Based Thinning Strategy for Character Images. In proceedings of the second National Conference on Computer Vision, Pattern Recognition, Image Processing and Graphics (NCVPRIPG). Jaipur, 2011, str [38] Przybylski, M., Asfour, T., Dillmann, R. Planning grasps for robotic hands using a novel object representation based on the medial axis transform. Intelligent Robots and Systems (IROS). San Francisco: IEEE, 2011, str [39] Leymarie, F. F., Imielinska, C. Z., Chang, M. C., Kimia, B. B. A General Approach to Model Biomedical Data from 3D Unorganised Point Clouds with Medial Scaffolds. Proceedings of the 2Nd Eurographics Conference on Visual Computing for Biology and Medicine. Leipzig: Eurographics Association, 2010, str [40] Sethian, J. Level Set Methods and Fast Marching Methods: Evolving Interfaces. Computational Geometry, Fluid Mechanics, Computer Vision, and Materials Science. Cambridge: Cambridge University Press, [41] Zhao, H. A Fast Sweeping Method for Eikonal Equations. Mathematics of Computation, 74, 2005, str [42] Guo, Z., Hall, R.W. Parallel thinning with two-subiteration algorithms. Communications, 32, (1989), 3, str [43] Godunov, S. K. A finite-difference method for the numerical computation of discontinuous solutions of the equations of fluid dynamics. Mat. Sb. 47, (1959), str [44] Palágyi, K. A 3D fully parallel surface-thinning algorithm. Theoretical Computer Science, 406, (2008), 1-2, str [45] Lee, D. T., Drysdale, R. L. Generalization of Voronoi diagrams in the plane. SIAM Journal on computing, 10, (1981), 1, str [46] Aichholzer, O., Aurenhammer, F., Hackl, T., Jüttler, B., Oberneder, M., Šír Z. Computational and structural advantages of circular boundary representation. International Journal of Computational Geometry and Applications, 21, (2007), 1, str [47] Chew, L. P. Constrained Delaunay triangulations. Algorithmica, 4, (1987), 1, str

121 [48] Van Bremmelen, J., Wuak, W., Van Hekken, M., Oosterom, P. Vector vs. raster based algorithms for cross country movement planning. Auto Carto 11 Proceedings. Minneapolis, 1993; str [49] Kallmann, M., Bieri, H., Thalmann, D. Fully dynamic constrained Delaunay triangulations. Brunnett G., Hamann B., Mueller H., Linsen L. (ur). Geometric Modelling for Scientific Visualization. Heidelberg: Springer-Verlag, 2003, str [50] Kallmann, M. Path Planning in Triangulations. Proceedings of the IJCAI Workshop on Reasoning, Representation, and Learning in Computer Games. Edinburgh, 2005, str [51] Yan H., Wang H., Chen Y., Dai G. Path Planning Based on Constrained Delaunay Triangulation. Proceedings of the 7 th World Congress in Intellegent Control and Automation. Chongqing: IEEE, 2008, str [52] Agarwal, P. K., Arge, L., Yi, K. I/O-efficient construction of constrained Delaunay triangulations. Brodal, G., Leonardi S.(ur). Algorithms ESA Berlin: Springer Berlin Heidelberg, 2005, str [53] Isenburg, M., Liu, Y., Shewchuk, J. R., Shoeyink, J. Streaming computation of Delaunay triangulations. ACM Transactions on Graphics, 25, (2006), 3, str [54] Poorten, P. M., Zhou, S., Jones, C. B. Topologically-Consistent Map Generalisation Procedures and Multy-scale Spatial Databases. Geographic Information Science, 2478, (2002), str [55] Lawson, C. L. Software for C1 surface interpolation. Mathematical Software III. Academic Press. New York: Academic press Inc., 1977, str [56] Descartes R. Principia philosophiae [57] Voronoi, G. Nouvelles applications des paramatres continusala theorie des formes quadratiques. Journal fu r die reine und angewandte Mathematik (Crelles Journal), 1908, (1907), 134, str [58] Wang, P., Gonzalez, M. C., Hidalgo, C. A., Barabasi, A. L. Understanding the spreading patterns of mobile phone viruses. Science, 324, (2009), 5930, str [59] Zeki A. M. Representation of water resources in satellite images using Voronoi diagrams. The 2th International Conference on Water Resources and Arid Environment, Riyadh, 2006, str [60] Green, P. J., Sibson, R. Computing Dirichlet Tessellations in the Plane. The Computational Journal, 21, (1978), 2, str

122 104 [61] George, P. L., Hecht, F., Saltel, E. Automatic mesh generator with specified boundary. Magnetics, 26, (1990), 2, str [62] Cui-ping, L., Zhong-xue, L., Dong-ming, Y. Ore grade interpolation based on Thiessen polygon method. Journal of Liaoning Technical University, 26, (2007), 4, str [63] Boots, B., South, R. Modeling retail trade areas using higher-order, multiplicatively weighted Voronoi diagrams. Journal of Retailing, 73, (1997), 4, str [64] Liang-Ying, S. I., Guan-Yu, D., Cheng, L. V., Xiang-Hua, L. Polycrystal geometry modeling of crystal plasticity finite element method with voronoi diagram. Journal of Materials and Metallurgy [65] Okabe, A., Boots, B., Sugihara, K., Chiu, S. N. Spatial Tessellations: Concepts and Applications of Voronoi Diagrams. New York: John Wiley & Sons, [66] Sriraman, B., Freiman, V., Lirette-Pitre, N. Interdisciplinarity, Creativity, and Learning: Mathematics With Literature, Paradoxes, History, Technology, and Modeling. Charlotte: Information Age Publishing, [67] Abbas, C., Dzulkifli, M., Azizah, A. M. Exploiting Voronoi diagram properties in face segmentation and feature extraction. Pattern Recognition, 41, (2008), 12, str [68] Vachhani, L., Mahindrakar, A. D., Sridharan, K. Mobile Robot Navigation Through a Hardware-Efficient Implementation for Control-Law-Based Construction of Generalized Voronoi Diagram. Mechatronics, 16, (2011), 6, str [69] Kohler, T., Gumerman, G. Dynamics in human and primate societies. New York: Oxford University Press. Oxford, [70] O'Rouke J. Computational Geometry in C. New York: Cambridge University Press, [71] Preparata, F. P., Shamos, M. I. Computational geometry An introduction. New York: Springer-Verlag, [72] Yu, W., Lee, H. K., Hariharan, S., Bu, W., Ahmed, S. Evolving generalized Voronoi diagrams for accurate cellular image segmentation. Journal of the International Society for Advancement of Cytometry, 77, (2010), 4, str [73] Kim, D. S., Cho, Y., Kim, D., Kim, S., Bhak, J., Lee, S. H. Euclidean voronoi diagrams of 3d spheres and applications to protein structure analysis. Japan Journal of Industrial and Applied Mathematics, 22, (2005), 2, str

123 [74] Kim, D., Kim, D. S. Region-expansion for the voronoi diagram of 3d spheres. Computer-Aided Design, 38, (2006), 5, str [75] Ryu, J., Kim, D., Cho, Y., Park, R., Kim, D. S. Computation of molecular surface using euclidean voronoi diagram. Computer-Aided Design and Applications, 2, (2005), 1-4, str [76] Will, H. M. Fast and efficient computation of additively weighted voronoi cells for applications in molecular biology. Lecture Notes in Computer Science, 1432, (1998), str [77] Qin, X., Zhang, S., Dong, X., Jiang, H., Qian, F. Impact of Human Activities on Red- Crowned Crane Nest-Sites Based on Voronoi Diagram. Environmental Science and Information Application Technolog. Los Alamitos: IEEE Computer Society, 2009, str [78] Aurenhammer, F. Voronoi diagrams a survey of a fundamental geometric data structure. ACM Computing Surveys, 23, (1991), 3, str [79] Aurenhammer F., Klein R. Voronoi Diagrams // Optimierung und Kontrolle, Bericht Nr. 92, Karl-Franzens-Univ. Graz and Tech. Univ. Gratz [80] Gilbarg D., Trudinger N. Elliptic partial differential equations of second order. Springer [81] Tsitsiklis, J. N. Efficient algorithms for globally optimal trajectories. IEEE Transactions on Automatic Control, 40, (1995), 9, str [82] Helmsen, J., Puckett, E., Colella, P., Dorr, M. Two new methods for simulating photolithography development in 3-D. In Proceedings of the SPIE The International Society for Optical Engineering Optical Microlithography, 2726, (1996), 9, str [83] Sethian J. A. Level Set Methods. Cambridge University Press. Cambridge UK [84] Kimmel, R., Sethian J. A. Computing geodesic paths on manifolds. Applied Mathematics, 95, (1998), 15, str [85] Boué, M., Dupuis, P. Markov chain approximations for deterministic control problems with affine dynamics and quadratic costs in the control. SIAM Journal on Numerical Analysis, 36, (1999), 3, str [86] Kao, C. Y., Osher, S. J., Qian, J. Lax Friedrichs sweeping schemes for static Hamilton Jacobi equations. Journal of Computational Physics, 196, (2004), 1, str

124 [87] Kao, C. Y., Osher, S., Tsai, Y. H. Fast sweeping methods for static Hamilton Jacobi equations. SIAM Journal on Numerical Analysis, 42, (2005), 6, str [88] Tsai, Y. H. R., Cheng, L. T., Osher, S., Zhao, H. K. Fast sweeping algorithms for a class of Hamilton Jacobi equations. SIAM Journal on Numerical Analysis, 41, (2003), 2, str [89] Zhang, Y. T., Zhao, H. K., Chen, S. Fixed-point iterative sweeping methods for static Hamilton-Jacobi equations. Methods and Applications of Analysis, 13, (2006), str [90] Dijkstra, E. W. A note on two problems in connexion with graphs. Numerische Mathematik, 1, (1959), str [91] Amenta, N., Bern, M. Surface Reconstruction by Voronoi Filtering. Discrete and Computational Geometry, 22, (1999), 4, str [92] Amenta, N., Choi, S., Kolluri, R. K. The power crust, unions of balls, and the medial axis transform. Computational Geometry: Theory and Applications, 19, (2001), 2-3, str [93] Domiter V. Algoritmi triangulacije s strategijo prebiranja. Maribor: Fakulteta za elektrotehniko, računalništvo in informatiko, Dostopno na: [ ]. [94] Šír, Z., Feichtinger, R., Jüttler, B. Approximating curves and their offsets using biarcs and Pythagorean hodograph quintics. Computer-Aided Design, 38, (2006), 6, str [95] Held M., Eibl J. Biarc approximation of polygons within asymmetric tolerance bands. Computer-Aided Design, 37, (2005), 4, str [96] Barequet, G., Dickerson, M. T., Goodrich, M. T. Voronoi diagrams for convex polygon-offset distance functions. Discrete & Computational Geometry, 25, (2001), 2, str [97] Ge, Y., Stelts, D. R., Zha, X., Wang, J., Vining, D. J. Computing the central path of colon lumen in helical CT images. Medical Imaging 1998: Image Processing, 3338, (1998), str [98]

125 [99] Ghosh, P.K., Bigelow, C. A Formal Approach to letter-shape description for Type Design. Stanford: Stanford University, [100] Prasad, L., Skourikhine, A. N., Schlei, B. R. Feature-based syntactic and metric shape recognition. Vision Geometry IX, 4117, (2000), str [101] Ogniewicz, R. L. Skeleton-space: a multiscale shape description combining region and boundary information. Computer Vision and Pattern Recognition. Seattle: IEEE Computer Society, 1994, str [102] Kelly, T. L Bulit-up roof (BUR) or modified roof assembly system. United States Patent and Trademark Office, US A. [103] Robinson, G. P., Colchester, A. C. F., Griffin, L. D., Hawkes, D. J. Integrated skeleton and boundary shape representation for medical image interpretation. European Conference on Computer Vision. Santa Margherita Ligure: Springer, 1992, str [104] Kosinka, J., Lávička, M. A unified Pythagorean hodograph approach to the medial axis transform and offset approximation. Journal of Computational and Applied Mathematics. 235, (2011), 12, str [105] Lindquist, W. B., Lee, S.M., Coker, D., Jonec, K., Spanne, P. Medial axis analysis of three dimensional tomographic images of drill core samples. Journal of Geophysical Research, 101, (1996), str [106] Broutta, A., Coeurjolly, D., Sivignon, I. Hierarchical discrete medial axis for spheretree construction. International Workshop on Combinatorial Image Analysis. Berlin: Springer, 2009, str [107] López, A. M., Lumbreras, F., Serrat, J., Villanueva, J. J. Evaluation of Methods for Ridge and Valley Detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 21, (1999), 4, str [108] Haciomeroglu, M., Laycock, R. G., Day, A. M. Distributing Pedestrians in a Virtual Environment. Cyberworlds. 07. International Conference. Los Alamitos: IEEE Computer Society, 2007, str [109] Sundar, H., Silver, D., Gagvani, N., Dickinson, S. Skeleton based shape matching and retrieval. Proceedings of the Shape Modeling International, Washington: IEEE Computer Society, 2003, str

126 [110] Sherbrooke, E. C., Patrikalakis, N. M., Wolter, F. E. Differential and Topological Properties of Medial Axis Transforms. Graphical Models and Image Processing, 58, (1996), 6, str [111] Seng-Beng, H., Dyer, C. R. Shape Smoothing Using Medial Axis Properties. IEEE Transactions Pattern Analysis and Machine Intelligence, 8, (1986), 4, str [112] Wilmarth, S. A., Amato, N. M., Stiller, P. F. Motion planning for a rigid body using random networks on the medial axis of the free space. Proceedings of the fifteenth annual symposium on Computational geometry. Miami Beach: ACM, 1999, str [113] Pottmann, H., Peternell, M. Applications of Laguerre geometry in CAGD. Computer Aided Geometric Design. 15, (1998), 2, str [114] Smogavec, G. Aproksimacija srednje osi enostavnih mnogokotnikov. Maribor: Fakulteta za elektrotehniko, računalništvo in informatiko, Dostopno na: [ ]. [115] Graham, R. L. An efficient algorithm for determining the convex hull of a finite planar set. Information processing letters, 1, (1972), 2, str [116] Lamot, M., Žalik, B. A fast polygon triangulation algorithm based on uniform plane subdivision. Computer & Graphics, 27, (2003), 2, str [117] Garey, M., Johnson, F. P., Preparata, R. E. Triangulating a simple polygon. Information Proceeding Letters. 7, (1987), 4, str [118] Seidl, R. A Simple and Fast Incremental Randomized algorithm for Computing Trapezoidal Decompositions and for Triangulating Polygons. Computational Geometry: Theory and Applications, 1, (1991), str [119] Gaurav, H., Soumen, B. Skeletonizing character images using a modified medial axis-based strategy. International Journal of Pattern Recognition and Artificial Intelligence, 25, (2011), 7, str [120] Jau-hong K., Jen-hui, C., Tsaipei, W. Chromosome classification based on the band profile similarity along approximate medial axis. Pattern Recognition, 41, (2008), 1, str [121] Bradford, B. C., Dobkin, P. D., Huhdanpaa, H. The Quickhull Algorithm for Convex Hulls. ACM Transactions on Mathematical Software, 22, (1996), 4, str

127 [122] Smogavec, G., Žalik, B. A Fast Algorithm for Constructing Approximate Medial Axis of Polygons, Using Steiner Points. Advances in Engineering Software, 52, (2012), 0, str [123] Osher, S., Sethian, J. Fronts propagating with curvature dependant speed. Journal of Computational Physics, 79, (1988), 1, str [124] Lam, L., Lee, S. W., Suen, C. Y. Thinning Methodologies-A Comprehensive Survey. IEEE Transactions on Pattern Analysis and Machine Intelligence, 14, (1992), 9, str [125] Hongbin, P., Junali, C., Yashe, Z. Fingerprint Thinning Algorithm Based on Mathematical Morphology. Proceedings of the Eighth IEEE International Conference on Electronic Measurement and Instruments (ICEMI-07), 2, (2007), str [126] Attali, D., Montanvert, A. Computing and Simplifying 2D and 3D Continuous Skeletons. Computer Vision and Image Understanding, 67, (1997), 3, str [127] Ogniewicz, R. L., Ilg. M. Voronoi skeletons: Theory and applications. Proceedings on Computer Vision and Pattern Recognition. Champaign: IEEE Computer Society, 1992, str [128] Boissonnat, J. D., Geiger, B. Three-dimensional reconstruction of complex shapes based on the Delaunay triangulation. Proceedings on Biomedical Image Processing and Biomedical Visualization. San Jose: Acharya, R. S., Goldgof, D. B., 1993, str [129] Schmitt, M., Mattioli, J. Morphologie Mathematique, Masson, Paris, 1993 [130] Attali, D., Bertolino, P., Montanvert, A. Using Polyballs to Approximate Shapes and Skeletons. Proceeding on the 12th International Conference on Pattern Recognition. Jerusalem: IEEE Computer Society Press,1994, str [131] Brandt, J. W., Algazi, V. R. Continuous skeleton computation by Voronoi diagram. CVGIP: Image Understanding, 55, (1992), 3, str [132] Ghosh, S. Geometric approximation of curves and singularities of secant maps : a differential geometric approach. Groningen: University of Groningen, 2010 [133] Burden, R. L., Faires, J. D. Numerical Analysis, 8. Pacific Grove: Brooks/Cole, 2005 (Brooks/Cole 8 th Edition 2005) 109

128 8 Življenjepis Ime in priimek: Gregor Smogavec Rojen: Maribor, Slovenija Oče: Mati: Borut Smogavec Renata Smogavec Šolanje: Osnovna šola Borcev za severno mejo, Maribor Srednja elektro-računalniška šola Maribor UM-FERI: dodiplomski študij računalništva in informatike, smer programska oprema UM-FERI: podiplomski študij računalništva in informatike Zaposlitev: UM-FERI tehniški sodelavec UM-FERI asistent UM-FERI raziskovalec UM-FERI asistent 110

ANALITIČNA GEOMETRIJA V RAVNINI

ANALITIČNA GEOMETRIJA V RAVNINI 3. Analitična geometrija v ravnini Osnovna ideja analitične geometrije je v tem, da vaskemu geometrijskemu objektu (točki, premici,...) pridružimo števila oz koordinate, ki ta objekt popolnoma popisujejo.

Prikaži več

1. izbirni test za MMO 2018 Ljubljana, 16. december Naj bo n naravno število. Na mizi imamo n 2 okraskov n različnih barv in ni nujno, da imam

1. izbirni test za MMO 2018 Ljubljana, 16. december Naj bo n naravno število. Na mizi imamo n 2 okraskov n različnih barv in ni nujno, da imam 1. izbirni test za MMO 018 Ljubljana, 16. december 017 1. Naj bo n naravno število. Na mizi imamo n okraskov n različnih barv in ni nujno, da imamo enako število okraskov vsake barve. Dokaži, da se okraske

Prikaži več

7. VAJA A. ENAČBA ZBIRALNE LEČE

7. VAJA A. ENAČBA ZBIRALNE LEČE 7. VAJA A. ENAČBA ZBIRALNE LEČE 1. UVOD Enačbo leče dobimo navadno s pomočjo geometrijskih konstrukcij. V našem primeru bomo do te enačbe prišli eksperimentalno, z merjenjem razdalj a in b. 2. NALOGA Izračunaj

Prikaži več

5 SIMPLICIALNI KOMPLEKSI Definicija 5.1 Vektorji r 0,..., r k v R n so afino neodvisni, če so vektorji r 1 r 0, r 2 r 0,..., r k r 0 linearno neodvisn

5 SIMPLICIALNI KOMPLEKSI Definicija 5.1 Vektorji r 0,..., r k v R n so afino neodvisni, če so vektorji r 1 r 0, r 2 r 0,..., r k r 0 linearno neodvisn 5 SIMPLICIALNI KOMPLEKSI Definicija 5.1 Vektorji r 0,..., r k v R n so afino neodvisni, če so vektorji r 1 r 0, r 2 r 0,..., r k r 0 linearno neodvisni. Če so krajevni vektorji do točk a 0,..., a k v R

Prikaži več

Osnove matematicne analize 2018/19

Osnove matematicne analize  2018/19 Osnove matematične analize 2018/19 Neža Mramor Kosta Fakulteta za računalništvo in informatiko Univerza v Ljubljani Funkcija je predpis, ki vsakemu elementu x iz definicijskega območja D f R priredi natanko

Prikaži več

Vektorji - naloge za test Naloga 1 Ali so točke A(1, 2, 3), B(0, 3, 7), C(3, 5, 11) b) A(0, 3, 5), B(1, 2, 2), C(3, 0, 4) kolinearne? Naloga 2 Ali toč

Vektorji - naloge za test Naloga 1 Ali so točke A(1, 2, 3), B(0, 3, 7), C(3, 5, 11) b) A(0, 3, 5), B(1, 2, 2), C(3, 0, 4) kolinearne? Naloga 2 Ali toč Vektorji - naloge za test Naloga 1 li so točke (1, 2, 3), (0, 3, 7), C(3, 5, 11) b) (0, 3, 5), (1, 2, 2), C(3, 0, 4) kolinearne? Naloga 2 li točke a) (6, 0, 2), (2, 0, 4), C(6, 6, 1) in D(2, 6, 3), b)

Prikaži več

M

M Š i f r a k a n d i d a t a : Državni izpitni center *M16140111* Osnovna raven MATEMATIKA Izpitna pola 1 SPOMLADANSKI IZPITNI ROK Sobota, 4. junij 016 / 10 minut Dovoljeno gradivo in pripomočki: Kandidat

Prikaži več

PowerPointova predstavitev

PowerPointova predstavitev Obravnava kotov za učence s posebnimi potrebami Reading of angles for pupils with special needs Petra Premrl OŠ Danila Lokarja Ajdovščina OSNOVNA ŠOLA ENAKOVREDNI IZOBRAZBENI STANDARD NIŽJI IZOBRAZBENI

Prikaži več

MATEMATIKA 2. LETNIK GIMNAZIJE G2A,G2B Sestavil: Matej Mlakar, prof. Ravnatelj: Ernest Simončič, prof. Šolsko leto 2011/2012 Število ur: 140

MATEMATIKA 2. LETNIK GIMNAZIJE G2A,G2B Sestavil: Matej Mlakar, prof. Ravnatelj: Ernest Simončič, prof. Šolsko leto 2011/2012 Število ur: 140 MATEMATIKA 2. LETNIK GIMNAZIJE G2A,G2B Sestavil: Matej Mlakar, prof. Ravnatelj: Ernest Simončič, prof. Šolsko leto 2011/2012 Število ur: 140 Pravila ocenjevanja pri predmetu matematika na Gimnaziji Krško

Prikaži več

2. izbirni test za MMO 2017 Ljubljana, 17. februar Naj bosta k 1 in k 2 dve krožnici s središčema O 1 in O 2, ki se sekata v dveh točkah, ter

2. izbirni test za MMO 2017 Ljubljana, 17. februar Naj bosta k 1 in k 2 dve krožnici s središčema O 1 in O 2, ki se sekata v dveh točkah, ter 2. izbirni test za MMO 2017 Ljubljana, 17. februar 2017 1. Naj bosta k 1 in k 2 dve krožnici s središčema O 1 in O 2, ki se sekata v dveh točkah, ter naj bo A eno od njunih presečišč. Ena od njunih skupnih

Prikaži več

Microsoft PowerPoint - IPPU-V2.ppt

Microsoft PowerPoint - IPPU-V2.ppt Informatizacija poslovnih procesov v upravi VAJA 2 Procesni pogled Diagram aktivnosti IPPU vaja 2; stran: 1 Fakulteta za upravo, 2006/07 Procesni pogled Je osnova za razvoj programov Prikazuje algoritme

Prikaži več

FGG13

FGG13 10.8 Metoda zveznega nadaljevanja To je metoda za reševanje nelinearne enačbe f(x) = 0. Če je težko poiskati začetni približek (še posebno pri nelinearnih sistemih), si lahko pomagamo z uvedbo dodatnega

Prikaži več

Ravninski grafi Tina Malec 6. februar 2007 Predstavili bomo nekaj osnovnih dejstev o ravninskih grafih, pojem dualnega grafa (k danemu grafu) ter kako

Ravninski grafi Tina Malec 6. februar 2007 Predstavili bomo nekaj osnovnih dejstev o ravninskih grafih, pojem dualnega grafa (k danemu grafu) ter kako Ravninski grafi Tina Malec 6. februar 2007 Predstavili bomo nekaj osnovnih dejstev o ravninskih grafih, pojem dualnega grafa (k danemu grafu) ter kako ugotoviti, ali je nek graf ravninski. 1 Osnovni pojmi

Prikaži več

Predtest iz za 1. kontrolno nalogo- 2K Teme za kontrolno nalogo: Podobni trikotniki. Izreki v pravokotnem trikotniku. Kotne funkcije poljubnega kota.

Predtest iz za 1. kontrolno nalogo- 2K Teme za kontrolno nalogo: Podobni trikotniki. Izreki v pravokotnem trikotniku. Kotne funkcije poljubnega kota. Predtest iz za 1. kontrolno nalogo- K Teme za kontrolno nalogo: Podobni trikotniki. Izreki v pravokotnem trikotniku. Kotne funkcije poljubnega kota. Osnovne zveze med funkcijamo istega kota. Uporaba kotnih

Prikaži več

Slide 1

Slide 1 Vsak vektor na premici skozi izhodišče lahko zapišemo kot kjer je v smerni vektor premice in a poljubno število. r a v Vsak vektor na ravnini skozi izhodišče lahko zapišemo kot kjer sta v, v vektorja na

Prikaži več

Poslovilno predavanje

Poslovilno predavanje Poslovilno predavanje Matematične teme z didaktiko Marko Razpet, Pedagoška fakulteta Ljubljana, 20. november 2014 1 / 32 Naše skupne ure Matematične tehnologije 2011/12 Funkcije več spremenljivk 2011/12

Prikaži več

RAČUNALNIŠKA ORODJA V MATEMATIKI

RAČUNALNIŠKA ORODJA V MATEMATIKI DEFINICIJA V PARAVOKOTNEM TRIKOTNIKU DEFINICIJA NA ENOTSKI KROŢNICI GRAFI IN LASTNOSTI SINUSA IN KOSINUSA POMEMBNEJŠE FORMULE Oznake: sinus kota x označujemo z oznako sin x, kosinus kota x označujemo z

Prikaži več

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar 2009 1 Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero velja 0 f(e) u(e) za e E(G). Za v V (G) definiramo presežek

Prikaži več

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo Turingov stroj in programiranje Barbara Strniša 12. 4. 2010 1 Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolov (običajno Σ 2) Σ n = {s 1 s 2... s n ; s i Σ, i =

Prikaži več

EKVITABILNE PARTICIJE IN TOEPLITZOVE MATRIKE Aleksandar Jurišić Politehnika Nova Gorica in IMFM Vipavska 13, p.p. 301, Nova Gorica Slovenija Štefko Mi

EKVITABILNE PARTICIJE IN TOEPLITZOVE MATRIKE Aleksandar Jurišić Politehnika Nova Gorica in IMFM Vipavska 13, p.p. 301, Nova Gorica Slovenija Štefko Mi EKVITABILNE PARTICIJE IN TOEPLITZOVE MATRIKE Aleksandar Jurišić Politehnika Nova Gorica in IMFM Vipavska 13, p.p. 301, Nova Gorica Slovenija Štefko Miklavič 30. okt. 2003 Math. Subj. Class. (2000): 05E{20,

Prikaži več

Microsoft Word - Astronomija-Projekt19fin

Microsoft Word - Astronomija-Projekt19fin Univerza v Ljubljani Fakulteta za matematiko in fiziko Jure Hribar, Rok Capuder Radialna odvisnost površinske svetlosti za eliptične galaksije Projektna naloga pri predmetu astronomija Ljubljana, april

Prikaži več

NAVODILA AVTORJEM PRISPEVKOV

NAVODILA AVTORJEM PRISPEVKOV Predmetna komisija za nižji izobrazbeni standard matematika Opisi dosežkov učencev 6. razreda na nacionalnem preverjanju znanja Slika: Porazdelitev točk pri matematiki (NIS), 6. razred 1 ZELENO OBMOČJE

Prikaži več

Mladi za napredek Maribora srečanje DOLŽINA»SPIRALE«Matematika Raziskovalna naloga Februar 2015

Mladi za napredek Maribora srečanje DOLŽINA»SPIRALE«Matematika Raziskovalna naloga Februar 2015 Mladi za napredek Maribora 015 3. srečanje DOLŽINA»SPIRALE«Matematika Raziskovalna naloga Februar 015 Kazalo 1. Povzetek...3. Uvod...4 3. Spirala 1...5 4. Spirala...6 5. Spirala 3...8 6. Pitagorejsko drevo...10

Prikaži več

Vrste

Vrste Matematika 1 17. - 24. november 2009 Funkcija, ki ni algebraična, se imenuje transcendentna funkcija. Podrobneje si bomo ogledali naslednje transcendentne funkcije: eksponentno, logaritemsko, kotne, ciklometrične,

Prikaži več

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni RAM stroj Nataša Naglič 4. junij 2009 1 RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni trak, pomnilnik ter program. Bralni trak- zaporedje

Prikaži več

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/TESTI-IZPITI-REZULTATI/ /Izpiti/FKKT-avgust-17.dvi

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/TESTI-IZPITI-REZULTATI/ /Izpiti/FKKT-avgust-17.dvi Vpisna številka Priimek, ime Smer: K KT WA Izpit pri predmetu MATEMATIKA I Računski del Ugasni in odstrani mobilni telefon. Uporaba knjig in zapiskov ni dovoljena. Dovoljeni pripomočki so: kemični svinčnik,

Prikaži več

Geometrija v nacionalnih preverjanjih znanja

Geometrija v nacionalnih preverjanjih znanja Geometrija v nacionalnih preverjanjih znanja Aleš Kotnik, OŠ Rada Robiča Limbuš Boštjan Repovž, OŠ Krmelj Struktura NPZ za 6. razred Struktura NPZ za 9. razred Taksonomska stopnja (raven) po Gagneju I

Prikaži več

PREDMETNI KURIKULUM ZA RAZVOJ METEMATIČNIH KOMPETENC

PREDMETNI KURIKULUM ZA RAZVOJ METEMATIČNIH KOMPETENC MATEMATIKA 1.razred OSNOVE PREDMETA POKAZATELJI ZNANJA SPRETNOSTI KOMPETENCE Naravna števila -pozna štiri osnovne računske operacije in njihove lastnosti, -izračuna številske izraze z uporabo štirih računskih

Prikaži več

resitve.dvi

resitve.dvi FAKULTETA ZA STROJNISTVO Matematika Pisni izpit. junij 22 Ime in priimek Vpisna st Navodila Pazljivo preberite besedilo naloge, preden se lotite resevanja. Veljale bodo samo resitve na papirju, kjer so

Prikaži več

3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja

3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja 3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja AV k = V k H k + h k+1,k v k+1 e T k = V kh k+1,k.

Prikaži več

Strokovni izobraževalni center Ljubljana, Srednja poklicna in strokovna šola Bežigrad PRIPRAVE NA PISNI DEL IZPITA IZ MATEMATIKE 2. letnik nižjega pok

Strokovni izobraževalni center Ljubljana, Srednja poklicna in strokovna šola Bežigrad PRIPRAVE NA PISNI DEL IZPITA IZ MATEMATIKE 2. letnik nižjega pok Strokovni izobraževalni center Ljubljana, Srednja poklicna in strokovna šola Bežigrad PRIPRAVE NA PISNI DEL IZPITA IZ MATEMATIKE 2. letnik nižjega poklicnega izobraževanja NAVODILA: Izpit iz matematike

Prikaži več

FGG14

FGG14 Iterativne metode podprostorov Iterativne metode podprostorov uporabljamo za numerično reševanje linearnih sistemov ali računanje lastnih vrednosti problemov z velikimi razpršenimi matrikami, ki so prevelike,

Prikaži več

Domače vaje iz LINEARNE ALGEBRE Marjeta Kramar Fijavž Fakulteta za gradbeništvo in geodezijo Univerze v Ljubljani 2007/08 Kazalo 1 Vektorji 2 2 Analit

Domače vaje iz LINEARNE ALGEBRE Marjeta Kramar Fijavž Fakulteta za gradbeništvo in geodezijo Univerze v Ljubljani 2007/08 Kazalo 1 Vektorji 2 2 Analit Domače vaje iz LINEARNE ALGEBRE Marjeta Kramar Fijavž Fakulteta za gradbeništvo in geodezijo Univerze v Ljubljani 007/08 Kazalo Vektorji Analitična geometrija 7 Linearni prostori 0 4 Evklidski prostori

Prikaži več

'Kombinatoricna optimizacija / Lokalna optimizacija'

'Kombinatoricna optimizacija / Lokalna optimizacija' Kombinatorična optimizacija 3. Lokalna optimizacija Vladimir Batagelj FMF, matematika na vrhu različica: 15. november 2006 / 23 : 17 V. Batagelj: Kombinatorična optimizacija / 3. Lokalna optimizacija 1

Prikaži več

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5 februar 018 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Nalog je

Prikaži več

Osnove statistike v fizični geografiji 2

Osnove statistike v fizični geografiji 2 Osnove statistike v geografiji - Metodologija geografskega raziskovanja - dr. Gregor Kovačič, doc. Bivariantna analiza Lastnosti so med sabo odvisne (vzročnoposledično povezane), kadar ena lastnost (spremenljivka

Prikaži več

Univerza v Novi Gorici Fakulteta za aplikativno naravoslovje Fizika (I. stopnja) Mehanika 2014/2015 VAJE Gravitacija - ohranitveni zakoni

Univerza v Novi Gorici Fakulteta za aplikativno naravoslovje Fizika (I. stopnja) Mehanika 2014/2015 VAJE Gravitacija - ohranitveni zakoni Univerza v Novi Gorici Fakulteta za aplikativno naravoslovje Fizika (I. stopnja) Mehanika 2014/2015 VAJE 12. 11. 2014 Gravitacija - ohranitveni zakoni 1. Telo z maso M je sestavljeno iz dveh delov z masama

Prikaži več

FAKULTETA ZA STROJNIŠTVO Matematika 2 Pisni izpit 9. junij 2005 Ime in priimek: Vpisna št: Zaporedna številka izpita: Navodila Pazljivo preberite bese

FAKULTETA ZA STROJNIŠTVO Matematika 2 Pisni izpit 9. junij 2005 Ime in priimek: Vpisna št: Zaporedna številka izpita: Navodila Pazljivo preberite bese FAKULTETA ZA STROJNIŠTVO Matematika Pisni izpit 9. junij 005 Ime in priimek: Vpisna št: Zaporedna številka izpita: Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja. Veljale bodo

Prikaži več

CpE & ME 519

CpE & ME 519 2D Transformacije Zakaj potrebujemo transformacije? Animacija Več instanc istega predmeta, variacije istega objekta na sceni Tvorba kompliciranih predmetov iz bolj preprostih Transformacije gledanja Kaj

Prikaži več

Kazalo 1 DVOMESTNE RELACIJE Operacije z dvomestnimi relacijami Predstavitev relacij

Kazalo 1 DVOMESTNE RELACIJE Operacije z dvomestnimi relacijami Predstavitev relacij Kazalo 1 DVOMESTNE RELACIJE 1 1.1 Operacije z dvomestnimi relacijami...................... 2 1.2 Predstavitev relacij............................... 3 1.3 Lastnosti relacij na dani množici (R X X)................

Prikaži več

Univerza v Mariboru Fakulteta za naravoslovje in matematiko Oddelek za matematiko in računalništvo Enopredmetna matematika IZPIT IZ VERJETNOSTI IN STA

Univerza v Mariboru Fakulteta za naravoslovje in matematiko Oddelek za matematiko in računalništvo Enopredmetna matematika IZPIT IZ VERJETNOSTI IN STA Enopredmetna matematika IN STATISTIKE Maribor, 31. 01. 2012 1. Na voljo imamo kovanca tipa K 1 in K 2, katerih verjetnost, da pade grb, je p 1 in p 2. (a) Istočasno vržemo oba kovanca. Verjetnost, da je

Prikaži več

Ime in priimek

Ime in priimek Polje v osi tokovne zanke Seminar pri predmetu Osnove Elektrotehnike II, VSŠ (Uporaba programskih orodij v elektrotehniki) Ime Priimek, vpisna številka, skupina Ljubljana,.. Kratka navodila: Seminar mora

Prikaži več

MERJENJE GORIŠČNE RAZDALJE LEČE

MERJENJE GORIŠČNE RAZDALJE LEČE MERJENJE GORIŠČNE RAZDALJE LEČE 1. UVOD: V tej vaji je bilo potrebno narediti pet nalog, povezanih z lečami. 2. NALOGA: -Na priloženih listih POTREBŠČINE: -Na priloženih listih A. Enačba zbiralne leče

Prikaži več

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf uporaba for zanke i iz korak > 0 oblika zanke: for i iz : korak : ik NE i ik DA stavek1 stavek2 stavekn stavek1 stavek2 stavekn end i i + korak I&: P-XI/1/17 uporaba for zanke i iz korak < 0 oblika zanke:

Prikaži več

Srednja šola za oblikovanje

Srednja šola za oblikovanje Srednja šola za oblikovanje Park mladih 8 2000 Maribor POKLICNA MATURA MATEMATIKA SEZNAM VPRAŠANJ ZA USTNI DEL NARAVNA IN CELA ŠTEVILA Opišite vrstni red računskih operacij v množici naravnih števil. Kakšen

Prikaži več

LABORATORIJSKE VAJE IZ FIZIKE

LABORATORIJSKE VAJE IZ FIZIKE UVOD LABORATORIJSKE VAJE IZ FIZIKE V tem šolskem letu ste se odločili za fiziko kot izbirni predmet. Laboratorijske vaje boste opravljali med poukom od začetka oktobra do konca aprila. Zunanji kandidati

Prikaži več

Funkcije in grafi

Funkcije in grafi 14 Funkcije in grafi Funkcije Zapisi funkcij Sorazmernost Obratna sorazmernost Potenčne funkcije Polinomske funkcije Druge funkcije Prileganje podatkom 14.1 Funkcije Spremenljivke Odvisnost spremenljivk

Prikaži več

Podatkovni model ER

Podatkovni model ER Podatkovni model Entiteta- Razmerje Iztok Savnik, FAMNIT 2018/19 Pregled: Načrtovanje podatkovnih baz Konceptualno načtrovanje: (ER Model) Kaj so entite in razmerja v aplikacijskem okolju? Katere podatke

Prikaži več

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se velikokrat zmoti. Na srečo piše v programu Microsoft

Prikaži več

resitve.dvi

resitve.dvi FAKULTETA ZA STROJNIŠTVO Matematika 2. kolokvij 4. januar 212 Ime in priimek: Vpisna št: Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja. Veljale bodo samo rešitve na papirju, kjer

Prikaži več

Rešene naloge iz Linearne Algebre

Rešene naloge iz Linearne Algebre UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO LABORATORIJ ZA MATEMATIČNE METODE V RAČUNALNIŠTVU IN INFORMATIKI Aleksandra Franc REŠENE NALOGE IZ LINEARNE ALGEBRE Študijsko gradivo Ljubljana

Prikaži več

Vaje: Matrike 1. Ugani rezultat, nato pa dokaži z indukcijo: (a) (b) [ ] n 1 1 ; n N 0 1 n ; n N Pokaži, da je množica x 0 y 0 x

Vaje: Matrike 1. Ugani rezultat, nato pa dokaži z indukcijo: (a) (b) [ ] n 1 1 ; n N 0 1 n ; n N Pokaži, da je množica x 0 y 0 x Vaje: Matrike 1 Ugani rezultat, nato pa dokaži z indukcijo: (a) (b) [ ] n 1 1 ; n N n 1 1 0 1 ; n N 0 2 Pokaži, da je množica x 0 y 0 x y x + z ; x, y, z R y x z x vektorski podprostor v prostoru matrik

Prikaži več

Matematika Diferencialne enačbe prvega reda (1) Reši diferencialne enačbe z ločljivimi spremenljivkami: (a) y = 2xy, (b) y tg x = y, (c) y = 2x(1 + y

Matematika Diferencialne enačbe prvega reda (1) Reši diferencialne enačbe z ločljivimi spremenljivkami: (a) y = 2xy, (b) y tg x = y, (c) y = 2x(1 + y Matematika Diferencialne enačbe prvega reda (1) Reši diferencialne enačbe z ločljivimi spremenljivkami: (a) y = 2xy, (b) y tg x = y, (c) y = 2x(1 + y 2 ). Rešitev: Diferencialna enačba ima ločljive spremenljivke,

Prikaži več

Poglavje 3 Reševanje nelinearnih enačb Na iskanje rešitve enačbe oblike f(x) = 0 (3.1) zelo pogosto naletimo pri reševanju tehničnih problemov. Pri te

Poglavje 3 Reševanje nelinearnih enačb Na iskanje rešitve enačbe oblike f(x) = 0 (3.1) zelo pogosto naletimo pri reševanju tehničnih problemov. Pri te Poglavje 3 Reševanje nelinearnih enačb Na iskanje rešitve enačbe oblike f(x) = 0 (3.1) zelo pogosto naletimo pri reševanju tehničnih problemov. Pri tem je lahko nelinearna funkcija f podana eksplicitno,

Prikaži več

SESTAVA VSEBINE MATEMATIKE V 6

SESTAVA VSEBINE MATEMATIKE V 6 SESTAVA VSEBINE MATEMATIKE V 6. RAZREDU DEVETLETKE 1. KONFERENCA Št. ure Učne enote CILJI UVOD (1 ura) 1 Uvodna ura spoznati vsebine učnega načrta, način dela, učne pripomočke za pouk matematike v 6. razredu

Prikaži več

OSNOVE LOGIKE 1. Kaj je izjava? Kaj je negacija izjave? Kaj je konjunkcija in kaj disjunkcija izjav? Povejte, kako je s pravilnostjo negacije, konjunk

OSNOVE LOGIKE 1. Kaj je izjava? Kaj je negacija izjave? Kaj je konjunkcija in kaj disjunkcija izjav? Povejte, kako je s pravilnostjo negacije, konjunk OSNOVE LOGIKE 1. Kaj je izjava? Kaj je negacija izjave? Kaj je konjunkcija in kaj disjunkcija izjav? Povejte, kako je s pravilnostjo negacije, konjunkcije in disjunkcije. Izjava je vsaka poved, za katero

Prikaži več

Matematika 2

Matematika 2 Matematika 2 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 23. april 2014 Soda in liha Fourierjeva vrsta Opomba Pri razvoju sode periodične funkcije f v Fourierjevo vrsto v razvoju nastopajo

Prikaži več

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/testi in izpiti/ /IZPITI/FKKT-februar-14.dvi

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/testi in izpiti/ /IZPITI/FKKT-februar-14.dvi Kemijska tehnologija, Kemija Bolonjski univerzitetni program Smer: KT K WolframA: DA NE Računski del izpita pri predmetu MATEMATIKA I 6. 2. 2014 Čas reševanja je 75 minut. Navodila: Pripravi osebni dokument.

Prikaži več

Microsoft Word - A-3-Dezelak-SLO.doc

Microsoft Word - A-3-Dezelak-SLO.doc 20. posvetovanje "KOMUNALNA ENERGETIKA / POWER ENGINEERING", Maribor, 2011 1 ANALIZA OBRATOVANJA HIDROELEKTRARNE S ŠKOLJČNIM DIAGRAMOM Klemen DEŽELAK POVZETEK V prispevku je predstavljena možnost izvedbe

Prikaži več

predstavitev fakultete za matematiko 2017 A

predstavitev fakultete za matematiko 2017 A ZAKAJ ŠTUDIJ MATEMATIKE? Ker vam je všeč in vam gre dobro od rok! lepa, eksaktna veda, ki ne zastara matematičnoanalitično sklepanje je uporabno povsod matematiki so zaposljivi ZAKAJ V LJUBLJANI? najdaljša

Prikaži več

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 31. avgust 2018 Navodila Pazljivo preberite

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 31. avgust 2018 Navodila Pazljivo preberite Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 31 avgust 018 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Za pozitiven

Prikaži več

P182C10111

P182C10111 Š i f r a k a n d i d a t a : Državni izpitni center *P18C10111* JESENSKI IZPITNI ROK MATEMATIKA Izpitna pola Ponedeljek, 7. avgust 018 / 10 minut Dovoljeno gradivo in pripomočki: Kandidat prinese nalivno

Prikaži več

Osnove verjetnosti in statistika

Osnove verjetnosti in statistika Osnove verjetnosti in statistika Gašper Fijavž Fakulteta za računalništvo in informatiko Univerza v Ljubljani Ljubljana, 26. februar 2010 Poskus in dogodek Kaj je poskus? Vržemo kovanec. Petkrat vržemo

Prikaži več

Microsoft Word - CNC obdelava kazalo vsebine.doc

Microsoft Word - CNC obdelava kazalo vsebine.doc ŠOLSKI CENTER NOVO MESTO VIŠJA STROKOVNA ŠOLA STROJNIŠTVO DIPLOMSKA NALOGA Novo mesto, april 2008 Ime in priimek študenta ŠOLSKI CENTER NOVO MESTO VIŠJA STROKOVNA ŠOLA STROJNIŠTVO DIPLOMSKA NALOGA Novo

Prikaži več

7. tekmovanje v znanju astronomije 8. razred OŠ Državno tekmovanje, 9. januar 2016 REŠITVE NALOG IN TOČKOVNIK SKLOP A V sklopu A je pravilen odgovor o

7. tekmovanje v znanju astronomije 8. razred OŠ Državno tekmovanje, 9. januar 2016 REŠITVE NALOG IN TOČKOVNIK SKLOP A V sklopu A je pravilen odgovor o 7. tekmovanje v znanju astronomije 8. razred OŠ Državno tekmovanje, 9. januar 2016 REŠITVE NALOG IN TOČKOVNIK SKLOP A V sklopu A je pravilen odgovor ovrednoten z 2 točkama; če ni obkrožen noben odgovor

Prikaži več

Diapozitiv 1

Diapozitiv 1 9. Funkcije 1 9. 1. F U N K C I J A m a i n () 9.2. D E F I N I C I J A F U N K C I J E 9.3. S T A V E K r e t u r n 9.4. K L I C F U N K C I J E I N P R E N O S P A R A M E T R O V 9.5. P R E K R I V

Prikaži več

FGG02

FGG02 6.6 Simetrični problem lastnih vrednosti Če je A = A T, potem so lastne vrednosti realne, matrika pa se da diagonalizirati. Schurova forma za simetrično matriko je diagonalna matrika. Lastne vrednosti

Prikaži več

ELEKTRIČNI NIHAJNI KROG TEORIJA Električni nihajni krog je električno vezje, ki služi za generacijo visokofrekvenče izmenične napetosti. V osnovi je "

ELEKTRIČNI NIHAJNI KROG TEORIJA Električni nihajni krog je električno vezje, ki služi za generacijo visokofrekvenče izmenične napetosti. V osnovi je ELEKTRIČNI NIHAJNI KROG TEORIJA Električni nihajni krog je električno vezje, ki služi za generacijo visokofrekvenče izmenične napetosti. V osnovi je "električno" nihalo, sestavljeno iz vzporedne vezave

Prikaži več

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be Ime in priimek: Vpisna št: FAKULEA ZA MAEMAIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6 julij 2018 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Za pozitiven rezultat

Prikaži več

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje priročno programsko okolje tolmač interpreter (ne prevajalnik)

Prikaži več

Albert Einstein in teorija relativnosti

Albert Einstein in teorija relativnosti Albert Einstein in teorija relativnosti Rojen 14. marca 1879 v judovski družini v Ulmu, odraščal pa je v Münchnu Obiskoval je katoliško osnovno šolo, na materino željo se je učil igrati violino Pri 15

Prikaži več

glava.dvi

glava.dvi Lastnosti verjetnosti 1. Za dogodka A in B velja: P(A B) = P(A) + P(B) P(A B) 2. Za dogodke A, B in C velja: P(A B C) = P(A) + P(B) + P(C) P(A B) P(A C) P(B C) + P(A B C) Kako lahko to pravilo posplošimo

Prikaži več

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru 6.1 Uvod 6 Igra Chomp Marko Repše, 30.03.2009 Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru in na končni ali neskončni čokoladi. Igralca si izmenjujeta

Prikaži več

STAVKI _5_

STAVKI _5_ 5. Stavki (Teoremi) Vsebina: Stavek superpozicije, stavek Thévenina in Nortona, maksimalna moč na bremenu (drugič), stavek Tellegena. 1. Stavek superpozicije Ta stavek določa, da lahko poljubno vezje sestavljeno

Prikaži več

rm.dvi

rm.dvi 1 2 3 4 5 6 7 Ime, priimek Razred 14. DRŽAVNO TEKMOVANJE V RAZVEDRILNI MATEMATIKI NALOGE ZA PETI IN ŠESTI RAZRED OSNOVNE ŠOLE Čas reševanja nalog: 90 minut Točkovanje 1., 2., in 7. naloge je opisano v

Prikaži več

Optimizacija z roji delcev - Seminarska naloga pri predmetu Izbrana poglavja iz optimizacije

Optimizacija z roji delcev - Seminarska naloga pri predmetu Izbrana poglavja iz optimizacije Univerza v Ljubljani Fakulteta za matematiko in fiziko Seminarska naloga pri predmetu Izbrana poglavja iz optimizacije 2. junij 2011 Koncept PSO Motivacija: vedenje organizmov v naravi Ideja: koordinirano

Prikaži več

(Microsoft PowerPoint - vorsic ET 9.2 OES matri\350ne metode 2011.ppt [Compatibility Mode])

(Microsoft PowerPoint - vorsic ET 9.2 OES matri\350ne metode 2011.ppt [Compatibility Mode]) 8.2 OBRATOVANJE ELEKTROENERGETSKEGA SISTEMA o Matrične metode v razreševanju el. omrežij Matrične enačbe električnih vezij Numerične metode za reševanje linearnih in nelinearnih enačb Sistem algebraičnih

Prikaži več

1 Tekmovanje gradbenih tehnikov v izdelavi mostu iz špagetov 1.1 Ekipa Ekipa sestoji iz treh članov, ki jih mentor po predhodni izbiri prijavi na tekm

1 Tekmovanje gradbenih tehnikov v izdelavi mostu iz špagetov 1.1 Ekipa Ekipa sestoji iz treh članov, ki jih mentor po predhodni izbiri prijavi na tekm 1 Tekmovanje gradbenih tehnikov v izdelavi mostu iz špagetov 1.1 Ekipa Ekipa sestoji iz treh članov, ki jih mentor po predhodni izbiri prijavi na tekmovanje. Končni izdelek mora biti produkt lastnega dela

Prikaži več

UČNI NAČRT. Gimnazija, 2. letnik, 2016/2017 Ime in Priimek: MATEJ MLAKAR , Pregledal-a: 1: Splošni cilji / kompetence predmeta: S splošnimi ci

UČNI NAČRT. Gimnazija, 2. letnik, 2016/2017 Ime in Priimek: MATEJ MLAKAR , Pregledal-a: 1: Splošni cilji / kompetence predmeta: S splošnimi ci UČNI NAČRT. Gimnazija, 2. letnik, 2016/2017 Ime in Priimek: MATEJ MLAKAR 1.9.2016, Pregledal-a: 1: Splošni cilji / kompetence predmeta: S splošnimi cilji opredelimo namen učenja in poučevanja matematike.

Prikaži več

Datum in kraj

Datum in kraj Ljubljana, 5. 4. 2017 Katalog znanj in vzorci nalog za izbirni izpit za vpis na magistrski študij Pedagoško računalništvo in informatika 2017/2018 0 KATALOG ZNANJ ZA IZBIRNI IZPIT ZA VPIS NA MAGISTRSKI

Prikaži več

VAJE

VAJE UČNI LIST Geometrijska telesa Opomba: pri nalogah, kjer računaš maso jeklenih teles, upoštevaj gostoto jekla 7,86 g / cm ; gostote morebitnih ostalih materialov pa so navedene pri samih nalogah! Fe 1)

Prikaži več

Strojna oprema

Strojna oprema Asistenta: Mira Trebar, Miha Moškon UIKTNT 2 Uvod v programiranje Začeti moramo razmišljati algoritmično sestaviti recept = napisati algoritem Algoritem za uporabo poljubnega okenskega programa. UIKTNT

Prikaži več

Microsoft Word - Pravila - AJKTM 2016.docx

Microsoft Word - Pravila - AJKTM 2016.docx PRAVILA ALI JE KAJ TRDEN MOST 2016 3. maj 5. maj 2016 10. 4. 2016 Maribor, Slovenija 1 Osnove o tekmovanju 1.1 Ekipa Ekipa sestoji iz treh članov, ki so se po predhodnem postopku prijavili na tekmovanje

Prikaži več

DN5(Kor).dvi

DN5(Kor).dvi Koreni Število x, ki reši enačbo x n = a, imenujemo n-ti koren števila a in to označimo z n a. Pri tem je n naravno število, a pa poljubno realno število. x = n a x n = a. ( n a ) n = a. ( n a ) m = n

Prikaži več

Arial 26 pt, bold

Arial 26 pt, bold 3 G MATEMATIKA Milan Černel Osnovna šola Brežice POUČEVANJE MATEMATIKE temeljni in zahtevnejši šolski predmet, pomembna pri razvoju celovite osebnosti učenca, prilagajanje oblik in metod poučevanja učencem

Prikaži več

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvantnih celičnih avtomatov SEMINARSKA NALOGA Univerzitetna

Prikaži več

Matematika II (UN) 1. kolokvij (13. april 2012) RE ITVE Naloga 1 (25 to k) Dana je linearna preslikava s predpisom τ( x) = A x A 1 x, kjer je A

Matematika II (UN) 1. kolokvij (13. april 2012) RE ITVE Naloga 1 (25 to k) Dana je linearna preslikava s predpisom τ( x) = A x A 1 x, kjer je A Matematika II (UN) 1 kolokvij (13 april 01) RE ITVE Naloga 1 (5 to k) Dana je linearna preslikava s predpisom τ( x) = A x A 1 x, kjer je 0 1 1 A = 1, 1 A 1 pa je inverzna matrika matrike A a) Poi² ite

Prikaži več

INDIVIDUALNI PROGRAM PREDMET: MATEMATIKA ŠOL. LETO 2015/2016 UČITELJ: ANDREJ PRAH Učenec: Razred: 7. Leto šolanja: Ugotovitev stanja: Učenec je lani n

INDIVIDUALNI PROGRAM PREDMET: MATEMATIKA ŠOL. LETO 2015/2016 UČITELJ: ANDREJ PRAH Učenec: Razred: 7. Leto šolanja: Ugotovitev stanja: Učenec je lani n INDIVIDUALNI PROGRAM PREDMET: MATEMATIKA ŠOL. LETO 2015/2016 UČITELJ: ANDREJ PRAH Učenec: Razred: 7. Leto šolanja: Ugotovitev stanja: Učenec je lani neredno opravljal domače naloge. Pri pouku ga je bilo

Prikaži več

Microsoft Word - Analiza rezultatov NPZ matematika 2018.docx

Microsoft Word - Analiza rezultatov NPZ matematika 2018.docx Analiza dosežkov pri predmetu matematika za NPZ 28 6. razred NPZ matematika 28 Dosežek šole Povprečno število točk v % Državno povprečje Povprečno število točk v % Odstopanje v % 49,55 52,52 2,97 Povprečni

Prikaži več

Identifikacija TIMSS 2011 Vprašalnik za učiteljice in učitelje Matematika 8. razred Pedagoški inštitut Center za uporabno epistemologijo Gerbičeva 62

Identifikacija TIMSS 2011 Vprašalnik za učiteljice in učitelje Matematika 8. razred Pedagoški inštitut Center za uporabno epistemologijo Gerbičeva 62 Identifikacija TIMSS 2011 Vprašalnik za učiteljice in učitelje Matematika 8. razred Pedagoški inštitut Center za uporabno epistemologijo Gerbičeva 62 1000 Ljubljana IEA, 2011 Vprašalnik za učiteljice in

Prikaži več

GeomInterp.dvi

GeomInterp.dvi Univerza v Ljubljani Fakulteta za matematiko in fiziko Seminar za Numerično analizo Geometrijska interpolacija z ravninskimi parametričnimi polinomskimi krivuljami Gašper Jaklič, Jernej Kozak, Marjeta

Prikaži več

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Osnove jezika VHDL Strukturno načrtovanje in testiranje Struktura vezja s komponentami

Prikaži več

Teorija kodiranja in kriptografija 2013/ AES

Teorija kodiranja in kriptografija 2013/ AES Teorija kodiranja in kriptografija 23/24 AES Arjana Žitnik Univerza v Ljubljani, Fakulteta za matematiko in fiziko Ljubljana, 8. 3. 24 AES - zgodovina Septembra 997 je NIST objavil natečaj za izbor nove

Prikaži več

C:/Users/Matevz/Dropbox/FKKT/TESTI-IZPITI-REZULTATI/ /Izpiti/FKKT-januar-februar-15.dvi

C:/Users/Matevz/Dropbox/FKKT/TESTI-IZPITI-REZULTATI/ /Izpiti/FKKT-januar-februar-15.dvi Kemijska tehnologija, Kemija Bolonjski univerzitetni program Smer: KT K WolframA: DA NE Čas reševanja je 75 minut. Navodila: Računski del izpita pri predmetu MATEMATIKA I Ugasni in odstrani mobilni telefon.

Prikaži več

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov 4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenovalec, ter iz ulomkove črte. Racionalna števila so števila,

Prikaži več

Acrobat Distiller, Job 30

Acrobat Distiller, Job 30 Informatica Medica Slovenica 2002; 7(1) 31 Strokovno-znanstveni prispevek Vizualizacija prostorskih medicinskih podatkov na osebnem računalniku Visualisation of Volume Medical Data on a Personal Computer

Prikaži več

Priloga 1 Ljubljana 2018 MATEMATIKA Katalog znanja za osebe z mednarodno zaščito

Priloga 1 Ljubljana 2018 MATEMATIKA Katalog znanja za osebe z mednarodno zaščito Priloga 1 Ljubljana 2018 MATEMATIKA Katalog znanja za osebe z mednarodno zaščito KAZALO 1 UVOD... 3 2 IZPITNI CILJI... 4 3 ZGRADBA IN VREDNOTENJE IZPITA... 5 3.1 Shema izpita... 5 3.2 Tipi nalog in vrednotenje...

Prikaži več

Napotki za izbiro gibljivih verig Stegne 25, 1000 Ljubljana, tel: , fax:

Napotki za izbiro gibljivih verig   Stegne 25, 1000 Ljubljana, tel: , fax: Napotki za izbiro gibljivih verig Postopek za izbiro verige Vrsta gibanja Izračun teže instalacij Izbira verige glede na težo Hod verige Dolžina verige Radij verige Hitrost in pospešek gibanja Instalacije

Prikaži več