” Visualisering av trianguleringer og trianguleringsprosesser”

Post on 01-Jan-2016

46 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

” 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 - PowerPoint PPT Presentation

Transcript

1

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

HovedfagspresentasjonPer-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

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

15

Voronoi-diagram

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

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

21

Tradisjonell trianguleringsapplikasjon

TrianguleringsalgoritmerTrianguleringsalgoritmer

ApplikasjonApplikasjon

Underliggende datastrukturUnderliggende datastruktur

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

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

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

31

Influensregion

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

p

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

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

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

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

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

)))(())(((2

)()(

13121312

22113

23112

yyyyyyxx

dyydyy

)))(())(((2

)()(

13121312

23112

22113

yyyyyyxx

dxxdxx

39

Omskrivende sirkler

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

p

40

Omskrivende sirkler

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

p

41

Omskrivende sirkler

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

p

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

KlassediagramStatusBar

StatusBar

InfluenceRegionInfluenceRegion

Triangulation2DTriangulation2D

RandomTriangulationRandomTriangulation

MarkedTriangleMarkedTriangle

VoronoiVoronoi

IncrementalTriangulationIncrementalTriangulation

ConvexHullConvexHull

GLSceneGLScene

FrameRateCounterFrameRateCounter

FileTriangulationFileTriangulation

HelpLineHelpLine

ColorTableColorTable

CircumcircleCircumcircle

CameraCamera

TTL TriangulationTTL Triangulation

MarkedTrianglesMarkedTriangles

ApplicationWindowApplicationWindow

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_;

}

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

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

51

Program

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

52

Takk til :-)

• Veiledere:Morten DæhlenØyvind Hjelle

• Thomas Sevaldrud

• Korrekturlesere:Vera Louise HaugeAnette Gjetnes

top related