INF-MAT5370. Trianguleringer i planet (Preliminaries)

Like dokumenter
Trianguleringer i planet.

INF-MAT5370. Grafer og datastrukturer

INF-MAT5370. Delaunay-trianguleringer og Voronoi-diagram

Algoritmer for Delaunay-triangulering

Data-avhengige trianguleringer

Algoritmer for Delaunay-triangulering

Obligatoriske oppgaver 2009

INF Triangulering. Med sterk støtte fra Petter Kristiansen. Skal først se på et eksempel fra Google Earth

Visualisering av trianguleringer og trianguleringsprosesser. Hovedfagsoppgave. Per-Idar Evensen

MAT1140: Kort sammendrag av grafteorien

Plangeometri Romgeometri Høyere dimensjoner. Vinkler. Arne B. Sletsjøe. Universitetet i Oslo. Faglig-pedagogisk dag, 1.

Aksiom 3.1 (Likhet av mengder). La A og B være mengder. Da er A og B like hvis og bare hvis de har akkurat de samme elementene.

Komplekse tall og komplekse funksjoner

MAT1140: Kort sammendrag av grafteorien

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Trianguleringer og anvendelser

Grunnleggende Grafalgoritmer

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl

Oppgaver MAT2500 høst 2011

kap. 8.6 Computational Geometry Hovedkapittelet (kap. 8) dreier seg generelt om devide-and-conquer eller splitt og hersk :

Grunnleggende Grafteori

Spenntrær, oppsummert: Kruskal: Traverserer ikke. Plukker kanter i hytt og vær Prim: Legger alltid til den noden som er nærmest treet

Newtons interpolasjon og dividerte differanser

Notasjon i rettingen:

MAT1030 Forelesning 22

Forelesningsnotat i Diskret matematikk tirsdag 1. november Pascals trekant. Legg merke til møsteret! Det gir oss Pascals identitet:

To geometriske algoritmer, kap. 8.6

Introduksjon. MAT1030 Diskret Matematikk. Introduksjon. En graf. Forelesning 22: Grafteori. Roger Antonsen

Introduksjon. MAT1030 Diskret matematikk. Søkealgoritmer for grafer. En graf

MAT1030 Diskret matematikk

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. INF1080 Logiske metoder for informatikk

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

Løsningsforslag til 3. oblogatoriske oppgave i Diskret Matematikk. Høsten 2018

Kommentarer til Eksamen IM005 - V02

Fig1. Den konvekse innhyllinga av 100 tilfeldige punkter i planet (de samme som nyttes i oppgaven.)

MA2401 Geometri Vår 2018

INF3170 / INF4171. Intuisjonistisk logikk: Kripke-modeller, sunnhet, kompletthet. Andreas Nakkerud. 15. september 2015

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

Eksamen i TMA4180 Optimeringsteori Løsningsforslag.

PG4200 Algoritmer og datastrukturer Forelesning 10

TMA4105 Matematikk 2 Vår 2014

Uke 12 inf2440 v2018. Eric Jul PSE-gruppa Ifi, UiO

Kul geometri - overflateareal og volum av kuler

MAUMAT644 ALGEBRA vår 2016 Første samling Runar Ile

Forelesning 4 torsdag den 28. august

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

SALG > KOSTNAD når mer enn 100 produkt selges. Virksomheten går da med overskudd.

Ninety-nine bottles. Femte forelesning. I dagens forelesning: Mest matematiske verktøy. Først: Asymptotisk notasjon. Så: Rekurrensligninger.

TMA4100 Matematikk1 Høst 2008

UNIVERSITETET I OSLO

Oppsummering TMA4100. Kristian Seip. 26./28. november 2013

UNIVERSITETET I OSLO

INF3170 / INF4171. Predikatlogikk: Skolemfunksjoner; Andreordens logikk. Andreas Nakkerud. 10. september 2015

Semantikk Egenskaper ved predikatlogikk Naturlig deduksjon INF3170 / INF4171. Predikatlogikk: Semantikk og naturlig deduksjon.

Rekker (eng: series, summations)

Denne følgen har N+1 ledd. En generell uendelig følge kan settes opp slik:

Platonske legemer i klasserommet

Oppgaver MAT2500. Fredrik Meyer. 20. september v e + f = 2

TMA4120 Matematikk 4K Høst 2015

INF2220: Forelesning 1

Kul geometri - overflateareal og volum av kuler

TMA4100 Matematikk 1, høst 2013

dg = ( g P0 u)ds = ( ) = 0

MAT1030 Diskret Matematikk

Forberedelse Kompletthet Kompakthet INF3170 / INF4171. Predikatlogikk: kompletthet, kompakthet. Andreas Nakkerud. 8.

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

MAT1030 Forelesning 22

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1

MA2401 Geometri Vår 2018

Løsningsforslag Øving 9 TMA4140 Diskret matematikk Høsten i for i = 0, 1, 2, 3, 4, og så er W 4 svaret

Rekursiv programmering

Øvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth

Notat om Peanos aksiomer for MAT1140

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.2

LO118D Forelesning 10 (DM)

Kurshefte GeoGebra. Ungdomstrinnet

Binomialkoeffisienter

MAT1030 Diskret Matematikk

Tessellering og mangekanter:

MA2401 Geometri Vår 2018

Definisjon av binært søketre

Polare trekanter. Kristian Ranestad. 27. oktober Universitetet i Oslo

Dagens plan: INF Algoritmer og datastrukturer. Grafer vi har sett allerede. Det første grafteoretiske problem: Broene i Königsberg

ANDREAS LEOPOLD KNUTSEN

Karakterer. Kapittel Homomorfier av grupper. 8.2 Representasjoner

Løsningsforlag til eksamen i Diskret matematikk. 29. november 2017

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE

Oppsummering TMA4100. Kristian Seip. 16./17. november 2015

Eksamen MAT H Løsninger

INF Algoritmer og datastrukturer

Morleys teorem, Eulerlinja og nipunktsirkelen

EKSAMEN I TMA4180 OPTIMERINGSTEORI

Kompleksitetsteori reduksjoner

TMA4210 Numerisk løsning av part. diff.lign. med differansemetoder Vår 2005

Oppsummering TMA4100. Kristian Seip. 17./18. november 2014

Sammendrag R1. Sandnes VGS 19. august 2009

Kapittel 10 fra læreboka Grafer

Transkript:

INF-MAT5370 Trianguleringer i planet (Preliminaries) Øyvind Hjelle oyvindhj@simula.no, +47 67 82 82 75 Simula Research Laboratory, www.simula.no August 23, 2009

Innhold Notasjon og terminologi Graf-egenskaper med trianguleringer i planet Enkle trianguleringsalgoritmer

Punkter og domener. Vi starter med et sett punkter i planet P = {p i }, i = 1,...,N p i = (x i,y i ). og et domene Ω i planet slik Ω og randen Ω tilfredstiller: Ω P Ω, er ett eller flere enkle lukka polygoner (ikke selvskjærende) Hjørnepunktene i Ω er punkter i P Ω er ofte den konvekse omhylningen til P, for eks. i Delaunay trianguleringer:

Konvekst domene til Ω

Hva er en triangulering? Grovt sagt er en triangulering av punktene i P en dekomponering av Ω i trekanter (P) = {t i } T i=1 som ikke overlapper hverandre, og slik at hjørnene i alle t i er punkter i P. Eksempler:

Notasjoner og (norske) uttrykk., (P) Triangulering (av punkter P), = {t i } T V, V I, V B Sett av noder, indre noder og randnoder E, E I, E B Tilsvarende for sidekanter (eller kanter ) T Sett av trekanter V, E, T Antall noder, sidekanter og trekanter V I, V B Antall indre noder og randnoder ( V = V I + V B ) E I, E B Tilsv. for sidekanter, E = E I + E B V ( ) Antall noder i trianguleringen v i,e i,t i Node, sidekant, trekant e i,j Sidekant mellom noder v i og v j t i,j,k Trekant med v i, v j og v k som noder Alltid definert mot klokka. C(t i,j,k ) Omskrivende sirkel til trekant t i,j,k i=1

Topologi og Geometri Vi skiller mellom topologi og geometri: Topologi: Noder, sidekanter og trekanter. Geometri: Punkter, kurver, flatelapper

Hva er en gyldig triangulering? 1 Ingen trekant t i,j,k i er degenerert, dvs. p i, p j, og p k er ikke kolineære. 2 Int(t i,j,k ) Int(t α,β,γ ) = φ (Int = Interior ) 3 Snittet t i,j,k t α,β,γ er en felles sidekant, en felles node eller φ. 4 Unionen T i=1 t i = Ω, Ω R 2 og er regulær hvis også: 5 Domenet Ω (og ) er sammenhengende 6 (og Ω) har ingen hull 7 Hvis v i er en randnode i, så er det nøyaktig to randkanter som møtes i v i, dvs. V B = E B.

Gyldig, ikke regulær Regulær Ikke gyldig

Egenskaper ved trianguleringer. Vi kan se på trianguleringer som spesialtilfeller av grafer. Det er følgende samenheng mellom antall noder, kanter og trekanter. Lemma For en regulær triangulering har vi: T = 2 V I + V B 2 (I) E = 3 V I + 2 V B 3 (II) E I = 3 V I + V B 3 (III) T = E V + 1. (IV ) (IV ) kalles Euler Polyhedron formelen, (eller Euler-Poincaré)

Bevis av (I), induksjonsbevis: Trivielt hvis T = 1; da er V I = 0 og V B = 3. Induksjon: Anta T 2 og at en trekant t i fjernes fra slik at også er regulær. Vi har to tilfeller: 1. t i har to randkanter i V I ( ) = V I ( ), og V B ( ) = V B ( ) 1 Anta at (I) holder for : T( ) = T( ) + 1 = ( ) 2 V I ( ) + V B ( ) 2 + 1 = 2 V I ( ) + ( V B ( ) 1) 2 + 1 = 2 V I ( ) + V B ( ) 2.

2. t i har kun en randkant i V I ( ) = V I ( ) 1, og V B ( ) = V B ( ) + 1. Anta at (I) holder for : T( ) = T( ) + 1 = ( ) 2 V I ( ) + V B ( ) 2 + 1 = 2( V I ( ) 1) + ( V B ( ) + 1) 2 + 1 = 2 V I ( ) + V B 2. (Bevis av (II) og (III) er øvinger.)

Bevis av (IV) (IV) følger ved å kombinere (I), (II) og V = V I + V B T = 2 V I + V B 2 = 3 V I + 2 V B 3 ( V I + V B ) + 1 = E V + 1. Nyttige observasjoner: Antall sidekanter og trekanter avhenger av randen Hvis vi setter inn en indre node økes T med 2 og E med 3.

Nedre og øvre grenser for T og E uttrykt ved antall noder i. Lemma For en regulær triangulering har vi: V 2 T 2 V 5 2 V 3 E 3 V 6.

Bevis. Vi bruker følgende: (I) og (II) V = V I + V B V B 3 (til bruk på høyresiden) V B V (til bruk på venstresiden) T = 2 V I + V B 2 = 2( V I + V B ) V B 2 = 2 V V B 2 E = 3 V I + 2 V B 3 = 3( V I + V B ) V B 3 = 3 V V B 3 og resultatene følger.

Definisjon Graden til en node v i, deg(v i ) i en triangulering er antall sidekanter som møtes i v i (eng.: degree or valency). Lemma For en triangulering (regulær eller ikke) har vi V deg(v i ) = 2 E. i=1 Proof. Trivielt; i en gyldig triangulering bidrar hver sidekant med 2 til grad-summen.

Når V er stor og Ω er den konvekse omhylningen til P, vil vi ha at V >> V B. Da får vi følgene nyttige uttrykk for gjennomsnittlig grad-sum (average valence): V deg(v i ) = 2 E = 2(3 V I + 2 V B 3) i=1 = 6( V I + V B ) 2 V B 6 = 6 V 2 V B 6 6 V

Under de samme betingelsene, V >> V B, får vi for antall trekanter og antall sidekanter: T = 2 V I + V B 2 = 2 V V B 2 2 V E = 3 V I + 2 V B 3 = 3 V V B 3 3 V Estimatene over er nyttige når vi skal estimere: CPU-tid for algoritmer, spesielt traversering lagringsbehov for datastrukturer. Ellers, ved allokering av minne.

En enkel trianguleringsalgoritme Algoritme: 1 Gitt randen til som et lukka polygon. 2 Triangulerer settet av randnoder V B 3 Setter inn indre punkter (noder) 4 Setter inn predefinerte sidekanter Definisjon Et punkt p i i et enkelt lukka polygon P = {p 1,... p N } kalles fremskutt (eng.: protruding) dersom 1 Den indre vinkelen ved p i i trekanten t i 1,i,i+1 er mindre enn π. (Konvensjon: p N+1 = p 1 ) 2 Trekanten t i 1,i,i+1 inneholder ingen punkter fra P utenom p i 1, p i, og p i+1. Det kan vises at et hvert lukka polygon har minst to fremskutte punkt.

Protruding Point Removal (a) t i-1,i,i+1 p i+1 p i p i-1 (b) 1 (c) 2 1 (d) 2 3 1 (e) 4 2 3 1 (f) 5 8 6 4 7 2 3 1

Algoritme (I) Triangulering av et enkelt lukka polygon P. Algoritme 1 Finn et fremskutt punkt p i i P = {p 1,...,p N }; figur (a) 2 Lag en sidekant e i 1,i+1 av punktene p i 1 og p i+1 og lag trekanten t i 1,i,i+1. La P = {p 1,...,p N } \ p i være det nye polygonet med N 1 punkter; figur (b) 3 If (N == 3), dvs. hvis P er en enkelt trekant STOP; figur (f) 4 GOTO 1.

Algoritme (II) Innsetting av et punkt p i i en triangulering. Algoritme 1 Lokaliser en trekant t i ; p i t i 2 If (p i Int(t i )) erstatt t i med tre nye trekanter; figur (a) else if (p i Int(e i )); dvs. e i er en kant i t i erstatt t i og naboen til t i med fire trekanter; figur (b). (a) (b) p i p i e i t i t i

Algoritme (I), og Algoritme (II) for alle p i Ω, gir en regulær triangulering i følge definisjonen over. Observasjon: Antall trekanter og sidekanter økes med 2 og 3 for hvert punkt som settes inn med Algoritme (II); jfr. ligning (I) og (II).

Triangulering med føringer (Constrained triangulation) Med føringer menes predefinerte sidekanter som skal være med i trianguleringen. Anvendleser: Representasjon av elver, veier og geologiske forkastninger i terrengmodeller. Representasjon av features i DAK-modeller. Predefinerte kanter stiller krav til datastrukturer og algoritmer som må håndtere disse til lavest mulig kostnad. Teorien for Delaunay-trianguleringer er utvidet til å håndtere føringer.

Algoritme (III) Innsetting av en predefinert sidekant (constrained edge). Gitt en predefinert sidekan e i,j. Anta at endepunktene p i og p j er satt inn i med Algoritme (II). Algoritme 1 For alle t i i, If (Int(t i ) e ij φ), fjern t i fra Vi får en eller flere regioner R i på hver side av e i,j innenfor enkle lukka polygoner. (Mer enn en hvis e i,j skjærer kanter i endepunkter.) 2 Trianguler hver region R i med Algoritme (I).

Innsetting av predefinert sidekant. (a) e i,j p j p i (b) e i,j p j p i

Algoritmer: Observasjoner Siden antall noder V B på randen er konstant, har vi full kontroll over antall trekanter T og antall sidekanter, E og E I i henhold til formlene (I) (IV ). Passende datastrukturer/topologistrukturer med naboskapsinformasjon er nødvendig for å unngå worst case CPU-tid, for eks. ved lokaliserng av en trekant t i i slik at et punkt p i t i. (P) er ikke entydig; for eks., i Algoritme (I) avhenger av hvilken rekkefølge fremskutte punkter behandles. Vi skal senere se på en spesiell type triangulering, Delaunay, som er (nesten) entydig.

Swapping / Flipping / (Exchange) Swapping er en viktig operasjon på sidekanter i en triangulering. v i+1 v i+2 e i+1,i+3 e i,i+2 v i+3 v i = {t 1,2,3,t 1,3,4 } = {t 1,2,4,t 2,3,4 }

Swapping... Kan kun utføres på sidekanter som er diagonaler i strengt konvekse quadrilateraler. Men kan repeteres - det kan vises at: alle mulige trianguleringer av P kan nås via en sekvens av swaps. (Det er et endelig antall trianguleringer av P). Mange trianguleringsalgoritmer er basert på swapping. Kan benyttes for å optimere trianguleringer. Swapping kan gjøres etter ulike kriterier. Hvis vi bruker Delaunay kriterier vil vi til slutt få en Delaunay triangulering som er (nesten) entydig.

Swapping: Eksempel Triangulering før ( a ) og etter ( b ) swapping av to sidekanter. (a) (b) Observasjon: a har flere smale trekanter enn b Smale trekanter kan gi numeriske problemer i (geometriske) algoritmer.

Flatetrianguleringer (Surface Triangulations) F. eks. stykkevise lineære flater:

Barycentriske koordinater p 3 H 2 A H 1 2 p A 1 p 1 A 3 H 3 p 2 p = (x,y,z), p i = (x i,y i,z i ), i = 1,2,3 p = b 1 p 1 + b 2 p 2 + b 3 p 3 b 1 = A 1 /A, b 2 = A 2 /A b 3 = A 3 /A A = A 1 + A 2 + A 3. Høydeverdien (funksjonsverdien i p): z p = b 1 z 1 + b 2 z 2 + b 3 z 3.