520 likes | 678 Views
” Visualisering av trianguleringer og trianguleringsprosesser”. Hovedfagspresentasjon Per-Idar Evensen (periev@ifi.uio.no) 10. desember 2004. Program. Bakgrunn og motivasjon Teoretiske begreper og definisjoner TTL (Triangulation Template Library) Funksjonalitet i TriangTutor
E N D
”Visualisering av trianguleringer og trianguleringsprosesser” Hovedfagspresentasjon Per-Idar Evensen (periev@ifi.uio.no) 10. desember 2004
Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål
Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål
Bakgrunn og motivasjon • Interaktiv trianguleringsapplikasjon til bruk i undervisning (INF-MAT5370 tidligere INF-TT). • Demoapplikasjon for trianguleringsbiblioteket TTL (Triangulation Template Library). • Visualisere Delaunay-trianguleringer i planet med og uten føringer. • I tillegg visualisere noen andre konsepter relatert til Delaunay-trianguleringer. • Bruke OpenGL til å generere datagrafikken.
Hovedproblemstilling • Finne hensiktsmessige måter å visualisere Delaunay-trianguleringer og teorien rundt disse.
TriangTutor • Delaunay-trianguleringer • Voronoi-diagram • Omskrivende sirkler • Influensregion • Høy grad av brukerinteraksjon • Flytte noder rundt • Plattformuavhengig (Windows og Linux/Unix) • Brukervennlig (enkel å ta i bruk) og robust. • Menysystem laget med Qt.
Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål
Begreper og definisjoner • Noder, kanter, trekanter og trianguleringer • Delaunay-triangulering • Voronoi-diagram • Omskrivende sirkel
Trianguleringer • Triangulere: dele opp geometriske flater eller plane polygoner i trekanter. • Representere en flate i en datamaskin. • Kartografi. • Digitale terrengmodeller. • Geografiske informasjonssystemer. • FEM (finite element methods). • Datagrafikk og visualisering.
Trianguleringer i planet Et domene med punkter i planet, og en mulig triangulering av disse.
Swapping av kanter Swapping av en kant i et stengt konvekst kvadrilateral.
Swapping av kanter Swapping av en kant i et stengt konvekst kvadrilateral.
Delaunay-triangulering3 definisjoner: • Optimal i henhold til MaxMin-vinkel kriteriet. (Minste vinkel er størst mulig). • Rettlinjedualen til Voronoi-diagrammet til P. • Ingen omskrivende sirkel av noen trekant i trianguleringen inneholder noen punkter fra P.
Voronoi-region pi Det indre av Voronoi-regionen til pi består av alle punktene x i planet som ligger nærmere pi enn noen av de andre punktene i P.
Voronoi-diagram Dersom vi setter sammen Voronoi-regionene til alle punktene i P, får vi Voronoi-diagrammetP.
Delaunay-triangulering Trekker vi rette linjestykker mellom alle Voronoi-naboene i P, får vi en Delaunay-triangulering.
Delaunay-triangulering En omskrivende sirkel til en trekant i en Delaunay-triangulering av en punktmengde P omslutter ikke noen punkter fra P.
Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål
TTL • Generisk trianguleringsbibliotek ved at det ikke avhenger av en spesiell underliggende datastruktur. • Algoritmene er implementer på et abstrakt nivå vha. G-maps med dartalgebra og -iteratorer. • Kommuniserer med datastrukturen til applikasjonen gjennom et grensesnitt eller tilpassningslag.
Applikasjon Triangulation Template Library (TTL) Generiske algoritmer basert på G-maps, og enkle geometriske og topologiske operasjoner. Topologiske elementer: Darter D {d}. Iteratorer i: DD, i 0, 1 ,2. Tilpassningslag Grensesnitt mot den underliggende datastrukturen. • Dart klasse med -iteratorer • Traits klasse med geometriske og topologiske operasjoner og typedefinisjoner. Underliggende datastruktur Applikasjon som bruker TTL
Applikasjon Trianguleringsalgoritmer Underliggende datastruktur Tradisjonell trianguleringsapplikasjon
Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål
Grunnleggende funksjonalitet • Lage Delaunay-trianguleringer med og uten føringer (inkrementellalgoritme). • Innsetting, fjerning og interaktiv flytting av noder. • Innsetting av føringer (fastlagte kanter). • Lese inn og lagre noder og føringer til fil. • Generere vilkårlige punkter. • Lagre kopi av framebufferet til fil (figurer). • Zoome og panorere. • Fargetabeller.
Inkrementell algoritme Starter med en kunstig initiell triangulering som består av to trekanter.
Inkrementell algoritme Bygger opp trianguleringen ved å sette inn en og en node. Trianguleringen oppdateres hele tiden til å være Delaunay.
Inkrementell algoritme Bygger opp trianguleringen ved å sette inn en og en node. Trianguleringen oppdateres hele tiden til å være Delaunay.
Inkrementell algoritme Etter at alle nodene som skal være med i trianguleringen har blitt satt inn, fjerner vi den kunstige randen.
Avansert funksjonalitet • Influensregion • Voronoi-diagram • Omskrivende sirkler
Influensregion p Når det settes inn et punkt p i en Delaunay-triangulering, må et begrenset område rundt p retrianguleres for at trianguleringen fortsatt skal være Delaunay.
Influensregion p De trekantene i trianguleringen som har omskrivende sirkler som inneholder p, er ikke lenger er Delaunay-trekanter og må derfor modifiseres.
Influensregion p Alle trekantene i influensregionen til p har p som felles node. Dette utnytter vi når vi skal visualisere influensregioner i TriangTutor.
Voronoi-diagram p For hver trekant i trianguleringen beregnes senteret i den omskrivende sirkelen, og sentrene i de omskrivende sirklene til de tre nabotrekantene. Det tegnes så tre Voronoi-kanter mellom disse.
Voronoi-diagram p Dersom trekanten ligger på randen tegner vi en Voronoi-kant som står vinkelrett på randkanten og strekker seg langt vekk fra trianguleringen.
Senter i omskrivende sirkel p2 p1 p3 p Geometrisk sett kan vi finne senteret ved å konstruere midtnormalen til to av kantene i trekanten, og deretter finne skjæringspunktet mellom disse.
Senter i omskrivende sirkel Likningen for en sirkel med sentrum (a, b) og radius r: (x – a)2 (y – b)2 = r2. x2 – 2axa2y2 – 2byb2 = r2. Siden denne likningen ikke er lineær lar vi q = r2 – a2 – b2 Etter litt omstokking får vi da: (2x)a (2y)bq = x2y2, som er lineær med hensyn på a, b og q. Setter vi inn for de tre punktene p1, p2 og p3 får vi et likningssystem, som kan skrives på matriseform og løses ved hjelp av Cramers regel.
Senter i omskrivende sirkel Løsning: x = x1 – y = y1 der dij2 er kvadratet av avstanden mellom to punkter pi og pj: dij2 = (xj – xi)2 (yj – yi)2. Disse likningene er numerisk stabile og dessuten raske å beregne på grunn av relativt få divisjoner og multiplikasjoner (brukes av Jonathan R. Shewchuk) .
Omskrivende sirkler p Visning av alle omskrivende sirkler for en triangulering med 10 trekanter.
Omskrivende sirkler p Visning av alle omskrivende sirkler for en triangulering med 40 trekanter.
Omskrivende sirkler p Visning av omskrivende sirkler for 10 av trekantene i trianguleringen med 40 trekanter.
Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål
Programstruktur • Stort program (nesten 10.000 linjer!) • Godt dokumentert (doxygen) • Viktig å dele opp i mindre deler. • Klasser (17 stk.) • Verktøygruppe. • Grafiske objekter (med stort sett samme oppbygning).
StatusBar FrameRateCounter ApplicationWindow Camera GLScene ColorTable HelpLine InfluenceRegion ConvexHull Voronoi Circumcircle MarkedTriangle Triangulation2D MarkedTriangles TTL Triangulation IncrementalTriangulation RandomTriangulation FileTriangulation Klassediagram
Grafisk objekt classGraphicalObject { public: GraphicalObject(ttl::Triangulation* tri, ColorTable* ct); ~GraphicalObject(); voidcallDisplayList(); voidupdateObject(); private: GLuint createDisplayList(); private: ttl::Triangulation* triangulation_; ColorTable* color_table_; GLuint display_list_; }
Hovedopptegningsfunksjonen 01 resetOpenGL(); 02 setCameraPosition() 03ifTriangulation2D != 0 04ifshow_nodes 05 Triangulation2D->callNodesDisplayList() 06 Triangulation2D->callConstrainedNodesDisplayList() 07ifshow_edges 08 Triangulation2D->callEdgesDisplayList() 09 Triangulation2D->callConstrainedEdgesDisplayList() 10ifshow_convex_hull 11 ConvexHull->callDisplayList() 12ifshow_influence_region 13 InfluenceRegion->callDisplayList() 14ifshow_voronoi_diagram 15 Voronoi->callDisplayList() 16ifMarkedTriangles != 0 17MarkedTriangles->callDisplayList() 18ifshow_marked_circumcircles 19 MarkedTriangles->showCircumcircles() 20ifshow_all_circumcircles 21 Circumcircles->callDisplayList() 22ifshow_helpline 23 HelpLine->draw() 24 swapBuffers()
Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål
Oppsummering og konklusjon • Praktisk rettet hovedfagsoppgave, med mye programmering. • TriangTutor har vært brukt i INF-MAT5370 undervisningen H03 (tidligere versjon) og H04. • Brukes også som basis for ny hovedfagsoppgave (fotballoppgaven). • Brukbart verktøy til å lage figurer/illustrasjoner. • Systemkrav: 1 GHz CPU + grafikkort som støtter antialiasing.
Mulige utvidelser • Implementere skripttolker. • Assosiere høydeverdier til nodene og vise triangulering en i 3D. • Funksjonalitet for forfining av trianguleringer eller gridding. • Starte med ”uendelig” stor trekant i stedet for å starte med et rektangel delt inn i to trekanter. • Lagre figurer som vektorgrafikk (Postscript eller SVG (Scalable Vector Graphics), som bygger på XML (Extensible Markup Language). • ”Huske” innstillingene fra gang til gang.
Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo (TriangTutor.exe) • Spørsmål