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

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

Svarforslag til ukeoppgaver til INF 4130

To geometriske algoritmer, kap. 8.6

Computational Geometry

Matchinger i ikke-bipartite grafer

GeoGebraøvelser i geometri

INF-MAT5370. Delaunay-trianguleringer og Voronoi-diagram

Kompleksitetsteori reduksjoner

Trianguleringer i planet.

INF-MAT5370. Trianguleringer i planet (Preliminaries)

HamboHus 5.4 Rev. 1, 8. september 2005 A. Cordray

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

INF oktober Stein Krogdahl. Altså: Hva kan ikke gjøres raskt (med mindre P = NP)

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

Tessellering og mangekanter:

MAT1140: Kort sammendrag av grafteorien

Algoritmer for Delaunay-triangulering

Oppgaver MAT2500. Fredrik Meyer. 29. september 2014

Lærerveiledning. Oppgave 1. Tallene på figuren viser omkretsen av hver av de fire små trekantene. Hva er omkretsen av den store trekanten?

Lærerveiledning. Oppgave 1. Hva er arealet av det grå området i figuren? Tips til veiledning:

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

OVERFLATE FRA A TIL Å

Niels Henrik Abels matematikkonkurranse

Niels Henrik Abels matematikkonkurranse

UNIVERSITETET I OSLO

MAT1140: Kort sammendrag av grafteorien

Lineære ligningssystemer og gausseliminasjon

INF2220: Time 12 - Sortering

INF2220: Forelesning 2

6. oktober Dagens program: Første time: Andre time, gjesteforelesning: Uavgjørbarhet. Stein Krogdahl. (Ikke pensum, egne foiler legges ut)

Lineære ligningssystemer og gausseliminasjon

Geometri Verktøylinja i GeoGebra Konstruksjon / tegning Konstruksjonsforklaring Normaler, paralleller og vinkler Mangekant, areal og omkrets

UNIVERSITETET I OSLO

Oppgaver MAT2500. Fredrik Meyer. 29. august 2014

LP. Leksjon 8: Kapittel 13: Nettverk strøm problemer, forts.1

MA2401 Geometri Vår 2018

Eksamen MAT1013 Matematikk 1T Våren 2013

Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110. Stein Krogdahl Ifi, UiO

Grunnleggende geometri

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

UNIVERSITETET I OSLO

1P kapittel 3 Geometri Løsninger til innlæringsoppgavene

Oppgaver MAT2500 høst 2011

GEOGEBRA (3.0) til R1-kurset

Moro med figurer trinn 90 minutter

Familiematematikk MATTEPAKKE 6. Trinn

INF5110 V2013 Stoff som i boka står i kap 4, men som er generelt stoff om grammatikker

Løsningsforslag til problemløsningsoppgaver i MA-132 Geometri høsten 2008.

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

Novapoint DCM basis Terrengmodellering av eksisterende situasjon Lag i grunnen

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

Lokal læreplan Sokndal skole. Fag: Matematikk Trinn: 5.trinn Lærebok: Grunntall 5A og 5B

Repetisjon og mer motivasjon. MAT1030 Diskret matematikk. Repetisjon og mer motivasjon

Sekventkalkyle for utsagnslogikk

Utforsk mønster og former Barnehagens siste år 60 minutter

Spikerbrettet oppdaget på nytt

LP. Leksjon 7. Kapittel 13: Nettverk strøm problemer

Om plotting. Knut Mørken. 31. oktober 2003

MAT1030 Forelesning 25

Løsnings forslag i java In115, Våren 1996

Geometri Mona Røsseland Nasjonalt senter for matematikk i Opplæringen Leder i LAMIS Lærebokforfatter, MULTI Geometri i skolen Geometri etter 4.

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

Eksamen i Geometrisk Modellering

A study of different matching heuristics. Hovedfagspresentasjon Jan Kasper Martinsen

MAT1030 Diskret Matematikk

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

5.A Digitale hjelpemidler i geometri

Eksamen i matematikk løsningsforslag

med canvas Canvas Grafikk Læreplansmål Gløer Olav Langslet Sandvika VGS

Eksamen 1T våren 2016 løsning

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

Kul geometri - volum og overflate av kulen

Dynamisk programmering Undervises av Stein Krogdahl

DEL 1 Uten hjelpemidler

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

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

Skilpaddekunst. Steg 1: Møt skilpadden. Sjekkliste. Introduksjon. Turtles

Løsningsforslag Matematikk for ungdomstrinnet Del 1, Modul 1, 4MX130UM1-K

2.4 Sprettoppfigurer, overraskelseseffekter med mye matematikk

DEL 2 REGELBOK 2P + 2P-Y

MA1102 Grunnkurs i analyse II Vår 2019

GEOGEBRA. 1 Tegn figurer. Fremgangsmåte: 1 Klikk bort Algebrafeltet.

Hannametoden en finfin nybegynnermetode for å løse Rubik's kube, en såkalt "layer-by-layer" metode og deretter en metode for viderekommende.

(a) R n defineres som mengden av kolonnevektorer. a 1 a 2. a n. (b) R n defineres som mengden av radvektorer

Unneberg skole ÅRSPLAN I MATEMATIKK. 3. trinn Rød skrift marker det som er fra utviklende matte.

Platonske legemer i klasserommet

Lengdemål, areal og volum

NIO 1. runde eksempeloppgaver

Lineære likningssystemer og matriser

Kapittel 21 TESSELERING TESSELERING. Tesselere betyr å dekke en flate med en type eller noen få forskjellige typer figurer.

Connected Learning Gateway CLG. Author Expert

Lærerveiledning. Oppgave 1. Et rektangel har sidelengder 15 cm og 9 cm. Tina klipper bort et kvadrat i hvert hjørne. Hvert kvadrat har omkrets 8 cm.

Karakterer. Kapittel Homomorfier av grupper. 8.2 Representasjoner

INF-MAT5370. Grafer og datastrukturer

Oppgaver MAT2500. Fredrik Meyer. 3. oktober 2014 AD BC + BD CA + CD AB = 0.

Eksamen MAT1013 Matematikk 1T Våren 2013

Korteste Vei II. Lars Vidar Magnusson Kapittel 24 Bellman-Ford algoritmen Dijkstra algoritmen

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Transkript:

INF 4130 17. november 2011 Triangulering Stein Krogdahl Med sterk støtte fra Petter Kristiansen Skal først se på et eksempel fra Google Earth De bruker en underliggende triangulering av landskapet, men den ser ut til å synes bare på fjelltopper. Vi ser på Mount Everest (Det må du gjøre selv, og du må gå ganske nær, og se toppen fra siden. Da ser du tringler med ca. 60 meters sidekanter) 1

Fra en annen bok: http://www.cs.uu.nl/geobook/interpolation.pdf t l ti Her har vi i en del terreng- punkter målt høyden over havet. Målepunktene er projisert ned på et tenkt havnivå, og det er der foretatt en fornuftig fti triangulering. i Denne gir så en triangulering av terrenget som er lett å tegne ut, skyggelegge, etc. 2

Utgangspunkt: En punktmengde i planet Vi skal finne en triangulering Nedenfor er gitt en punktmengde, og en tilfeldig triangulering g av den. Når man skal gjøre en triangulering skal man også ha angitt et polygon der hjørnene er punkter i punktmengden, og der alle de andre punktene er inne i polygonet Men vi skal her anta (slik vi har gjort over) at dette polygonet er den ( gj ) p yg konvekse innhyllingen av punkt-mengden (se neste foil) 3

Om konveks innhylling La P være en mengde punkter i et k-dimensjonalt rom, P R k. (Vi skal her bare se på k = 2.) Definisjon En mengde Q R 2 er konveks dersom: for alle punkter q 1, q 2 Q ligger hele linjesegmentet q 1 q 2 i Q. Definisjon Den konvekse innhyllingen til en mengde punkter P R 2 er den minste konvekse mengde Q som inneholder punktene i P. Det er altså det omsluttende polyeder. 4

Hvor mange triangeler og kanter er det i en triangulering? Denne betrakningen gir også en algoritme for å finne en eller annen triangulering (og vi skal bruke en forfining av denne senere) Antall punkter langs det ytre polygon er n, og antall inni er m Vi kan lage en triangulering for de ytre n punktene ved å velge ett av dem, og trekke kanter fra de n-3 motstående punktene. Sammen med de ytre kantene gir dette n + (n-3) = 2*n-3 kanter Og det gir n-2 triangler Vi tar så med ett og ett av de øvrige punktene, finner det triangelet det ligger i og trekker linjer til dets tre hjørner. Det gir en økning på tre kanter og to triangler. Dette skjer m ganger, og totalt får vi da: Antall kanter: 2*n 3 + 3*m = 2*n + 3*m 3 Antall triangler: n - 2 + 2*m = n + 2*m - 2 Dette angir også antall kanter og triangler for enhver triangulering av så mange punkter. Vi skal ikke bevise dette, men satser på at det virker intuitivt rimelig 5

Oppbygging av en eller annen triangulering (og illustrasjon til forrige side) Har i alt n noder på det ytre polygon, og m indre noder (inkluderer alle sorte, røde og grå) Tegningen viser steget når vi legger ett nytt punkt (rødt) til trianguleringen En ny node gir Tre ekstra kanter To ekstra triangler Derfor får vi: Antall kanter: 2*n 3 + 3*m = 2*n + 3*m 3 Antall triangler: n - 2 + 2*m = n + 2*m - 2 6

Det er mange forskjellige trianguleringer over en gitt gttpunktmengde Vi antar at følgende sær-tilfeller ikke forekommer: (1) Fire noder på én sirkel. ik (2) Alle noder ligger på én rett linje Og hva er en god triangulering? Vanligvis en der hvert triangel er så nær en likesidet trekant (med alle vinkler lik 60 O ) som mulig. To greie mål kunne være: Minimalisering av maksimal vinkel: Den største vinkelen er så liten som mulig (merk: Den største vinklen vil alltid være minst 60 O ) Maksimalisering av minimal vinkel: Den minste vinklen (som aldri er større enn 60 O ) er så stor som mulig. Det viser seg at maks-av-min er vesentlig lettere å behandle enn min-av-max, så den er absolutt mest brukt. 7

Eksempel: Bedre med så store vinkler som mulig Figuren viser høydemålinger fra terrenget Man vil ønske å interpolere over punktene D.v.s. at man finner høyden dette punktet t har i det aktuelle ti triangelet t (eller den aktuelle kanten, som her) Vi ser at den venstre gir et intuitivt høyderesultat for q enn det den høyre gjør. 8

Definisjon av Delaunay-triangulering (maks-av-min) DEF: En triangulering over n gitte punkter som har størst mulig minste vinkel av alle mulige trianguleringer g av disse punktene kalles en Delaunay-triangulering. Presisering: Når vinklene sorteres fra største til minste er Delaunaytrianguleringen den som er leksikiografisk størst Denne vinklen er større enn alfa, men mindre enn alle andre vinkler i (a) Figur (a) er en Delaunay-triangulering, g men ikke (b) De har like store minste-vinkler (alfa), men nest minste vinkel er størst i (a)

Veroni-diagram (midtlinje-prinsippet) pp Diagrammet til venstre er Veroni-diagrammet for de gitte punktene Det er laget ut fra at punktene er øyer og at havet skal tildeles hver øy etter midtlinjeprinsippet Delauney-trianguleringen får vi da ved å trekke linjer mellom de punkter/øyer som har et stykke felles grense mellom sine havområder. Merk at disse linjene ikke alltid går gjennom det aktuelle grense-stykket Delaunay-grafen er den duale grafen til grafen som dannes av havgrensene 10

En egenskap, som kan vises å være ekvivalent med de andre definisjonene En triangulering er en Delaunay-triangulering hvis og bare hvis: For alle triangler gjelder at det indre av sirklen gjennom de tre hjørnene ikke inneholder noen punkter. Det er jo ikke i utgangspunktet klart at det alltid finnes en slik triangulering, men det gjør det altså, og det er bare én slik (om det ikke er sær-tilfeller), og det er nettopp Delaunay-trianguleringen. Den til venstre er en Delaunay-triangulering, men ikke den til høyre Merk at vi her har et særtilfelle (fire punkter på en sirkel), og da er ikke Delaunaytrianguleringen entydig. Vi kunne byttet ut kanten c-a med en kant fra p og nedover Det er denne definisjonen vi skal bruke i algoritmen for å finne en Delaunaytriangulering 11

Noen sannheter om vinkler og sirkler d d d Til venstre er teta1 > teta2 > teta3 a b c For å avgjøre om et punkt d er inni (eller på eller utenfor) sirklen gjennom a, b og c må vi sørge for at a, b, c og d kommer i rekkefølge mot klokka rundt firkanten, og så beregne determinanten: Denne beregningen kan optimaliseres, og derved gjøres nokså effektivt 12

Delaunay-trikset Vi antar som på figurene (b) og (c) at firkanten a-b-c-d er konveks. Vi ser her at dersom d ligger inni sirklen som inneholder a, b og c, så vil også sirklen gjennom a, c og d inneholde b. Dermed er altså Delaunay-kravet ikke oppfylt Om vi da bytter ut kanten a-c med kanten b-d så vil a ligge utenfor sirkelen gjennom b, c og d, og c vil ligge utenfor sirklen 13 Dermed er Delaunay-kravet oppfylt, hvertfall lokalt

Algoritme som finner Denaulay-trianguleringen Vi har gitt et antall noder i planet. Start: For å ha en triangulering å starte med legger vi til tre noder, slik at det triangelet de utgjør inneholder alle de gitte nodene Og vi lar dette ene triangelet være vår initielle triangulering, se under Vi gjør som vi gjorde da vi fant en helt tilfeldig triangulering på de første foilene (da vi tellet kanter og triangler) Nemlig å legge til én og én node, og for hver vi legger til trekke de tre kantene til hjørnene av den trekanten de falt inni. Dette kan gi en triangulering som ikke er Delaunay, og før vi legger til en ny node til vil vi gjenopprette Delaunay-egenskapen. Hvordan dette gjøres følger på neste side. Det er her viktig ålahvertfall to av punktene være laaaangt unna. Da blir det lettere å fjerne dem igjen til slutt. Det tredje punktet kan godt være fra mengden. 14

Gjenoppretting av Delaunay-egenskapen Stegett i algoritmen er altså slik (figur neste side): Vi har en Delaunay-triangulering av den delemengde av nodene vi har tatt inn Vi velger én ny node p, finner hvilket triangel den ligger i, og lager kanter fra noden til hjørnene i dette triangelet. Dette kan føre til at trianguleringen ikke lenger er Delaunay, og vi ønsker da å gjenopprette denne egenskapen før vi fortsetter For å gjøre det holder det å se på alle trianglene som har ett hjørne i p, og se om Delaunay-egenskapen holder lokalt for dette i forhold til det motståene triangelet og dens fjerneste hjørne (men vi beviser ikke at dette er nok). Om et triangel med p som hjørne og dets motstående triangel ikke tilfredstiller dette vil disse to trianglene alltid utgjøre en konveks firkant, og vi gjør da Delaunay-trikset på denne firkanten. Da blir denne firkanten hvertfall lokalt Delaunay, men noen av de andre trekantene med ett hjørne i p kan da ha fått ødelagt sin Delaunay-egenskap. Mengden av triangeler med p i et hjørne vil dermed stadig forandre seg (og øke i antall), og man må fortsette prosessen til det hele roer seg. Men, det vil roe seg, siden det ved hver bruk av Delaunay-trikset vil komme én ny kant mot p, og det finnes bare et endelig antall andre noder som p kan få kanter til. 15

Tillegg av én ny node, med Delaunay-reperasjoner 16

Start og avslutning av algoritmen Slik det er framstilt her starter vi altså algoritmen ved å legge til tre ekstra noder slik at triangelet de danner inneholder alle de opprinnelige nodene. Dette triangelet utgjør da start-trianguleringen, og: Det gjør at nye noder som tas inn alltid vil ligge inne i et triangel i den trianguleringen vi allerede har laget. Problemet er da å bli kvitt de tre ekstra punktene igjen til slutt. Dette er ikke vanskelig, men vi ser ikke på detaljene. Fjerningen blir enklest om ekstra-punktene ligger L-A-N-G-T unna nodemengden. Da kan det bare være å fjerne dem, og kantene til dem. 17

Alternativ start og utvidet hovedsteg i algoritmen I stedet for å starte med å legge til tre ekstra noder kan man starte med å velge tre tilfeldige noder fra mengden. Når man da legger til én og én node vil noen falle inne i et eksisterende triangel slik som beskrevet til nå. MEN, en ny node kan også falle helt utenfor de triangler som er laget til nå, og da må man bruke en annen metode for å få passet den nye noden inn blant de gamle. Dette gjøres ved å trekke kanter fra den nye til alle de ferdigbehandlede noder som er direkte synlige fra den nye. Dette kan igjen ødelegge Delaunay-egenskapen, og det må repareres. Dette kan gjøres etter samme prinsipp som i det tilfelle vi har sett på, men det må forandres noen steder. Vi går ikke inn på dette i detalj. Effektivitet: Med god datarepresentasjon og litt optimalisering går begge metoder i tid O(n log n) 18

Litt om terreng-representasjon Som antydet i starten kan man representere terreng ved å ha en flat triangulering, og så angi høyder i hvert punkt Da er det lett å regne ut hvordan hvert triangel ligger i terrenget og hvordan de er vinklet i forhold til andre terreng-triangler. Det er også forholdsvis greit å tegne det ut i for eksempel i perspektiv, og sørge for å hoppe over skjulte flater Det er lett å farge hvert triangel f.eks. slik: Skyggelegge den ut fra vinklen til en gitt lyskilde, og ting som skygger Gi den en grunnfarge g ut fra hvor høyt den ligger 19

Mer om terreng-representasjon (Mer spørsmål enn svar) Det finnes metoder for å avrunde en triangulering med høyder, og dermed få flater over trianglene som hvertfall stemmer over ens i første deriverte med nabo-flatene. Da vil man kanskje ikke insistere på at flaten har nøyaktig riktig høyde i hvert hjørne Det ser ut til at det her er vanlig å bruke minste kvadraters metode for åfåd det riktigst tmulig Det ser ut til at Google Earth gjør slik avrunding, bortsett fra på fjelltopper. Og det er meget aktuelt i forbindelse med spill. 20

Mer om terreng-representasjon Om vi har masse målepunkter er det ikke sikkert vi behøver å bruke alle målepunktene for å få god nok terreng-representasjon. Det er ofte både unødvendig og for ressurskrevende Hvordan kan man fornuftig gjøre et utvalg av punkter slik at man får en rasjonell og riktig nok representasjon av terrenget? Altså, færre tringler der terrenget er flatt, men tettere der det humpte 21