” visualisering av trianguleringer og trianguleringsprosesser”
Post on 01-Jan-2016
46 Views
Preview:
DESCRIPTION
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