1 / 49

Seminar Computational Geometry Convex Hull

Seminar Computational Geometry Convex Hull. Christian Stein. Gliederung. 1. Definition 2. Motivation 3. Algorithmische Ansätze 4. Incremental-Algorithmus mit Konfliktgraph 5. Laufzeitanalyse. 1. Definition. Betrachtung : Punktemenge repräsentiert durch umgebendes Polygon

hamal
Télécharger la présentation

Seminar Computational Geometry Convex Hull

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Seminar Computational GeometryConvex Hull Christian Stein

  2. Gliederung • 1. Definition • 2. Motivation • 3. Algorithmische Ansätze • 4. Incremental-Algorithmus mit Konfliktgraph • 5. Laufzeitanalyse

  3. 1. Definition • Betrachtung : • Punktemenge repräsentiert durch umgebendes Polygon • Rand des Polygons undurchsichtig • Für alle Punkte p, q innerhalb des Polygons : • p ist von q aus sichtbar, wenn die minimale Verbindungsstrecke zwischen p und q ganz im Polygon enthalten ist.

  4. 1. Definition • Polygon ist : • sternförmig – wenn von einem Punkte p alle anderen sichtbar sind • Konvex – wenn von jedem Punkt p alle anderen sichtbar sind. • (a) konvex - (b) sternförmig

  5. 1. Definition • Übertragen auf Punktmenge : • Konvexes Polygon wird erzeugt durch konvexe Hülle einer Menge M • Konvexe Hülle von M ist die kleinste konvexe Menge die M umschließt • Leicht vorstellbar : • Punkte sind Nägel auf einer Ebene • -> Konvexe Hülle = Nägel umspannendes Gummiband

  6. 1. Definition • Problem Konvexe Hülle • Eingabe : endliche Menge M von Punkten in der Ebene • Ausgabe : diejenigen Punkte von M, die den Rand des konvexen Hüllpolygons von M definieren, in umlaufender Reihenfolge. (2D)

  7. 2. Motivation • Anwendung Konvexer Hüllen : • Kollisionserkennung • Kollision konvexer Hüllen schneller zu berechnen als Kollision der Objekte, die sie umschließen • Kollidieren die Hüllen nicht, kollidieren auch die Objekte nicht

  8. 2. Motivation • Anwendung konvexer Hüllen: • Objektapproximation • Innerhalb/Außerhalb-Lageentscheidung • näherungsweise Volumenberechnung • Allgemein: • bessere Objektapproximation möglich als beispielsweise durch „Bounding-Spheres“ oder „Bounding-Boxes“ • Berechnungen dagegen schwieriger

  9. 2. Motivation • Rendering : • Raytracer : Lichtstrahl-Objekt-Schnitt kann einfacher ausgeschlossen werden. • konvexe Hülle nicht sichtbar -> Objekt nicht sichtbar => Aufwändiges Rendern des komplexen Objektes entfällt

  10. 3. Algorithmische Ansätze • 2D : • Viele simple Ansätze • Gute Laufzeiten • 3D : • Weiterentwicklung der 2D-Lösungen • Laufzeiten schwer zu verbessern

  11. 3. Algorithmische Ansätze • 2D : • Slow-Convex-Hull • Graham-Scan-Algorithmus • Javis-March-Algorithmus • 3D : • Gift-wrapping • Divide-and-Conquer-Algorithmus • Incremental-Algorithmus (Punkt 4 und 5)

  12. 3. Algorithmische Ansätze • Slow-Convex-Hull • Algorithmus : 1. für alle geordneten Paare p, q aus M mit p != q 2. überprüfe ob alle Punkte r != p & != q rechts der Kante p nach q liegen 3. falls „wahr“ -> füge die Kante p-q zur Kantenmenge CH hinzu 4. Kantenmenge CH = Kanten der Konvexen Hülle – Punkte lassen sich in gewünschter Reihenfolge heraussortieren

  13. 3. Algorithmische Ansätz • Slow-Convex-Hull • Laufzeit : • n²-n Paare werden mit n-2 anderen Punkten verglichen • Laufzeit : O (n³)

  14. 3. Algorithmische Ansätze • Graham-Scan-Algorithmus • Algorithmus : 1. Suche Punkt q mit minimaler y-Koordinate (& x-Koordinate) 2. Bestimme Winkel von q zu allen weiteren Punkten entgegen Uhrzeigersinn und sortiere nach den Winkeln (Bei gleichen Winkeln nach Abstand absteigend) 3. Verbinde Punkte durch Polygonzug 4. Durchlaufe ausgehend von q den Polygonzug und überbrücke konkave Ecken

  15. 3. Algorithmische Ansätze • Graham-Scan-Algorithmus • Laufzeit : • es werden n Winkel betrachtet -> n Schritte • Sortieren (bestmöglich n log n) • Lauf über n Punkte -> n Schritte • Laufzeit: O(n log n)

  16. 3. Algorithmische Ansätze • Javis-March-Algorithmus • Algorithmus 1. Starte mit Punkt q = q0 =Punkt mit minimaler y-Koordinate (& x-Koordinate) – q0 in Punktliste 2. Solange p != q0 wiederhole: 3. Suche von q ausgehen den „am weitesten rechts“ liegenden Punkt p (alle anderen Punkte liegen links von q-p) 4. Füge p zur Punktliste hinzu 5. q = p Die Punktliste enthält die Punkte der Konvexen Hülle, sortiert in Richtung gegen den Urzeigersinn

  17. 3. Algorithmische Ansätze • Javis-March-Algorithmus • Laufzeit : • Suche des kleinsten y-Wertes = O(n) • Schleife wird h-mal durchlaufen (h = Anzahl der Ecken der konvexen Hülle ) • Bestimmung des „am weitesten rechts“ liegenden Punktes = O(n) • Laufzeit : O(n*h) somit im schlechtesten Fall ( n Ecken) O(n²)

  18. 3. Algorithmische Ansätze • 2D -> 3D : • Welche Lösungen lassen sich gut ins 3-dimensionale Übertragen ? • Beispiel : • Javis-March -> Giftwrapping

  19. 3. Algorithmische Ansätze Im weiteren : • Facette eines konvexen Polytops ist notwendigerweise ein konvexes Polygon • 2D : konvexes Polygon hat gleich viele Ecken p wie Kanten e • 3D : Satz von Euler : • n – n(e) + n(f) = 2 • n Anzahl der Punkte • n(e) Anzahl der Kanten • n(f) Anzahl der Facetten

  20. 3. Algorithmische Ansätze • Betrachtung von CH als planarer Graph • Jede Facette des entsprechenden Graphen hat 3 Kanten n(e) (Triangulierung der CH) • Jede Kante hat liegt an 2 Facetten n(f) • 2n(e) = 3 n(f) • Einsetzen in Eulerformel : • Beispiel: n+n(f)-2 = 3n(f)/2 => n(f) = 2n-4 => n(e) = 3n-6

  21. 3. Algorithmische Ansätze • Gift-Wrapping • Algorithmus : 1. Bestimme eine Grenzfläche E der Hülle 2. Solange bis entstehende Form geschlossen 3. Biege Fläche E aus der bisher entstandenen Form um eine ihrer Kanten bis ein Punkt erreicht wird. 4. Dieser Punkt bildet mit den Eckpunkten der Kante von E eine neue Grenzfläche

  22. 3. Algorithmische Ansätze • Gift-Wrapping • Laufzeit : • Für jede entstehende Fläche Test mit n Punkten • Für f entstehende Flächen • => O(f* n), im schlimmsten Fall wieder O(n²)

  23. 3. Algorithmische Ansätze • Divide-and-Conquer • Algorithmus : 1. Sortiere Punktemenge nach x-Wert 2. Teile Punktmenge rekursiv, bis Mengengröße <=4 3. Füge CH der einzelnen Mengen zusammen Zusammenfügen: 1. Suche minimale y-Werte aus beiden Mengen 2. Analog zu Gift-Wrapping : Biege Fläche mit z-Richtung um die Kante bis man auf einen Punkt trifft 3. Biege weiter um Kanten der neuen Facette bis CH geschlossen

  24. 3. Algorithmische Ansätze • Divide-and-Conquer • Laufzeit : • Sortieren O(n log n) • Zusammenfügen O(n) • O(n log n)

  25. 4. Incremental-Algorithmus • 1. Schrittweise Erklärung des Algorithmus • 2. Verbesserung durch einen Konfliktgraph • 3. Pseudocode

  26. 4.1 Algorithmus Im Folgenden repräsentiert CH(r) die Konvexe Hülle der 1. r Punkte Start: • Finde 3 Punkte in einer Ebene • Finde 4. Punkt der nicht in der Ebene liegt • Existiert kein 4. Punkt kann eine 2D-Algorithmus angewandt werden • Existiert ein 4. Punkt bilden die 4 Ausgangspunkte ein Tetrahedron

  27. 4.1 Algorithmus • Alle Punkte 5 – n werden zufällig gemischt • nun werden sie nacheinander eingefügt • Wenn wir Punkt r einfügen können 2 Fälle entstehen : • R liegt in CH(r-1) oder auf der Oberfläche => CH(r) = CH(r-1) • r liegt außerhalb von CH(r-1)

  28. 4.1 Algorithmus r liegt außerhalb von CH(r-1) : • Am Punkt r stehend schaut man nach CH(r-1) • Die Facetten von CH(r-1) teilen sich in : • Nichtsichtbare Facetten – diese bilden weiterhin einen Teil der konvexen Hülle • Sichtbare Facetten – diese gehören nicht mehr zur konvexen Hülle CH(r)

  29. 4.1 Algorithmus • Unterscheiden können wir diese Facetten aufgrund des sichtbaren „Horizonts“ von CH(r-1) • Der Horizont ist wie eine Projektion auf eine Ebene von CH(r-1) von p(r) aus zu sehen

  30. 4.1 Algorithmus • Die sichtbaren Facetten werden aus CH(r-1) entfernt • Neue Facetten werden eingefügt die p(r) mit den Kanten des Horizonts von CH(r-1) verbinden • Wir erhalten CH(r)

  31. 4.1 Algorithmus Problem : • Möglicherweise liegt p(r) auf einer Facette von CH(r-1) • die Facette ist nicht sichtbar • beim hinzufügen erstellen wir Koplanare Facetten • Diese müssen gefunden und zusammengeführt werden

  32. 4.2 Konfliktgraph Problem : • Wie finden wir die sichtbaren Facetten zu einem Punkt p(r) ? • Testen wir jede Facette mit jedem neuen Punkt finden wir alle sichtbaren in O(n) • über n-4 Einfügeschritte • Laufzeit: O(n²) Wie geht es besser ?

  33. 4.2 Konfliktgraph Der Trick besteht im Vorarbeiten : • für jede Facette f von CH(r) erstellen wir einen Menge P-Konflikt(f) mit allen Punkten die f sehen können • für jeden Punkt p >r erstellen wir die Menge F-Konflikt(p) mit allen Facetten die dieser Punkt sehen kann

  34. 4.2 Konfliktgraph Punkte und Facetten werden in einem bi-partiten Graph G gespeichert. Konflikt : benachbarte Facetten und Punkte können nicht gleichzeitig in einer konvexen Hülle existieren Wird ein Punkt hinzugefügt => werden die benachbarten Facetten gelöscht

  35. 4.2 Konfliktgraph • Der Graph G kann in linearer Zeit für CH(4) erstellt werden • wird Punkt r hinzugefügt • Finden der Konfliktfacetten in G • Entfernen der Facetten aus CH(r-1) • Löschen der entsprechenden Facetten aus G • Erstellen der neuen Facetten in CH(r) und einfügen dieser Facetten in G • Entscheidender Schritt ist nun das Auffinden der Konfliktpunkte für die neuen Facetten!

  36. 4.2 Konfliktgraph • Wie finden wir die Konfliktpunkte der neuen Facetten ? • Angenommen ein Punkt p(t) sieht die neue Facette f • p(t) sieht auch die Kante e von f , e aus dem Horizont CH(r-1) • p(t) sah entweder f1 oder f2 , die Facetten die in CH(r-1) die Kante e hatten => Wir finden alle Konfliktpunkte in den Konfliktlisten von f1 und f2

  37. 4.3 Pseudocode Eingabe : Eine Menge P von n Punkten Ausgabe : Die Konvexe Hülle CH(P) von P 1. Finde die 4 Punkte p1,p2,p3,p4 in P die ein Tetrahedron formen 2. Dieses bildet bereits die konvexe Hülle CH von p1,p2,p3,p4 3. Erstelle eine zufällige Permutation von p5 bis pn 4. Initialisiere den Konfliktgraphen G für alle „sichtbaren“ Paare (p(t),f) für alle Facetten f von CH(4) und p(t) aus P mit t>4 5. Für Laufvariable r von 5 bis n : :

  38. 4.3 Pseudocode : 5. Für Laufvariable r von 5 bis n 6. Füge p(r) in CH ein 7. Falls F-Konflikt(p(r)) nicht leer ist **p(r) liegt auß. CH** 8. Lösche alle Facetten aus F-Konflikt(p(r)) aus CH 9. Laufe den Rand der sichtbaren Region ab und erstelle eine Liste L der Horizontkanten 10. für alle e aus L 11. verbinde alle e durch ein Dreieck f als neue Facetten von CH(r) mit p(r) 12. Füge einen Knoten für für f in G ein :

  39. 4.3 Pseudocode : 5. Für Laufvariable r von 5 bis n : 12. Füge einen Knoten für f in G ein 13. f1 und f2 seien die an e gelegenen Facetten aus CH 14. Erstelle Liste P(e) aus Konfliktlisten von f1 und f2 15. für alle Punkte p aus P(e) 16. falls f sichtbar von p => füge Kante (p,f) in G hinzu 17. Lösche Knoten für p(r) und Facetten aus F-Konflikt(p(r)) aus G 18. Ergebnis : CH(r) Zurück zu 5. Nach n-4 Schritten erhalten wir CH(P)

  40. 5. Laufzeitanalyse • Alle Schritte vor der Hauptschleife • Ausführbar in linearer Zeit • O(n) • p(r) innerhalb von CH(r-1) • F-Konflikt(p(r)) ist leer • Konstante Zeit • p(r) liegt außerhalb von CH(r-1) ?

  41. 5. Laufzeitanalyse • Liegt der Punkt außerhalb von CH(r-1) • Anzahl der Operationen hängt ab von : • Menge der zu entfernenden Facetten • O(kard(F-Konflikt(p(r))) • kard(F-Konflikt(p(r)) = Kardinalität der Menge • Menge der einzufügenden Facetten • entspricht der Menge von Rand-Kanten des Horizonts von CH(r-1) von p(r) aus gesehen • Eine Kante kann nur gelöscht werden, wenn sie vorher erstellt wurde => Wie viele Kanten erstellt unser Algorithmus ?

  42. 5.Laufzeitanalyse • Satz : Die zu erwartende Anzahl von erstellten Facetten für die CH ist höchstens 6n-20 • Die Anzahl der Kanten ist höchstens 3r-6 (siehe 3.) • Grad(p(r)) = deg(p(r),CH(p(r))) Anzahl der Facetten die beim einfügen von p(r) erstellt werden = Facetten die an p(r) angrenzen • Die Summe über die Grade der Punkte nach Euler <= 6r-12 • Über r eingefügte Punkte ist der Grad eines Punktes <= 6-12/r • Vorsicht : Punkte 1-4 sind bereits eingefügt • Summe (Grad p1,…,p4) ist 12 • Somit ist der zu erwartende Durchschnittswert von deg(p(r),CH(p(r))) :

  43. 5. Laufzeitanalyse • 4 Startfacetten + zu erwartende Anzahl zu erstellender Facetten in r Schritten

  44. 5. Laufzeitanalyse • Facette nur löschbar wenn sie erstellt wurde & • Anzahl erstellter Facetten in O(n) • Was bleibt ? • Erstellen der Konfliktliste für neue Facetten f • Löschen der entfernten Facetten und des eingefügten Punktes aus dem Graphen => lineare Zeit in Anzahl der Knoten • Jeder Knoten kann nur einmal eingefügt und entfernt werden

  45. 5. Laufzeitanalyse • Was kostet uns das Finden der Konflikte ? • Zeilen 14-16 : • Erstellen von P(e) für jede Randkante des Horizonts • Finden der Konflikte für an e angefügte Facette • O(card(P(e)) • Wir benötigen somit : • Mithilfe eines Lemmas der Delaunay-Triangulation lässt sich zeigen :

  46. 5. Laufzeitanalyse Laufzeitanalyse ergibt: O(n log n) Anschauliche Konvexe Hülle im 3D: http://www.voronoi3d.com/testing/voronoi3d.html

  47. Ausblick • Voronoi-Diagramme, Delauny-Triangulation, Konvexe Hülle • Weblink: http://www.pi6.fernuni-hagen.de/GeommLab/Voroglide

  48. Quellen • Buchquellen : • Computational Geometrie de Berg, van Krefeld, Overmars, Schwarzkopf ISBN: 3-540-65620-0 • Internetquellen : • http://www2.in.tu-clausthal.de/~hormann/teaching/ProSemWS04/PS.AlGeo.07.12.2004.b.pdf Konvexe Hüllen TU Clausthal • http://www.ikg.uni-hannover.de/lehre/katalog/alg_geom/v5_Punkthuellen.pdf Punkthüllen Universität Hannover • http://www.inf.fh-flensburg.de/lang/algorithmen/geo/index.htm Konvexe Hülle Fachhochschule Flensburg

  49. Ende • Vielen Dank für ihre Aufmerksamkeit

More Related