1 / 52

” Visualisering av trianguleringer og trianguleringsprosesser”

” 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

Download Presentation

” Visualisering av trianguleringer og trianguleringsprosesser”

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ”Visualisering av trianguleringer og trianguleringsprosesser” Hovedfagspresentasjon Per-Idar Evensen (periev@ifi.uio.no) 10. desember 2004

  2. Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål

  3. Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål

  4. Bakgrunn og motivasjon • Interaktiv trianguleringsapplikasjon til bruk i undervisning (INF-MAT5370 tidligere INF-TT). • Demo­applikasjon 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.

  5. Hovedproblemstilling • Finne hensiktsmessige måter å visualisere Delaunay-trianguleringer og teorien rundt disse.

  6. 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.

  7. Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål

  8. Begreper og definisjoner • Noder, kanter, trekanter og trianguleringer • Delaunay-triangulering • Voronoi-diagram • Omskrivende sirkel

  9. 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.

  10. Trianguleringer i planet Et domene med punkter i planet, og en mulig triangulering av disse.

  11. Swapping av kanter Swapping av en kant i et stengt konvekst kvadrilateral.

  12. Swapping av kanter Swapping av en kant i et stengt konvekst kvadrilateral.

  13. 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.

  14. 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.

  15. Voronoi-diagram Dersom vi setter sammen Voronoi-regionene til alle punktene i P, får vi Voronoi-diagrammetP.

  16. Delaunay-triangulering Trekker vi rette linjestykker mellom alle Voronoi-naboene i P, får vi en Delaunay-triangulering.

  17. Delaunay-triangulering En omskrivende sirkel til en trekant i en Delaunay-triangulering av en punktmengde P omslutter ikke noen punkter fra P.

  18. Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål

  19. 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.

  20. Applikasjon Triangulation Template Library (TTL) Generiske algoritmer basert på G-maps, og enkle geometriske og topologiske operasjoner. Topologiske elementer: Darter D {d}. Iteratorer i: DD, 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

  21. Applikasjon Trianguleringsalgoritmer Underliggende datastruktur Tradisjonell trianguleringsapplikasjon

  22. Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål

  23. 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.

  24. Menysystemet

  25. Inkrementell algoritme Starter med en kunstig initiell triangulering som består av to trekanter.

  26. Inkrementell algoritme Bygger opp trianguleringen ved å sette inn en og en node. Trianguleringen oppdateres hele tiden til å være Delaunay.

  27. Inkrementell algoritme Bygger opp trianguleringen ved å sette inn en og en node. Trianguleringen oppdateres hele tiden til å være Delaunay.

  28. Inkrementell algoritme Etter at alle nodene som skal være med i trianguleringen har blitt satt inn, fjerner vi den kunstige randen.

  29. Avansert funksjonalitet • Influensregion • Voronoi-diagram • Omskrivende sirkler

  30. 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.

  31. Influensregion p De trekantene i trianguleringen som har omskrivende sirkler som inneholder p, er ikke lenger er Delaunay-trekanter og må derfor modifiseres.

  32. Influensregion p Alle trekantene i influensregionen til p har p som felles node. Dette utnytter vi når vi skal visualisere influensregioner i TriangTutor.

  33. 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.

  34. 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.

  35. Voronoi-diagram p

  36. 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ærings­punktet mellom disse.

  37. Senter i omskrivende sirkel Likningen for en sirkel med sentrum (a, b) og radius r: (x – a)2 (y – b)2 = r2.  x2 – 2axa2y2 – 2byb2 = r2. Siden denne likningen ikke er lineær lar vi q = r2 – a2 – b2 Etter litt omstokking får vi da: (2x)a (2y)bq = x2y2, 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.

  38. 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) .

  39. Omskrivende sirkler p Visning av alle omskrivende sirkler for en triangulering med 10 trekanter.

  40. Omskrivende sirkler p Visning av alle omskrivende sirkler for en triangulering med 40 trekanter.

  41. Omskrivende sirkler p Visning av omskrivende sirkler for 10 av trekantene i trianguleringen med 40 trekanter.

  42. Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål

  43. 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).

  44. StatusBar FrameRateCounter ApplicationWindow Camera GLScene ColorTable HelpLine InfluenceRegion ConvexHull Voronoi Circumcircle MarkedTriangle Triangulation2D MarkedTriangles TTL Triangulation IncrementalTriangulation RandomTriangulation FileTriangulation Klassediagram

  45. 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_; }

  46. 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()

  47. Program • Bakgrunn og motivasjon • Teoretiske begreper og definisjoner • TTL (Triangulation Template Library) • Funksjonalitet i TriangTutor • Programstruktur • Oppsummering og konklusjon • Demo • Spørsmål

  48. 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.

  49. 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.

  50. 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

More Related