Im dreidimensionalen Raum

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

8. Termin Teil B: Wiederholung Begriffe Baum
Definition [1]: Sei S eine endliche Menge und sei p eine Abbildung von S in die positiven reellen Zahlen Für einen Teilmenge ES von S sei p definiert.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Polynomial Root Isolation
Schnelle Matrizenoperationen von Christian Büttner
Prof. Dr. W. Conen 15. November 2004
ADS Vorlesung Prof. Dr. W. Conen, FH Gelsenkirchen
WR + WS ZEIGEN Neues aus der Mathematik.
Körperberechnung Würfel Einheitswürfel Oberfläche Volumen Quader
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Klicke Dich mit der linken Maustaste durch das Übungsprogramm!
Algorithmentheorie 04 –Hashing
Bestimmung des Next-Arrays im KMP-Algorithmus
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Geometrisches Divide and Conquer
Kapitel 4 Geometrische Abbildungen
Lösung der Aufgabe 1: Die Erweiterung des Diagramms auf „Winged Egde“ besteht in zwei Beziehungen, nr-Kante und vl-Kante, zwischen der Klasse Kante. Jede.
Minimum Spanning Tree: MST
Folie 1 § 30 Erste Anwendungen (30.2) Rangberechnung: Zur Rangberechnung wird man häufig die elementaren Umformungen verwenden. (30.1) Cramersche Regel:
§9 Der affine Raum – Teil 2: Geraden
§9 Der affine Raum – Teil 2: Geraden
Punktbeschriftung mit vier Rechtecken gleicher Höhe (Anzahlmaximierung) Julia Löcherbach.
BSP Binary Space Partitioning
Tetraederzerlegung Ina Ehmann Tetraederzerlegung.
Diskrete Mathe 9 Vorlesung 9 SS 2001
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Effiziente Algorithmen
Effiziente Algorithmen
2. Die rekursive Datenstruktur Baum 2
Effiziente Algorithmen
Geoinformation II Vorlesung 4 SS 2001 Voronoi-Diagramme.
Konstruktion der Voronoi-Diagramme II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt WS 06/
Medizinische Visualisierung
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
LK-MA - Christopher Schlesiger
ENDLICHE KÖRPER RSA – VERFAHREN.
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Landkarten Landkarten sind Tesselationen mit folgenden Eigenschaften:
Analyse der Laufzeit von Algorithmen
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VIII Christian Schindelhauer
Geometric Representation
Minimal spannende Bäume
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
Delauny Triangulierung
Konvexe Hüllen (Convex Hulls)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung 4 4. Mai 2000 Voronoi-Diagramm.
DG3 - Angittern Gerades, quadratisches Prisma, Grundfläche parallel zu
 Präsentation transkript:

Im dreidimensionalen Raum Konvexe Hüllen Im dreidimensionalen Raum

Allg. Grundlagen: Polyeder Polyeder stellen eine durch Punkte, Kanten und Polygone definierte Oberfläche dar. Um ungeordnete Oberflächensammlungen von hinreichend abgeschlossenen Volumen unterscheiden zu können, führen wir die Bezeichnung ‚proper‘ ein. Ein Polyeder ist ‚proper‘ gdw. (1) für jedes Paar von Polygonen gilt, dass sie Disjunkt sind. Einen Punkt gemein haben. Zwei Punkte und die zugehörige Kante gemeinsam haben. (2) die Umgebung eines jedes Punktes flach auf eine Ebene projizierbar ist und eine den Punkt umschließende Scheibe ergibt. Hierbei dürfen sich Dreiecke nicht überlappen. (3) von jedem Punkt der Oberfläche jeder weitere über Flächen und Kanten erreichbar ist.

Polytope – konvexe Polyeder Die Konvexität eines Polyeders lässt sich durch die folgenden äquivalenten Sätze bestimmen. Für jedes Paar von Dreiecken, die eine Kante gemein haben, gilt, dass der innere Winkel zwischen den beiden Dreiecken nicht größer als π sein darf. Die Winkelsumme aller Kanten um einen Punkt darf nicht größer als 2* π sein. α <= π

Eulersche Formel Def.: Der Genus eines Polyeders gibt die Anzahl der ‚Tunnel‘ an, die durch das Polyeder hindurch führen. Ein einfaches Polyeder vom Genus 1 stellt der Torus dar. Für Polyeder vom Genus 0 stellte Leonard Euler 1758 die folgende Formel auf: Sei P die Anzahl aller Punkte, K die Anzahl aller Kanten und F die Anzahl aller Flächen eines Polyeders, so gilt: P – K + F = 2 Um Eulers Formel zu beweisen muss das Polyeder zunächst in einen planaren Graphen umgewandelt werden: Wird aus einem Polyeder eine Fläche f entfernt, so ist es möglich, das Polyeder so auf eine Ebene zu strecken, dass sich keine zwei Kanten schneiden, keine zwei Punkte zusammenfallen und kein Punkt innerhalb einer Fläche liegt. Auf dieser Ebene ist nun jede Fläche des Polyeders mit Ausnahme von f von jeweils n Kanten eingeschlossen. f bildet die umschließende Fläche. Das gestreckte Polyeder bildet damit nun einen 2-dimensionalen Graph.

Eulersche Formel Induktionsbeweis Induktionsanfang: Sei G ein Graph mit zwei Punkten und einer Kante. Die einzige Fläche ist die umschließende. D.h. P = 2, K = 1, F = 1 => P – K + F = 2 – 1 +1 = 2 Induktionsschritt: Sei Gn-1 ein Graph mit n-1 Kanten, pn-1 Punkten und fn-1 Flächen, für den Eulers Formel gelte. D.h. pn-1 – (n-1) + fn-1 = 2 Annahme: Eulers Formel gilt für Gn Für die neue Kante gelte die Einschränkung, dass sie an den bestehenden Graph anknüpfen muss. Daraus ergeben sich die folgenden beiden Möglichkeiten: Die Kante teilt eine bestehende Fläche, d.h. sie knüpft an bestehende Punkte an. Daraus folgt pn = pn-1 bzw. fn = fn-1 +1 => pn – n + fn = pn-1 – n + fn-1+1 = pn-1 – (n-1) + fn-1 = 2 Die Kante teilt keine bestehende Fläche, d.h. es muss genau ein weiterer Punkt hinzugefügt werden. Die Flächenanzahl hingegen bleibt gleich. Daraus folgt pn = pn-1 +1 bzw. fn = fn-1 => pn – n + fn = pn-1 +1 – n + fn-1 = pn-1 – (n-1) + fn-1 = 2 qed.

Bildung konvexer Hüllen aus Punktmengen Divide and Conquer Ermittlung der konvexen Hülle durch Aufteilung der Punktmenge und verschmelzen konvexer Hüllen Laufzeit: O (n log n) Incremental Algorithm Ausgehend von einem Tetraeder wird die Gesamthülle durch schrittweises hinzufügen der verbleibenden Punkte. Laufzeit: O (n²) bzw. in optimierter Form O (n log n)

Konvexe Hüllen Grundlagen 1: Das Objektnetz Um Objekte algorithmisch erfassen zu können wird eine strikte Struktur benötigt. Diese stellt nur eine mögliche solche Struktur dar. Vertex Position: x, y, z / p[3] 2 pro Kante Vertex 2 pro Kante Edge Edge Face 3 pro Fläche (3 pro Fläche) Face

Konvexe Hüllen Grundlagen 2: Listenstrukturen Für die Berechnung von Objekten sind Listen unumgänglich. Die genaue Definition solcher Listen ist allerdings eher zweitrangig solange die verwendete Liste folgende Charakteristiken aufweist: Standartoperationen: Hinzufügen, Löschen, Entfernen Pointerstabilität: Wird ein Element hinzugefügt oder entfernt beeinflusst dies nicht die Speicheradressen anderer Elemente. Zur Realisierung des Incremental Algorithm wird eine Liste für jeweils Punkte, Kanten und Flächen benötigt. Dabei muss sichergestellt werden, dass Flächen und Kanten auf Elemente der jeweiligen Punkt- bzw. Kanten-/Flächen-Listen zeigen. Das entstehende Pointernetz muss mit großer Sorgfalt aufgebaut und verwaltet werden. Es ist empfehlenswert, stabile vorgefertigte Listen zu verwenden.

Realisierung der Objekt-Listenstruktur Face Vertices Edges Faces Edge

Konvexe Hüllen Grundlagen 3: Flächenorientierung Um zugewandte von rückseitigen Oberflächen unterscheiden zu können, muss die Orientierung der Oberfläche aus Richtung des Blickpunktes bestimmt werden. Zur Bestimmung der Orientierung gibt es unter anderem die folgenden Möglichkeiten: Ermittlung des Volumen-Vorzeichens Berechnung der Orientierung über die Normale Blickpunkt

Bestimmung des Tetraeder-Volumens (Wegfall bei 0-Punkt-Volumenbestimmung) Die Formel liefert je nach Orientierung des Dreiecks abc gegenüber d ein positives bzw. negatives Resultat. Dadurch eignet sich die Formel obschon ihres immensen Rechenaufwandes zur Ermittlung der Dreiecksorientierung.

Bestimmung der Orientierung mittels Normale p3 p2 Blickrichtung (d) v1 Normale (n) Leicht ersichtlich ist der anfallende Aufwand erheblich geringer. Auch ist der Wertebereich um eine Potenz geringer. p0 v0 p1

Konvexe Hüllen Grundlagen 4: Inside-check Um zu bestimmen, ob ein gegebener Punkt innerhalb oder außerhalb eines konvexen Körpers liegt, muss die Orientierung jeder Fläche gegenüber dem gegebenen Punkt bestimmt werden. Ein Punkt P liegt innerhalb eines konvexen Körpers K, gdw. für alle Flächen F von K gilt, dass P sich auf der abgewandten Seite von F befindet. Äquivalent dazu ist die Aussage, dass P in K liegt, gdw. für alle F von K die gleiche Orientierung bezüglich P vorliegt. Dies gilt für 2- und 3-dimensionale konvexe Körper gleichermaßen. Der schwarze Punkt liegt innerhalb des Körpers, da alle Seiten abgewandt sind. Der weiße hingegen ‚sieht‘ eine Oberfläche und liegt damit außerhalb des Körpers

Divide and Conquer Ähnlich wie im 2-dimensionalen Raum kann die kleinste konvexe Hülle über Rekursion in O(n log(n)) bestimmt werden. Die Menge der Punkte wird entlang einer Koordinaten-Achse in zwei Gruppen unterteilt und deren konvexe Hüllen in folgender Weise zu einer verschmolzen. Zunächst muss eine untere Tangentenachse t gefunden werden, die je einen Punkt beider Objekte schneidet. Alle Punkte beider Objekte müssen sich auf der gleichen Seite einer durch t und Z gebildeten Ebene befinden. Um diese Achse muss nun ein Winkelextrem-Punkt gefunden werden, der mit den bereits gefundenen zwei Punkten ein Dreieck der neuen Konvexen Hülle bildet. Von den zwei weiteren Kanten des gebildeten Dreiecks wird die ausgesucht, wie sich zwischen den beiden Volumen erstreckt und ausgehend von dieser Schritt 2) wiederholt, bis die gefundene Achse der ursprünglichen entspricht. Als letztes müssen alle Dreiecke gelöscht werden, die innerhalb der neuen konvexen Hülle liegen.

Divide and Conquer Schritt1: Basiskantenbestimmung Zunächst werden von beiden Objekten die Punkt mit der je niedrigsten Y-Koordinate ausgesucht und auf ihnen eine Ebene entlang der Achse PQ und der Koordinatenachsen Z errichtet. Zur Orientierungshilfe wird auf ihr das Dreieck PQR konstruiert. B A Für jeden Nachbar von Q wird eine Orientierungsprüfung nach PQR ausgeführt. Ist das Dreieck dem Punkt zugewandt, wird dies der neue Punkt Q. PQR rotiert dabei um die Z-Achse. Q Findet sich kein Extrempunkt werden A und B vertauscht und der Prozess wird über einem redefinierten Q fortgeführt. Der Prozess ist abgeschlossen, wenn sich P und Q nicht mehr ändern. Der Verfahren arbeitet P R Z Y

Divide and Conquer Schritt2: Gift-Wrapping Zur Bestimmung der nächsten Oberfläche müssen ausschließlich die Umgebungen von P und Q betrachtet werden. Für jeden der beiden Kegel wird ein lokaler Extrempunkt entlang der P – Q –Achse mittels Orientierungstests bestimmt. αi Q P Der ermittelte globale Extrempunkt bildet mit P und Q die nächste Oberfläche, die neu entstandene Kante die Krümmungsachse. Zusätzlich wird auch der nichtglobale Extrempunkt α gespeichert. Lemma: Wenn βi den globalen Extrempunkt bildet, dann liegt der nächste lokale Extrempunkt αi im Gegenuhrzeigersinn um P ausgehend vom letzten lokalen Extrempunkt αi-1.

Divide and Conquer Schritt3: Aufräumen1 Der Gift-Wrapping – Algorithmus beendet in dem Augenblick, wo die neu definierte Krümmungskante der Anfangskante entsprich. B A Der Algorithmus liefert zwar in eindeutiger Weise die Schattenkanten zwischen denen die hinzugefügten Flächen definiert wurden, nicht jedoch die Oberflächen und/oder Punkte, die nun innerhalb der konvexen Hülle liegen. Eine mögliche Lösung stellt eine Art von Floodfill-Algorithmus dar.

Divide and Conquer Schritt3: Aufräumen2 Beginnend an einer identifizierten Kante wird das erste verdeckte Dreieck markiert. Ausgehend von diesem springt der Algorithmus zu dessen zwei Nachbardreiecken und markiert dabei sowohl die Kanten, über die er läuft, als auch die Dreiecke in die er springt. Dabei darf der Algorithmus weder über Randkanten noch über bereits markierte Kanten bzw. in markierte Dreiecke springen. Erst wenn keine weiteren Dreiecke oder Kanten markiert werden konnte können die markierten Elemente gelöscht werden.

Incremental Algorithm Ausgehend von einem bestehenden konvexen Körper wird durch hinzufügen eines einzigen Punktes ein neuer größerer konvexer Körper gebildet. Ausgehend vom kleinsten Körper, dem Tetraeder, werden in jedem Schritt innere Punkte, Kanten und Oberflächen gelöscht und/oder neue hinzugefügt. Schritt 1) Tetraeder-Bildung: Ausgehend von einem beliebig gewählten Punkt werden zwei weitere linear unabhängige Punkte gesucht um das Basisdreieck zu bilden. Ein vierter Punkt wird so gewählt, dass er außerhalb der aufgespannten Ebene liegt und mit den drei vorherigen Punkten eine Raum aufspannt. Die korrekte Orientierung kann mit Hilfe von Orientierungstests bestimmt werden. Das erste Dreieck muss vom vierten Punkt abgewandt sein.

Hinzufügen von Punkten Schritt 1: Zugewandte Flächen identifizieren Durch einfache Orientierungsüberprüfung aller Flächen gegenüber P können zugewandet Flächen in linearer Zeit identifiziert werden.

Hinzufügen von Punkten Schritt 2: Kanten identifizieren Wie teilen die Kanten der Hülle in drei Kategorien ein. Abgewandte Kanten, die an zwei abgewandte Flächen grenzen. Zugewandte Kanten, die an zwei zugewandte Flächen grenzen und Tangenten-Kanten, die an jeweils eine zugewandte und eine abgewandte Fläche grenzen.

Hinzufügen von Punkten Schritt 3: Elemente löschen Nun werden alle zugewandten Kanten und Flächen gelöscht. In der verwendeten Datenstruktur sollten jedoch vor dem Löschen Verweise offener Kanten auf zu löschenden Elemente korrigiert bzw. gegebenenfalls auf NULL gesetzt werden. Zu bemerken ist noch, dass die nun offenen Kanten einen geschlossenen Kreis bilden.

Hinzufügen von Punkten Schritt 4: neue Kanten und Flächen bilden An jeder offenen Kante wird nun eine neue Fläche gebildet. Das neue Dreieck wird durch die zwei Punkte der Kante und den neuen Punkt P gebildet. Die korrekte Orientierung kann an der gegenüberliegende Fläche der Kante abgelesen werden. Zum schnelleren Bilden der neuen Kanten kann es sinnvoll sein, die offenen Kanten zu verketten.

Randomized Incremental Algorithm Wie bereits gesagt benötigt der Incremental Algorithm eine O(n²)-Laufzeit. Sind jedoch zu Anfang Anzahl und Positionen aller Punkte bekannt, so kann eine modifizierte Version des Incremental Algorithm Hüllen in O (n log n) (erwartete Zeit) bilden. Zur Realisierung müssen zu Beginn weitere Informationen in die Datenstruktur eingefügt werden: 1.) Für jeden Vertex wird eine „Konflikt“ - Liste aller Flächen angelegt, die für ihn sichtbar sind. Ausgehend vom ersten minimalen Tetraeder sind zu diesem Zeitpunkt für jeden noch hinzuzufügenden Vertex 1 bis 3 Flächen sichtbar. Vertices, die keine Flächen sehen, liegen innerhalb der Hülle und können gelöscht werden. 2.) Für jede Fläche wird eine Konfliktliste aller Vertices angelegt, die diese ‚sehen‘ können. Jede Fläche teilt den Vertex-Raum in zwei Hemisphären, von denen nur eine relevant ist. Nach jeder Iteration müssen diese Listen aktualisiert werden. Durch die Teilung wird der Algorithmus jedoch für bekannte Punkte erheblich schneller. In die Konfliktliste der grünen Fläche werden alle weißen Punkte eingetragen. Umgekehrt ist die grüne Fläche Element der Konfliktliste jedes weißen Punktes.

Randomized Incremental Algorithm Hinzufügen von Punkten I 1.) Bestimmung der Schattenkanten: Zunächst werden alle sichtbaren Flächen des neuen Punktes p durchlaufen und gleichzeitig deren Kanten markiert. Kanten, die nur an eine sichtbare Fläche grenzen, bilden den Schattenpfad von p. 2.) Bildung der neuen Flächen: Ausgehend vom identifizierten Schattenpfad entsteht für jede Kante des Pfades eine neue Fläche. Die Kollisionsliste jeder neuen Fläche muss nur über den Punkten der Kollisionslisten der, an die jeweilige Schattenkante grenzenden, Flächen gebildet werden. k Beim Hinzufügen von f über p und k kann die anzulegende Kollisionsliste für f nur Punkte beinhalten, die entweder von f0 oder f1 sichtbar sind. f f0 p f1

Randomized Incremental Algorithm Hinzufügen von Punkten II 3.) Bei der Aktualisierung der Punkt-Kollisionslisten müssen ebenfalls nur die Punkte berücksichtigt werden, die von den Schattenkanten gesehen werden (sichtbar für eine der an die Kanten angrenzenden Flächen sind). Punkte, die von den zu löschenden Flächen, nicht jedoch von den Schattenkanten, gesehen werden, liegen zwingend innerhalb der neuen konvexen Hülle und müssen gelöscht werden. Die obere Schranke O (n log n) stellt die erwartete maximale Laufzeit dar. Diese basiert auf der Einschränkung der Problemzone auf einen angenommen kleinen Anteil aller noch hinzuzufügenden Punkte.

Quellen: „Computational Geometry in C“ – Joseph O‘Rourke Verfasst von Stefan Elsen 16.2.2005