(12) Geometrie Punkte

Werbung
(12) Geometrie
Vorlesung
Computergrafik III
M. Raspe
1
Punkte
!
Sie sind oft das Ergebnis von
Digitalisierungsverfahren, wie
etwa Laserscans,
bildgebenden Verfahren,
Radarscans etc.
!
Problem: Triangulierung zur
Oberflächenerzeugung
(lineare Interpolation, planare
Unterteilung)
!
…oder höherwertigere
Funktionen
(Dank an P. Neugebauer, Polygon Technology GmbH)
M. Raspe
2 / 26
2
Problem der Triangulierung
!
Triangulierung nicht eindeutig
!
Schlecht: Triangulierung mit kleinen Dreieckswinkeln
M. Raspe
3 / 26
3
Delaunay-Triangulierung
!
Anzahl der Triangulierungen einer endlichen Punktmenge S
ist endlich, d.h. es gibt eine optimale Triangulierung, die
den minimalen Winkel maximiert.
!
Analoge Definition: für jedes Dreieck ist kein weiterer Punkt
im Umkreis des Dreiecks
!
Ansatz für die Delaunay-Triangulierung
!
!
typische Daten: Dreiecks-/Polygon-Netze („Meshes“)
Delaunay liefert immer die konvexe Hülle...
M. Raspe
4 / 26
4
Algorithmus (grob…)
!
!
!
!
!
Suche einen Punkt am Rand (z.B.
x-Koordinate)
Suche nächstgelegenen Punkt
(kürzester Abstand)
Schleife über alle Punkte
!
Berechne Winkel im Dreieck am
neuen Punkt
!
Wähle Dreieck mit max. Winkel
Rekursion über 2 neue Kanten
Schleife über alle Punkte im
vorderen Halbraum
!
Berechne Winkel im Dreieck am
neuen Punkt
!
Wähle Dreieck mit max. Winkel
4
5
6
3
1
7
2
8
M. Raspe
5 / 26
5
Diskussion
!
Es gibt eine Reihe von interessanten Algorithmen
zur Implementierung
!
!
!
Minimierung des Rechenzeitaufwands
Aber: das Ergebnis ist immer gleich
Wichtiger Vertreter für Divide & Conquer
!
!
!
!
Teile Punktmenge in 2 Hälften
Berechne Triangulierung für beide Hälften
Füge Hälften zusammen
Das ganze rekursiv
M. Raspe
6 / 26
6
Delaunay
!
Eine Delaunay-Traingulierung ist eindeutig in dem Sinne,
dass alle minimalen Winkel maximiert werden
!
Allerdings kann es mehrere solcher Lösungen geben
!
Beispiel:
M. Raspe
7 / 26
7
Ist das eine Delaunay-Triangulierung?
Delaunay Triangulierung Definition 2:
Kein Eckpunkt liegt innerhalb des Umkreises eines anderen
Dreiecks
Antwort: Nein!
M. Raspe
8 / 26
8
Konvexe Hülle
!
Ein Problem der DelaunayTriangulierung ist, daß als
Resultat immer die konvexe
Hülle entsteht.
!
Daher braucht man
Algorithmen, die nachträglich
die Kanten entfernen, die
„man nicht haben will“
!
Typische Verfahren arbeiten
auf Klassifikationen von
Winkeln oder Kanten
!
Definitiv ein schwieriges
Problem
M. Raspe
9 / 26
9
Triangulierung in 3D?
!
Auch mit Delaunay?
!
Im Prinzip ja, allerdings mit
Tetraedern
!
Minimaler Winkel in der
Tetraeder-Spitze maximieren
(Raumwinkel)
!
Problem: welche der drei
Flächen kann ich wegwerfen?
!
Hier gibt es verschiedene
Metriken…
M. Raspe
10 / 26
10
Voronoi Diagramm
!
!
!
Def.: Die Menge aller
Punkte, die näher zum
Punkt P sind, als zu allen
anderen Punkten
4
5
6
3
Der duale Graph zur
Delaunay Triangulierung
1
Einfacher Algorithmus
!
!
7
Nimm die Delaunay-Kanten
Berechne Schnittpunkt der
Mittelsenkrechten
2
8
M. Raspe
11 / 26
11
Typische Datenstruktur
object
surface
surface
surface
polygon
polygon
polygon
Object
Surfaces
polygon
polygon
Polygons
Edges/
vertices
e0
e1
e2
e3
en
Edges
v0
v1
v2
v3
vn
Vertices
Vertex
Edge
Wie berechnet man Nachbarn?
M. Raspe
12 / 26
12
Probleme
!
Viele Kanten müssen in beide Richtungen definiert sein
!
Kante 3-5 und 5-3
5
3
!
Nachbarschaftsinformationen werden oft gebraucht:
!
!
!
!
Gegeben ist ein Dreieck, welches sind die Nachbar-Dreiecke?
Gegeben ist eine Kante, welche Dreiecke haben diese gemeinsam?
Gegeben ist ein Eckpunkt, zu welchen Flächen gehört er?
Gegeben ist ein Eckpunkt, zu welchen Kanten gehört er?
M. Raspe
13 / 26
13
Adaptive Unterteilung
!
Typische Datenstruktur:
Quadtree
!
Unterteilung in 4 selbstähnliche Objekte
!
Adaptive Oberflächenunterteilung wird oft
gebraucht, um Geometrie da
zu erzeugen, wo sie
gebraucht wird
!
!
Radiosity: Adaption der
Schattenkanten
Deformation: Adaption der
Krafteinwirkung
3
4
1
2
13
11 14
12
M. Raspe
14 / 26
14
Adaptive Unterteilung: Subdivide
!
!
Implementierung der Routine
„Subdivide“ (für Dreiecke)
Generiere 3 neue Punkte
!
!
3
Seitenhalbierenden der
Vaterkanten
1
4
Generiere 4 neue
Kinderknoten
!
2
Schreibe die Eckpunkte im
richtigen Uhrzeigersinn in die
neuen Kinderknoten
M. Raspe
15 / 26
15
Nachbarschaftssuche im Quadtree
!
Min. Breite
Min. Höhe
Problem
!
!
Man darf nur auf gleicher
Ebene suchen
Dann nach oben/unten etc.
„herantasten“
M. Raspe
16 / 26
16
Winged-Edge Datenstruktur
Topologische Datenstruktur
!
!
!
!
!
Typischer „Tradeoff“
zwischen Speicherplatz und
Rechenzeit
Nachbarschaftssuche
effizient möglich
Für jede Kante
!
!
!
!
Shirley: „This data structure
makes edges the first-class
citizen of the data structure“
!
Alle Nachbarschaftsinformationen mit gleichem
Aufwand abfragbar
Anfangs- und Endpunkt
Benachbarte Fläche links/
rechts
Nachfolgende Kante links/
rechts
Vorausgehende Kante links/
rechts
Es gibt auch „kleinere“
Datenstrukturen,
!
!
z.B. Weglassen des Vorgängers
Wir können die Nachfolger im
Kreis ablaufen bis wir bei
Original sind (mehr Rechenzeit,
weniger Speicher)
M. Raspe
17 / 26
17
Winged-Edge Datenstruktur
!
Jede Kante wird nur einmal
abgespeichert
!
Die konkrete Speicherung ist
nicht eindeutig, führt aber
immer zum gleichen Ergebnis
A
b
0
d
a
1
c
e
B
edge
a
vertex vertex face face Vorg. Nachf. Vorg. Nachf.
1
2
links rechts links links rechts rechts
B
A
0
1
c
b
d
e
M. Raspe
18 / 26
18
D
Winged-Edge: Beispiel
3
a
e
0
A
vertex vertex face face Vorg. Nachf. Vorg. Nachf.
edge
1
2
links rechts links links rechts rechts
A
D
3
0
f
e
c
b
b
A
B
0
2
a
c
d
f
c
B
D
0
1
b
a
e
d
d
B
C
1
2
c
e
f
b
e
C
D
1
3
d
c
a
f
A
f
C
A
3
2
e
a
b
d
C
c
b
a
1
f
2
d
B
vertex edge
face
edge
a
0
a
B
d
1
c
!
Zusätzlich speichert man sich „Einstiegstabellen“ für
Eckpunkte und/oder Flächen
C
d
2
d
!
Die Tabellen enthalten eine angrenzende Kante
(nicht immer eindeutig)
D
e
3
a
M. Raspe
19 / 26
19
Beispiele
!
Verfolgen von Kanten
!
!
Z.B. gegen den Uhrzeigersinn
Kanten von 0 verfolgen, bis
Anfang wieder erreicht wird.
Nachbarflächen von Fläche 1
!
!
vertex vertex face face Vorg. Nachf. Vorg. Nachf.
1
2
links rechts links links rechts rechts
a
A
D
3
0
f
b
c
e
c
A
B
0
2
B
D
0
1
a
c
d
f
b
a
e
d
d
B
C
1
e
C
D
1
2
c
e
f
b
3
d
c
a
f
f
C
A
3
2
e
a
b
d
D
Zeichne Fläche 0
!
!
Entscheidung ob Nachfolger
rechts/links abhängig von
Kantenrichtung
edge
Kanten von 1 verfolgen, bis
Anfang wieder erreicht und
Nachbarflächen einsammeln
Welche Fläche grenzt an A ?
!
siehe Übung
3
a
A
e
0
b
2
b
f
c
1
C
d
B
vertex edge
face edge
A
a
0
B
d
1
c
C
d
2
d
D
e
3
a
M. Raspe
a
20 / 26
20
Zusammenfassung
!
Erzeugung von Meshes aus Punktemengen
!
!
!
!
Repräsentation von Dreiecksnetzen
!
!
!
!
Delaunay: liefert konvexe Hülle
Voronoi: duale Repräsentation
beide auch im 3D
Häufig werden Nachbarschaften gebraucht
Kompromiss zwischen Speicheraufwand und Laufzeit
Häufig Winged Edge (zunehmend auch Half Edge)
Tools für Geometrie: „Computational
Geometry Algorithms Library“
!
!
Open Source Projekt
www.cgal.org
M. Raspe
21 / 26
21
Nachtrag
22
Polygon: Flächenberechnung
Die Fläche im Polygon kann tatsächlich als Summe aller
(vorzeichenbehafteten) Dreiecksflächen berechnet werden
(also für konkave und konvexe Polygone gleich).
1 n −
→
F = |∑ →
r i+1 × −
r i|
2 i
M. Raspe
23 / 26
23
Parameterdarstellung
X
X
X
C
= A + s · ( B − A) + t · (C − A)
= (1 − s − t ) · A + s · B + t · C
= r·A+s·B+t·C
A
X
mit r = 1 − s − t
B
C
X
C
XA
A
B
X
C
A
B
B
Interpretation der Koordinaten als Gewichte/Gewichtungen im Dreieck
„Bi-Lineare Interpolation“ (Analog zu Gouraud-Shading)
M. Raspe
24 / 26
24
Baryzentrische Koordinaten
!
„Man betrachte ein masseloses
Dreieck mit einem beliebigen
Punkt P innerhalb der Dreiecksgrenzen. Die baryzentrischen
Koordinaten von P sind
diejenigen Gewichte mi, mit
denen die Eckpunkte versehen
werden müssen, damit ihr
Schwerpunkt P ist. Die Summe
aller Gewichte beträgt in diesem
Zusammenhang 1“;
(Bronstein & Semendjajew)
!
(bary…: (gr.) schwer…)
P
M. Raspe
25 / 26
25
Erweiterungen
!
!
Baryzentrische Koordinaten
funktionieren nur für konvexe
Dreiecke...
Zahlreiche Erweiterungen für:
!
!
!
!
MVC für korrekte PhongBeleuchtung (Hormann et al.)
konvexe Polygone (Wachspress coordinates,
Diskrete harmonische Funktionen usw.)
beliebige Polygone
sogar im 3D
Verformung von 3D-Objekten (Ju et al.)
Mean Value Coordinates (Floater et al.)
!
!
!
sehr flexibel und schnell
zahlreiche Anwendungen
sehr gut für GPU geeignet
MVC bei 2D-Transferfunktionen
in Cascada (MedVis2)
M. Raspe
26 / 26
26
Herunterladen