Top Banner
1 Visualisering av Visualisering av trianguleringer og trianguleringer og trianguleringsprosesser” trianguleringsprosesser” Hovedfagspresentasjon Per-Idar Evensen ([email protected]) 10. desember 2004
52

” Visualisering av trianguleringer og trianguleringsprosesser”

Jan 01, 2016

Download

Documents

porter-navarro

” Visualisering av trianguleringer og trianguleringsprosesser”. Hovedfagspresentasjon Per-Idar Evensen ([email protected]) 10. desember 2004. Program. Bakgrunn og motivasjon Teoretiske begreper og definisjoner TTL (Triangulation Template Library) Funksjonalitet i TriangTutor - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ” Visualisering av trianguleringer og trianguleringsprosesser”

1

””Visualisering av trianguleringer Visualisering av trianguleringer og trianguleringsprosesser”og trianguleringsprosesser”

HovedfagspresentasjonPer-Idar Evensen

([email protected])

10. desember 2004

Page 2: ” Visualisering av trianguleringer og trianguleringsprosesser”

2

Program

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

Page 3: ” Visualisering av trianguleringer og trianguleringsprosesser”

3

Program

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

Page 4: ” Visualisering av trianguleringer og trianguleringsprosesser”

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.

Page 5: ” Visualisering av trianguleringer og trianguleringsprosesser”

5

Hovedproblemstilling

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

Page 6: ” Visualisering av trianguleringer og trianguleringsprosesser”

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.

Page 7: ” Visualisering av trianguleringer og trianguleringsprosesser”

7

Program

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

Page 8: ” Visualisering av trianguleringer og trianguleringsprosesser”

8

Begreper og definisjoner

• Noder, kanter, trekanter og trianguleringer

• Delaunay-triangulering

• Voronoi-diagram

• Omskrivende sirkel

Page 9: ” Visualisering av trianguleringer og trianguleringsprosesser”

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.

Page 10: ” Visualisering av trianguleringer og trianguleringsprosesser”

10

Trianguleringer i planet

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

Page 11: ” Visualisering av trianguleringer og trianguleringsprosesser”

11

Swapping av kanter

Swapping av en kant i et stengt konvekst kvadrilateral.

Page 12: ” Visualisering av trianguleringer og trianguleringsprosesser”

12

Swapping av kanter

Swapping av en kant i et stengt konvekst kvadrilateral.

Page 13: ” Visualisering av trianguleringer og trianguleringsprosesser”

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.

Page 14: ” Visualisering av trianguleringer og trianguleringsprosesser”

14

Voronoi-region

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.

pi

Page 15: ” Visualisering av trianguleringer og trianguleringsprosesser”

15

Voronoi-diagram

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

Page 16: ” Visualisering av trianguleringer og trianguleringsprosesser”

16

Delaunay-triangulering

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

Page 17: ” Visualisering av trianguleringer og trianguleringsprosesser”

17

Delaunay-triangulering

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

Page 18: ” Visualisering av trianguleringer og trianguleringsprosesser”

18

Program

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

Page 19: ” Visualisering av trianguleringer og trianguleringsprosesser”

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.

Page 20: ” Visualisering av trianguleringer og trianguleringsprosesser”

20

Applikasjon som bruker TTL

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.

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.

TilpassningslagGrensesnitt mot den underliggende datastrukturen.• Dart klasse med -iteratorer• Traits klasse med geometriske og topologiske operasjoner og

typedefinisjoner.

TilpassningslagGrensesnitt mot den underliggende datastrukturen.• Dart klasse med -iteratorer• Traits klasse med geometriske og topologiske operasjoner og

typedefinisjoner.

ApplikasjonApplikasjon

Underliggende datastrukturUnderliggende datastruktur

Page 21: ” Visualisering av trianguleringer og trianguleringsprosesser”

21

Tradisjonell trianguleringsapplikasjon

TrianguleringsalgoritmerTrianguleringsalgoritmer

ApplikasjonApplikasjon

Underliggende datastrukturUnderliggende datastruktur

Page 22: ” Visualisering av trianguleringer og trianguleringsprosesser”

22

Program

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

Page 23: ” Visualisering av trianguleringer og trianguleringsprosesser”

23

Grunnleggende funksjonalitet

• Lage Delaunay-trianguleringer med og uten føringer (inkrementell algoritme).

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

Page 24: ” Visualisering av trianguleringer og trianguleringsprosesser”

24

Menysystemet

Page 25: ” Visualisering av trianguleringer og trianguleringsprosesser”

25

Inkrementell algoritme

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

Page 26: ” Visualisering av trianguleringer og trianguleringsprosesser”

26

Inkrementell algoritme

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

Page 27: ” Visualisering av trianguleringer og trianguleringsprosesser”

27

Inkrementell algoritme

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

Page 28: ” Visualisering av trianguleringer og trianguleringsprosesser”

28

Inkrementell algoritme

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

Page 29: ” Visualisering av trianguleringer og trianguleringsprosesser”

29

Avansert funksjonalitet

• Influensregion

• Voronoi-diagram

• Omskrivende sirkler

Page 30: ” Visualisering av trianguleringer og trianguleringsprosesser”

30

Influensregion

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.

p

Page 31: ” Visualisering av trianguleringer og trianguleringsprosesser”

31

Influensregion

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

p

Page 32: ” Visualisering av trianguleringer og trianguleringsprosesser”

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.

Page 33: ” Visualisering av trianguleringer og trianguleringsprosesser”

33

Voronoi-diagram

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.

p

Page 34: ” Visualisering av trianguleringer og trianguleringsprosesser”

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.

Page 35: ” Visualisering av trianguleringer og trianguleringsprosesser”

35

Voronoi-diagram

p

Page 36: ” Visualisering av trianguleringer og trianguleringsprosesser”

36

Senter i omskrivende sirkel

p

Geometrisk sett kan vi finne senteret ved å konstruere midtnormalen til to av kantene i trekanten, og deretter finne skjærings punktet mellom disse.

p1

p2

p3

Page 37: ” Visualisering av trianguleringer og trianguleringsprosesser”

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.

Page 38: ” Visualisering av trianguleringer og trianguleringsprosesser”

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

)))(())(((2

)()(

13121312

22113

23112

yyyyyyxx

dyydyy

)))(())(((2

)()(

13121312

23112

22113

yyyyyyxx

dxxdxx

Page 39: ” Visualisering av trianguleringer og trianguleringsprosesser”

39

Omskrivende sirkler

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

p

Page 40: ” Visualisering av trianguleringer og trianguleringsprosesser”

40

Omskrivende sirkler

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

p

Page 41: ” Visualisering av trianguleringer og trianguleringsprosesser”

41

Omskrivende sirkler

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

p

Page 42: ” Visualisering av trianguleringer og trianguleringsprosesser”

42

Program

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

Page 43: ” Visualisering av trianguleringer og trianguleringsprosesser”

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

Page 44: ” Visualisering av trianguleringer og trianguleringsprosesser”

44

KlassediagramStatusBar

StatusBar

InfluenceRegionInfluenceRegion

Triangulation2DTriangulation2D

RandomTriangulationRandomTriangulation

MarkedTriangleMarkedTriangle

VoronoiVoronoi

IncrementalTriangulationIncrementalTriangulation

ConvexHullConvexHull

GLSceneGLScene

FrameRateCounterFrameRateCounter

FileTriangulationFileTriangulation

HelpLineHelpLine

ColorTableColorTable

CircumcircleCircumcircle

CameraCamera

TTL TriangulationTTL Triangulation

MarkedTrianglesMarkedTriangles

ApplicationWindowApplicationWindow

Page 45: ” Visualisering av trianguleringer og trianguleringsprosesser”

45

Grafisk objektclass GraphicalObject {

public:

GraphicalObject(ttl::Triangulation* tri, ColorTable* ct);

~GraphicalObject();

void callDisplayList();

void updateObject();

private:

GLuint createDisplayList();

private:

ttl::Triangulation* triangulation_;

ColorTable* color_table_;

GLuint display_list_;

}

Page 46: ” Visualisering av trianguleringer og trianguleringsprosesser”

46

Hovedopptegningsfunksjonen 01 resetOpenGL();

02 setCameraPosition()

03 if Triangulation2D != 0

04 if show_nodes

05 Triangulation2D->callNodesDisplayList()

06 Triangulation2D->callConstrainedNodesDisplayList()

07 if show_edges

08 Triangulation2D->callEdgesDisplayList()

09 Triangulation2D->callConstrainedEdgesDisplayList()

10 if show_convex_hull

11 ConvexHull->callDisplayList()

12 if show_influence_region

13 InfluenceRegion->callDisplayList()

14 if show_voronoi_diagram

15 Voronoi->callDisplayList()

16 if MarkedTriangles != 0

17 MarkedTriangles->callDisplayList()

18 if show_marked_circumcircles

19 MarkedTriangles->showCircumcircles()

20 if show_all_circumcircles

21 Circumcircles->callDisplayList()

22 if show_helpline

23 HelpLine->draw()

24 swapBuffers()

Page 47: ” Visualisering av trianguleringer og trianguleringsprosesser”

47

Program

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

Page 48: ” Visualisering av trianguleringer og trianguleringsprosesser”

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.

Page 49: ” Visualisering av trianguleringer og trianguleringsprosesser”

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.

Page 50: ” Visualisering av trianguleringer og trianguleringsprosesser”

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

Page 51: ” Visualisering av trianguleringer og trianguleringsprosesser”

51

Program

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

Page 52: ” Visualisering av trianguleringer og trianguleringsprosesser”

52

Takk til :-)

• Veiledere:Morten DæhlenØyvind Hjelle

• Thomas Sevaldrud

• Korrekturlesere:Vera Louise HaugeAnette Gjetnes