doc

Werbung
Algorithmische Geometrie
[Motivation
Mitschrift 2003-05-13, 2003-05-15
Triangulierung von Polygonen
(Achtung: kein Vorlesungsstoff)]
Triangulierung von Polygonen ist ein Basisproblem in der Algorithmischen Geometrie. Z.B ist häufig der erste
Schritt in der Manipulation von komplexen geometrischen Objekten sie aufzuteilen in einfachere Objekte.
Und Dreiecke sind die einfachsten geometrischen Objekten in zwei Dimensionen. Drei Punkte reichen auch
aus um eine Fläche zu definieren. Eine interresante Anwendung von Triangulierungen taucht auf, wenn man
Flächen oder Funktionen interpolieren möchte. Angenommen wir haben an ein paar Stellen (Punkten in zwei
Dimensionen) die Höhe eines Berges gemessen:
Eine Punktrepräsentation
eines Berges.
Bild von [3]
Wir wollen jetzt für einen beliebigen zweidimensionalen Punkt p auf der „Erdoberfläche“ wissen, welche
Höhe er hat.
Dazu müssen wir die gemessene Punkte auf die Fläche projizieren (die z-koordinate wegschmeissen), und
triangulieren. Wir testen dann in welchem der Dreiecke p enthalten ist, und können dann die Höhe von p
anhand der drei Punkte des Dreiecks interpolieren ( [1],[2] ).
Wir können diese Triangulierung auch benutzen um die Oberfläche des Berges zu zeichnen.
Eine Triangulierung von der Punktrepräsentation[3]
Ketill Gunnarsson, Johannes Hofmann
Die durch die Dreiecke definierte Oberfläche[3]
Seite 1 von 12
Algorithmische Geometrie
Mitschrift 2003-05-13, 2003-05-15
[Das Museumsproblem]
Ein weiteres Triangulierungsproblem ist das sogenannte Museumsproblem ( Art Gallery Problem ). Ein
Museum soll mit Kameras überwacht werden. Wir wollen wissen, wie viele Kameras wir benötigen und wo
die Kameras platziert werden sollen (Die Kameras werden auch Wächter genannt).
Ein Museum mit Kameras [4]
Überdeckung einer Kamera als Punktlichtquelle [4]
Definitionen:
- Der Plan des Museums ist ein einfaches Polygon P mit n Ecken
- Eine Kamera ist ein Punkt k (eine Punktlichtquelle)
- Eine Kamera sieht einen Punkt p genau dann, wenn die Strecke kp ganz
im Inneren von P liegt.
Also:
Wie viele Kameras müssen in P platziert werden, damit jeder Punkt im Inneren von P gesehen wird?
Idee:
Zerlege P in Stücke, die jeweils mit einer Kamera bewacht werden können, entweder:
- beliebige konvexe Stücke
- Dreiecke
Ein konvexes Polygon
(und damit auch ein Dreieck)
kann immer mit einer Kamera
bewacht werden.
(Bild von [4] ).
Leider ist das Problem, die kleinste Anzahl von Kameras zu einem gegebenen Polygon P zu finden, NPschwer. Wir fragen uns deswegen, wie viele Kameras immer ausreichen, um ein Polygon mit n Ecken zu
bewachen.
Eine einfache Lösung:
- Das Polygon triangulieren, und in jedes Dreieck eine Kamera stellen (s. Kapitel über Trianglulierung).
Ergibt n-2 Dreiecke -> n-2 Kameras reichen aus (siehe unten).
Eine bessere Lösung:
- Wähle eine Eckenmenge W aus P, s.d. jedes Dreieck mindestens eine Ecke in W hat.
- Platziere Kameras auf diese Ecken.
Aus 3-Färbbarkeit von Triangulierungen folgt (Satz):
Satz: Jedes einfache Polygon P mit n Ecken kann mit n/3 Kameras bewacht werden
Beweis:
- Finde eine 3-Färbung einer Triangulierung von P
- Wähle die kleinste Farbklasse als Menge der Kameras
- Die kleinste Farbklasse hat höchstens n/3 Elemente
Ketill Gunnarsson, Johannes Hofmann
Seite 2 von 12
Algorithmische Geometrie
Mitschrift 2003-05-13, 2003-05-15
Satz: Es gibt Polygone mit n Ecken, für die man n/3 Kameras benötigt.
Beweis:
[ Triangulierungen – Definition und Existenz ]
Definition:
-
Eine Diagonale eines einfachen Polygons P ist eine offene Strecke zwischen zwei Ecken von P, die
ganz Im Inneren von P liegt.
Definition:
-
Eine Triangulierung eines einfachen Polygons P ist eine Zerlegung von P in Dreiecke, welche von
einer maximalen Menge von paarweise disjunkten Diagonalen induziert wird.
Eine maximale Menge von disjunkten Diagonalen impliziert, dass keine Ecken auf dem Rand eines Dreiecks
liegen können.
Zu einem Polygon gibt es i. allg. Verschiedene Triangulierungen !
Zwei verschiedene
Triangulierungen eines Polygons
Fragen über Triangulierungen:
- Gibt es zu jedem einfachen Polygon eine Triangulierung?
- Wie viele Dreiecke braucht man, um ein Polygon zu triangulieren?
Existenz von Triangulierungen:
Satz: Zu jedem einfachen Polygon P gibt es eine Triangulierung.
Beweis:
Zeigen durch Induktion über n, dass jedes einfache Polygon P trianguliert werden kann.
I.A.: (n=3): Dann ist P ein Dreieck.
I.S.: Sei P ein einfaches Polygon mit n Ecken. Wir zeigen zunächst, dass es in P eine Diagonale gibt.
Sei v die lexikographisch kleinste Ecke von P und u sowie w die zu v adjazenten Ecken von P.
Fall 1.)
Die Strecke uw liegt in P uw ist eine Diagonale
Ketill Gunnarsson, Johannes Hofmann
Seite 3 von 12
Algorithmische Geometrie
Fall 2.)
Mitschrift 2003-05-13, 2003-05-15
Die Strecke uw schneidet den Rand von P uw ist keine Diagonale. Dann gibt es mindestens eine
Ecke von P auf uw oder in dem Dreieck uvw. Sei v‘ die Ecke von P in dem Dreieck uvw die am
weitesten von der Strecke uw entfernt ist. Die Strecke vv‘ schneidet keine Kante von P; sonst hätte
diese einen Endpunkt innerhalb von uvw der weiter von uw entfernt wäre als v‘ vv‘ ist eine
Diagonale.
In P gibt es also eine Diagonale. Diese zerlegt P in zwei Polygone L und R mit l bzw. r Ecken, wo l<n und
r<n. Nach I.V. kann jedes einfache Polygon mit n‘<n Ecken trianguliert werden, also ibs. L und R. Damit
kann auch P trianguliert werden.
q.e.d.
Grösse von Triangulierungen:
Satz: Jede Triangulierung eines einfachen Polygons mit n Ecken besteht aus n-2 Dreiecken.

Beweis:
Zeigen durch Induktion über n, dass jede Triangulierung eines einfachen Polygons mit n Ecken aus n-2
Dreiecken besteht.
I.A.: (n=3) Dann ist P ein Dreieck, 1=3-2
I.S. : Sei P ein einfaches Polygon mit n Ecken und T eine Triangulierung von P. Sei d eine Diagonale von P
aus T, die P in zwei Polygone L und R mit l bzw. r Ecken zerlegt, wobei l<n und r<n. Die Ecken von d
gehören zu L und R, also n+2=l+r. Nach I.V. hat jede Triangulierung von L bzw. R l-2 bzw. r-2 Dreiecke.
Damit hat die T gerade (l-2)+(r-2)=n-2 Dreiecke.
Färbung von Graphen:
Definition:
-
Eine Färbung eines Graphen G=(V,E) ist eine Funktion, die jedem Knoten aus V eine Farbe
zuordnet, mit der Eigenschaft, dass die Endpunkte jeder Kante aus E dabei unterschiedliche Farben
haben.
Definition:
-
Sei k > 0 eine natürliche Zahl. Eine k-Färbung eines Graphen G=(V,E) ist eine Färbung von G mit
höchstens k Farben.
Ketill Gunnarsson, Johannes Hofmann
Seite 4 von 12
Algorithmische Geometrie
Mitschrift 2003-05-13, 2003-05-15
3-Färbbarkeit von Triangulierungen:
Satz: Der Graph einer Triangulierung T eines einfachen Polygons P ist 3-färbbar.
Beweis:
Durch Induktion über n.
I.A. : (n=3) Dann ist P ein Dreieck und damit 3-färbbar.
I.S. : Sei P ein einfaches Polygon mit n Ecken und T eine Triangulierung von P. Sei d=(a,b) eine Diagonale
aus T.
d zerlegt T in zwei Triangulierungen L und R einfacher Polygone mit je < n Ecken.
Nach i.V. sind L und R 3-färbbar.
Die Ecken a und b von d gehören zu L und R falls diese Ecken unter den Färbungen von L und R
verschiedene Farben erhalten haben, müssen die Farben von L entsprechend permutiert werden.
Ketill Gunnarsson, Johannes Hofmann
Seite 5 von 12
Algorithmische Geometrie
Mitschrift 2003-05-13, 2003-05-15
Monotone Polygone
Eine Methode zum Triangulieren von Polygonen ist, die Polygone erstmal in monotone Polygone zu zerlegen
und die monotone Polygone einzeln zu triangulieren.
Definition:
-
Ein Polygon P heisst monoton bezüglich einer Geraden l, wenn der Durchschnitt des Inneren von P
mit jeder Geraden die parallel zu l ist, zusammenhängend ist.
Definition:
-
Ein Polygon P heisst y-monoton, wenn es monoton bezüglich der x-Achse ist.
Definition:
-
P heisst streng y-monoton, wenn es in P keine horizontale Kante gibt.
Eigenschaften y-monotoner Polygone:
Wenn ein Polygon P monoton bezüglich einer Geraden l ist, dann ist der Schnitt des Inneren von P mit
jeder Geraden die parallel zu l ist, entweder:
- leer
- Ein Punkt
- Eine Strecke
Wenn man sich auf der linken (rechten) Seite eines y-monotonen Polygons P vom höchsten zum tiefsten
Eckpunkt von P bewegt, so bewegt man sich immer horizontal oder nach unten (aber nie nach oben). Wenn
man sich auf einer Seite eines streng y-monotonen Polygos vom höchsten zum tiefsten Eckpunkt bewegt,
so bewegt man sich immer nach unten.
Streng y-Monoton: Immer nach unten.
Ketill Gunnarsson, Johannes Hofmann
Seite 6 von 12
Algorithmische Geometrie
Mitschrift 2003-05-13, 2003-05-15
Zerlegung in y-monotone Polygone:
Wir überstreichen ein Polygon P mit einer horizontalen Gerade und betrachten den Schnitt der Geraden l mit
dem Inneren von P. Dieser Durchschnitt ist eine Menge von Intervallen auf l .
Bei den
-
-
Ecken von P können Intervalle:
neue entstehen (Start-Ecken)
verschwinden (End-Ecken)
verschmelzen (Merge-Ecken)
in zwei Teile zerfallen ( Split-Ecken)
(kombinatorisch) unverändert bleiben (reguläre Ecken)
Klassifikation von Ecken:
Eine Ecke p von P ist eine:
- Start-Ecke gdw. die Nachbarn liegen unterhalb von p, und der innere Winkel bei p ist < 180
- End-Ecke gdw. die Nachbarn liegen oberhalb von p, und der innere Winkel bei p ist < 180
- Merge-Ecke gdw. die Nachbarn liegen oberhalb von p, und der innere Winkel bei p ist > 180
- Split-Ecke gdw. die Nachbarn liegen unterhalb von p, und der innere Winkel bei p ist > 180
- Alle anderen Ecken sind reguläre Ecken
Charakterisierung y-monotoner Polygone (Satz):
Satz: Ein einfaches Polygon P ist y-monoton gdw. es keine Split- und keine Merge-Ecken hat.
Beweis:
Wir zeigen: P ist nicht y-monoton es gibt eine Split- oder Merge-Ecke.
Sei also P nicht y-monoton es gibt eine horizontale Gerade l deren Schnitt mit P aus mindestens zwei
Intervallen besteht. Betrachte das linkeste Intervall pq mit linkem Endpunkt p und rechtem Endpunkt q.
Durchlaufe von q aus den Rand von P so, dass P links liegt.
Sei r der erste Punkt, der wieder auf der Geraden l liegt
Fall 1: r p
Die höchste Ecke der wir auf dem Weg von q nach r
begegnet sind, muss eine Split- Ecke gewesen sein
Fall 2: r = p
Durchlaufe von q aus den Rand von P so, dass P rechts liegt;
sei r‘ der erste Punkt, der wieder auf der Geraden l liegt.
r‘ p da ansonsten P nur zwei Schnittpunkte mit l hätte.
Die tiefste Ecke der wir auf dem Weg von q nach r‘ begegnet sind,
muss somit eine Merge-Ecke gewesen sein.
Aus der definition von Split- oder Merge-Ecken folgt:
Es gibt eine Split- oder Merge-Ecke  P ist nicht y-monoton.
Ketill Gunnarsson, Johannes Hofmann
Seite 7 von 12
Algorithmische Geometrie
Mitschrift 2003-05-13, 2003-05-15
DCEL- Doubly Connected Edge List
- Eine Datenstruktur für ebene Unterteilungen -
Anwendungsbeispiel:
DCEL ist z.B geignet um Überlappungen von Karten zu berechnen. Man könnte sich vorstellen eine Karte mit
Bevölkerungsdichte-Informationen und eine Karte mit Storchpopulationsinformationen zu überlappen, um zu
überprüfen, wie sich die zwei Grössen zu einander verhalten. In der DCEL werden in diesem Fall die
Unterteilung der Karte in verschiedene Unterregionen gespeichtert.
DCEL Struktur:
Die DCEL-Struktur besteht aus einer Sammlung von drei verschiedenen Arten von Einträgen:
(Hier nur eine Übersicht, genauere Erläuterung folgt später.)
- Knoten:
Jeder Knoten speichert seine Koordinate und einen Verweis auf seine inzidente Halbkante. Diese Kante ist
eine beliebige Halbkante die den Knoten als Ursprung hat. Zusätzlich können noch benötigte
Attributinformationen gepeichert werden (z.B Farbe,...).
- Facetten:
Jede Facette speichtert einen Verweis auf eine Halbkante ihrer äusseren Begrenzung, sowie eine Liste von
Verweisen auf Halbkanten von inneren Löchern(eine Halbkante pro Loch).
- Halbkanten:
Jede Halbkante speichert ihren Ursprungsknoten, ihre Zwillingshalbkante, ihre inzidente Facette sowie
Verweise auf ihre Vorgänger-und Nachfolgerhalbkante)
Unterstüzte Operationen:
- inzidente Kanten einer Facette zyklisch durchlaufen
- von einer Facette f über eine Kante e von f zur zweiten, zu e adjazenten Facette gehen
- inzidente Kanten einer Ecke zyklisch durchlaufen
- Einfügen von Ecken auf (= unterteilen von) Kanten
- Einfügen von Kanten zwischen Ecken (= Spalten von Facetten)
Platzbedarf O(Komplexität der ebenen Unterteilung).
Bemerkung: Isolierte Ecken werden von dieser Datenstruktur nicht unterstützt. Man kann dies jedoch
unterstützen, indem man zu jeder isolierten Ecke eine Kante zu sich selbst hinzufügt.
Darstellung von Kanten in der DCEL
- die Kante e mit den Ecken p,q wird dargestellt durch die beiden (orientierten) Halbkanten
h(e)=(p,q) und h‘(e)=(q,p)
- h‘ heisst der Zwilling von h (und umgekehrt)
- p heisst der Anfang von h, q heisst das Ende von h
- falls g=(r,p) und h=(p,q), so heissen g und h aufeinanderfolgend (i.allg. gibt es mehrere Halbkanten
die auf g folgen)
Ketill Gunnarsson, Johannes Hofmann
Seite 8 von 12
Algorithmische Geometrie
Mitschrift 2003-05-13, 2003-05-15
-
die Facette F „links“ von h heisst die Facette von h
-
der Eintrag für eine Halbkante h=(p,q) speichert
einen Zeiger AnfangsEcke(h) auf den Eintrag für
die Ecke p
einen Zeiger ZwillingsKante(h) auf den Eintrag für die Halbkante h‘=(q,p)
einen Zeiger Facette(h) auf den Eintrag für die Facette von h
einen Zeiger NachfolgerKante(h) auf den Eintrag für den Nachfolger von h
einen Zeiger VorgängerKante(h) auf den Eintrag für den Vorgänger von h
-
Darstellung von Facetten in der DCEL
- eine Facette F wird durch eine Menge von Randfolgen dargestellt
- eine Randfolge R von F ist eine maximale zyklische Folge von paarweise verschiedenen, jeweils
aufeinanderfolgenden, Halbkanten von F
- die Halbkanten einer Randfolge R durchlaufen den Rand der zugehörenden Facette
- geschieht dies gegen den Uhrzeigersinn, so heisst R äusserer Rand, ansonsten innerer Rand von F
- „Rand“ := Randfolge
-
-
jede beschränkte Facette hat genau einen äusseren Rand
die Anzahl der inneren Ränder von F entspricht der Anzahl der Löcher von F (im
graphentheoretischen Sinn)
jede Halbkante h gehört zu genau einem Rand
die Ränder verschiedener Facetten sind disjunkt
die Ränder einer Facette sind disjunkt
wenn F die Facette von h ist, so gehört h zu einer der Randfolgen von F
jede Halbkante hat somit einen eindeutig bestimmten Vorgänger und Nachfolger
Ketill Gunnarsson, Johannes Hofmann
Seite 9 von 12
Algorithmische Geometrie
-
Mitschrift 2003-05-13, 2003-05-15
der Eintrag für eine Facette f speichert
einen Zeiger AussenKante(f) auf den Eintrag einer beliebigen Halbkante auf dem äusseren Rand
von f
eine Liste InnenKanten(f), die für jeden inneren Rand R von f einen Zeiger auf den Eintrag
einer beliebigen Halbkante von R speichert
Darstellung von Ecken (Knoten):
- der Eintrag für eine Ecke p=(x,y) speichert
- die Koordinaten (x,y) von p
- einen Zeiger InzidenteHalbkante(p) auf den Eintrag einer beliebigen, zu p inzidenten
Halbkante, deren Anfang p ist
Ketill Gunnarsson, Johannes Hofmann
Seite 10 von 12
Algorithmische Geometrie
Mitschrift 2003-05-13, 2003-05-15
Operationen:
inzidente Halbkanten einer Facette f zyklisch durchlaufen
-
-
zyklisches Durchlaufen der Halbkantenliste ausgehend von AussenKante(f) über
NachfolgerKante() (Durchlauf des äusseren Randes von f gegen den Uhrzeigersinn)
für jeden Zeiger h auf eine Halbkante in InnenKanten(f) zyklisches Durchlaufen der
Halbkantenliste ausgehend von h über NachfolgerKante() (Durchlauf der inneren Ränder
von f im Uhrzeigersinn)
O(1) Zeit pro Kante
von einer Facette f über eine Halbkante h von f zur gegenüberliegenden (= zu h‘ adjazenten) Facette f‘
gehen
-
Facette(ZwillingsKante(h)) zeigt auf den Eintrag für die Facette f‘
O(1) Zeit pro Operation
inzidente Kanten einer Ecke p zyklisch durchlaufen
-
starte bei InzidenteHalbkante(p)
-
der Nachfolger einer Halbkante h in der
zyklischen Ordnung um p ist
NachfolgerKante(ZwillingsKante(h))
Durchlauf erfolgt im Uhrzeigersinn
O(1) Zeit pro Kante
-
Einfügen einer Ecke r auf einer Halkante h=(p,q)
-
erzeuge eine neue Halbkante k und ihren Zwilling k‘ (als Kopie von h bzw. h‘)
setze InzidenteHalbkante(q) auf k‘
setze InzidenteHalbkante(r) auf k
setze AnfangsEcke(k) auf r
setze AnfangsEcke(h‘) auf r
setze NachfolgerKante(h) auf k
setze VorgängerKante(h‘) auf k‘
setze VorgängerKante(k) auf h
setze NachfolgerKante(k‘) auf h‘
O(1) Zeit pro Operation
Ketill Gunnarsson, Johannes Hofmann
Seite 11 von 12
Algorithmische Geometrie
Mitschrift 2003-05-13, 2003-05-15
Einfügen einer Kante zwischen zwei Ecken p,q einer Facette f ohne innere Ränder
-
Verzeigerung der zu p,q inzidenten Halbkanten von f anpassen*
Facette()-Zeiger der Halbkanten auf der kleineren Facette anpassen
O(Komplexität der kleineren Facette) Zeit
p
q
*Wenn von p bzw. q viele HalbKanten ausgehen, können wir nicht über den zu p bzw. q inzidenten Kante
einen eindeutigen Nachfolger-und Vorgänger von unsere eingefügte Strecke holen. Eine Lösung ist dass man
davon ausgeht das man schon beim einfügen die richtige Nachfolger-und Vorgängerkanten übergeben
bekommt.
p
q
Eine von diesen Halbkanten ist die
zu q inzidente Halbkante. Ist der
unsere richtige Nachfolger bzw.
Vorgängerkante?
[1] The Algorithm Design Manual by Steven S. Skiena, Steve SkienaTelos Pr; Book and CD-ROM edition
(November 14, 1997), ISBN: 0387948600.
[2] http://www.cs.sunysb.edu/~algorith/files/triangulations.shtml , Computer Science Department at Stony
Brook University. Link besucht am 2003-05-16.
[3] http://herakles.zcu.cz/~miva/research/crust.html, Ivana Koligerová ([email protected]) Michal
Varnuška ([email protected]), Centre of Computer Graphics and Data Visualisation, Department of
Computer Science and Engineering, University of West Bohemia, Plzen, Czech Republic. Link besucht am
2003-05-16.
[4] Computational Geomety, Mark de Berg, Marc von Kreveld, Mark Overmars, Otfried Schwarzkopf,
ISBN 3 –540-65620-0.
Ketill Gunnarsson, Johannes Hofmann
Seite 12 von 12
Herunterladen