Geometrie. Hallo Welt! für Fortgeschrittene Simon Kuhnle. 11. Juli

Ähnliche Dokumente
Hallo Welt für Fortgeschrittene

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen

Hallo Welt! für Fortgeschrittene. Geometrie I. Philipp Erhardt. 19. Juli Philipp Erhardt Geometrie I 19. Juli / 27

Geometrie 1. Christian Bay Christian Bay Geometrie / 46

Geometrie I. Tobias Langer Tobias Langer Geometrie I / 59

Geometrie I. Laura Lawniczak Hallo Welt -Seminar - LS 2

Hallo Welt für Fortgeschrittene

Geometrie 2. Julian Fischer Julian Fischer Geometrie / 30

Geometrie I. Polygone. Dominik Huber Hallo Welt! für Fortgeschrittene. Informatik 2 Programmiersysteme Martensstraße Erlangen

Geometrie II Hallo Welt! für Fortgeschrittene

Hallo Welt für Fortgeschrittene

Geometrie 1. Roman Sommer. Informatik 2 Programmiersysteme Martensstraße Erlangen

Seminar. Algorithmische Geometrie

July 04, Geometrie I. Hallo Welt! für Fortgeschrittene. Daniel Uebler

Geometrische Algorithmen Einige einfache Definitionen: Ist ein Punkt in einem Polygon? Punkt-in-Polygon-Problem. Das Punkt-in-Polygon-Problem

Hallo Welt für Fortgeschrittene. Geometrie I. Lukas Batz. Informatik 2 Programmiersysteme Martensstraße Erlangen

Geometrische Algorithmen

Konvexe Hülle. Konvexe Hülle. Mathematik. Konvexe Hülle: Definition. Mathematik. Konvexe Hülle: Eigenschaften. AK der Algorithmik 5, SS 2005 Hu Bin

Übersicht über Informatik und Softwaresystemtechnik WS 99/00, Prof. Dr. Andreas Schwill

Das Divide - and - Conquer Prinzip. Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt

M. Pester 29. Ein konvexes d-polytop ist eine begrenzte d-dimensionale polyedrale Menge. (d = 3 Polyeder, d = 2 Polygon)

Geometrische Algorithmen Voronoi-Diagramme. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Voronoi-Diagramme

Algorithmen II Vorlesung am

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Algorithmische Techniken für Geometrische Probleme

Grundlagen zur Delaunay-Triangulierung und zur konvexen Hülle. zum Begriff des Voronoi-Diagramms (vgl. auch Vorlesung "Algorithmische Geometrie"):

Algorithmische Geometrie Thema: Konvexe Hüllen

Kapitel 6: Algorithmen der Computer-Geometrie

Geometrie II. Deniz Neufeld Deniz Neufeld Geometrie II / 39

Geometrische Algorithmen Segmentschnitt

Geometrische Algorithmen Segmentschnitt

Datenstrukturen und Algorithmen

Voronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Informatik II Prüfungsvorbereitungskurs

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

Geometrische Algorithmen Segmentschnitt. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Segmentschnitt

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Übungsblatt 7 - Voronoi Diagramme

Lineare Funktionen. Das rechtwinklige (kartesische) Koordinatensystem. Funktionen

Algorithmische Geometrie: Delaunay Triangulierung (Teil 2)

Algorithmische Geometrie

Dualität + Quad-trees

Algorithmische Geometrie, SoSe 2005 Skriptmitschrift vom 29. April 2005

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

2.1. Konvexe Hülle in 2D

Quad-trees. Benjamin Niedermann Übung Algorithmische Geometrie

Vorlesung Datenstrukturen

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Die Ecken werden immer gegen den Uhrzeigersinn beschriftet, sonst falscher Umlaufsinn!

1.1. Geradengleichung aus Steigung und y-achsenabschnitt

Brückenkurs Mathematik. Mittwoch Freitag

Algorithmische Geometrie. Prof. Dr. Thomas Ottmann. Mitarbeit: PD Dr. Sven Schuierer Dr. Stefan Edelkamp

2. Triangulation ebener Punktmengen. 3. Definition und Eigenschaften der Delaunay Triangulation

Suchen in Texten. Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Merkhilfe Grundwissen

Übung Computergrafik 3

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Das Voronoi Diagramm. 1. Definition. 2. Eigenschaften. 3. Größe und Speicherung. 4. Konstruktion. 5. Verwendung

Parallele Algorithmen in der Bildverarbeitung

Algebra 4.

Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays

Konvexe Hülle im R 3 + WSPD

Übersicht. Begriffserklärung Motivation / Anwendungen Drei Algorithmen Zusammenfassung Fragen Quellen. Triangulierung von Steffen Ernst 2

2D-Clipping. Kapitel Clipping von Linien. y max. y min x min. x max

Sommersemester Jewgeni Rose. Technische Universität Braunschweig

Geometrische Algorithmen

Algorithmische Anwendungen. Algorithmen zur Berechnung konvexer Hüllen von Punkten

Algorithmische Geometrie: Delaunay Triangulierung (Teil 1)

Parametrische Suche als Algorithmen Paradigma

Merkhilfe Grundwissen

Unterrichtsreihe zur Parabel

Aufgabe S 1 (4 Punkte)

Geradenarrangements und Dualität von Punkten und Geraden

Übung Computergrafik 3

Datenstrukturen & Algorithmen Lösungen zu Blatt 14 FS 16

Abitur 2013 Mathematik Geometrie V

Geradenarrangements und Dualität von Punkten und Geraden

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

Softwarepraktikum WS 2003 Thema: Schnitt von Halbebenen. Markus Esch Jörg Jakoby Alexander Betz

Sortieren und Suchen. Jens Wächtler Hallo Welt! -Seminar LS 2

Geradenarrangements und Dualität von Punkten und Geraden

Algorithmen und Datenstrukturen

Fit in Mathe. Februar Klassenstufe 10 Nichtlineare Gleichungssysteme

Sortieren II / HeapSort Heaps

Algorithmische Geometrie 3. Schnitte von Liniensegmenten

Graphalgorithmen Minimale Spannbäume. Kruskal: Minimaler Spannbaum

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Kollisionserkennung

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Auswählen nach Rang (Selektion)

a) Wie hoch ist die Leiter? b) Wie weit stehen die beiden Fußpunkte auseinander? Abbildung 1: Eine Stehleiter

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 7, Fallstudie Point-In-Polygon Algorithmus Diskretisierung: Linien zeichnen

Abitur 2011 G8 Musterabitur Mathematik Geometrie VI

Algorithmen und Datenstrukturen Wintersemester 2018/2019 Übung#5, Christian Rieck, Arne Schmidt

Stack. Seniorenseminar Michael Pohlig

{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen

Abitur 2011 G8 Abitur Mathematik Geometrie VI

Transkript:

Geometrie Hallo Welt! für Fortgeschrittene 2008 Simon Kuhnle sisikuhn@stud.informatik.uni-erlangen.de 11. Juli 2008 Simon Kuhnle Geometrie 11.07.2008 1 / 33

Übersicht Übersicht 1 Grundlagen 2 ccw 3 Konvexe Hülle 4 Closest Pair 5 Bereichssuche Simon Kuhnle Geometrie 11.07.2008 2 / 33

Geraden Grundlagen Unendlich lange, gerade Linie Strecke: Linie, begrenzt zwei Punkten Geradengleichung: y = mx + t m ist die Steigung der Geraden. m = y 2 y1 = tan(ϕ) x2 x1 Simon Kuhnle Geometrie 11.07.2008 3 / 33

Dreiecke Grundlagen Satz von Pythagoras: a 2 + b 2 = c 2 sin α = Gegenkathete Hypotenuse cos α = Ankathete Hypotenuse tan α = Gegenkathete Ankethete Simon Kuhnle Geometrie 11.07.2008 4 / 33

Kreise Grundlagen Pi 3.14159265358979323846264338327950288419 7169399375105820974944592307816406286208 9986280348253421170679... Umfang U = 2πr Fläche A = πr 2 M d r Simon Kuhnle Geometrie 11.07.2008 5 / 33

Polygone Grundlagen Denition Ein Polygon ist ein Vieleck bestehend aus n Punkten P = (P 1, P 2,..., P n ), P i R, 1 i n die durch Strecken miteinander verbunden eine geschlossene Figur ergeben. Beispiele Simon Kuhnle Geometrie 11.07.2008 6 / 33

Konvex Grundlagen Sternförmige und konvexe Polygone Sternförmige Polygone haben einen Punkt von dem aus jeder Punkt sichtbar ist Bei konvexen Polygonen kann man von allen Punkten aus jeden Punkt sehen Simon Kuhnle Geometrie 11.07.2008 7 / 33

Punkt im Polygon Grundlagen Bendet sich ein Punkt X innerhalb eines Polygons? Punkt P auÿerhalb des Polygons suchen Zähle die Schnittpunkte mit den Kanten des Polygons Ungerade: innerhalb des Polygons Gerade: auÿerhalb des Polygons Sonderfälle P liegt auf einem Eckpunkt des Polygons Auf der Strecke zwischen P und X liegt eine Kante Simon Kuhnle Geometrie 11.07.2008 8 / 33

CCW CCW ccw bool ccw(punktp 1, PunktP 2, PunktP 3 ); P 1 P 2 P 3 gegen den/im Uhrzeigersinn? Kreuzprodukt der drei Punkte gibt die Richtung an Kreuzprodukt gröÿer 0: im Uhrzeigersinn Kreuzprodukt kleiner 0: gegen den Uhrzeigersinn Kreuzprodukt gleich 0: Kollinear Simon Kuhnle Geometrie 11.07.2008 9 / 33

ccw CCW Simon Kuhnle Geometrie 11.07.2008 10 / 33

CCW Code CCW / Kreuzprodukt der drei Punkte ergibt die Richtung / int ccw(p1, p2, p3) { int ccw; / (p1 p0) x (p2 p0) / ccw = (p2.x p1.x) (p3.y p1.y) (p3.x p1.x) (p2.y p1.y); } if (ccw > 0) return 1; else if (ccw < 0) return 1; else return 0; Simon Kuhnle Geometrie 11.07.2008 11 / 33

CCW Punkt im konvexen Polygon ccw für konvexe Polygone Um herauszunden ob ein Punkt in einem Polygon liegt, von dem wir wissen, dass dieses konvex ist (z.b. Dreieck), reicht es zu überprüfen, ob die ccw-werte gleich sind. Mit den Punkten des Dreiecks a, b, c und dem gesuchten Punkt p ccw(a, b, p) == ccw(b, c, p) == ccw(c, a, p) Simon Kuhnle Geometrie 11.07.2008 12 / 33

Intersect CCW Schneiden sich zwei Geraden? Richtung (ccw) der 4 Endpunkte berechnen Es kann sein, dass einer der Punkte auf der anderen Geraden liegt Überprüfe ob dieser Punkt genau zwischen zwei Endpunkten liegt Simon Kuhnle Geometrie 11.07.2008 13 / 33

Intersect CCW bool intersect (p1, p2, p3, p4) { d1 = ccw(p3, p4, p1); d2 = ccw(p3, p4, p2); d3 = ccw(p1, p2, p3); d4 = ccw(p1, p2, p4); if ((d1 > 0 && d2 < 0) (d1 < 0 && d2 > 0) (d3 > 0 && d4 < 0) (d3 < 0 && d4 > 0)) return true ; else if ((d1 == 0 && onsegment(p3, p4, p1)) (d2 == 0 && onsegment(p3, p4, p2)) (d3 == 0 && onsegment(p1, p2, p3)) (d4 == 0 && onsegment(p1, p2, p4)) return true ; else return false ; } bool onsegment(pi, pj, pk) { if (min(pi.x, pj.x) <= pk.x <= max(pi.x, pj.x) && min(pi.y, pj.y) <= pk.y <= max(pi.y, pj.y) return true ; return false ; Simon } Kuhnle Geometrie 11.07.2008 14 / 33

Intersect CCW Simon Kuhnle Geometrie 11.07.2008 15 / 33

Konvexe Hülle Konvexe Hülle Denition Die Konvexe Hülle ist das kleinste Polygon P, bei dem alle Punkte eines Polygons X entweder innerhalb des Polygons P oder auf der Grenze von P liegen. Simon Kuhnle Geometrie 11.07.2008 16 / 33

Konvexe Hülle Konvexe Hülle Algorithmen zur Berechnung der Konv. Hülle n = Anzahl der Punkte, h = Anzahl der Punkte auf der Hülle Einwickeln (auch bekannt als Jarvi's march) O(n h) Durchsuchen nach Graham O(n log h) Simon Kuhnle Geometrie 11.07.2008 17 / 33

Einwickeln Konvexe Hülle Idee Einwickeln mit einer Schnur Algorithmus 1 Startpunkt S auswählen. Wichtig: dieser muss sicher Teil der Hülle sein (z.b. der Punkt P mit dem kleinsten y-wert) 2 Schnur parallel zur x-achse spannen und solange gegen den Uhrzeigersinn gehen, bis die Schnur den nächsten Punkt berührt. 3 Wiederhole 2. bis Punkt P = Startpunkt S Simon Kuhnle Geometrie 11.07.2008 18 / 33

Graham Scan Konvexe Hülle Algorithmus 1 Startpunkt suchen (Punkt mit dem kleinsten y-wert) 2 Punkte nach Winkel sortieren. Bei Punkten mit gleichem Winkel wird nur der Punkt berücksichtigt, der am weitesten vom Startpunkt entfernt ist. 3 Ist ccw(p 1, P 2, P neu ) kleiner Null (d.h. wir biegen links ab) ist der Punkt P neu Teil der Hülle, rechts abbiegen bedeutet der letzte Punkt vor P neu (P 2 ) iegt raus und wir überprüfen nochmals die ccw. 4 Aufwand ergibt sich durch die Sortierung Simon Kuhnle Geometrie 11.07.2008 19 / 33

Graham Scan Konvexe Hülle Simon Kuhnle Geometrie 11.07.2008 20 / 33

Graham Scan Konvexe Hülle s.sortbyangle(); // Nach Winkel sortieren stack.push(s. get (0)); // Punkt mit dem kleinsten y Wert stack.push(s. get (1)); stack.push(s. get (2)); int ct = 3; for ( int i = 3; i < n; i++) { // ct 2 = vorletztes Element, ct 1 = letzte Element // i aktuelles Element (noch nicht auf dem Stack!) while (ccw(stack.get(ct 2), stack.get(ct 1), s.get( i )) > 0) { stack.pop(); ct ; } stack.push(s. get( i )); ct++; } Simon Kuhnle Geometrie 11.07.2008 21 / 33

Closest-Pair-Problem Closest Pair Was? Bei einer Punktmenge von mehr als 2 Punkten das Paar nden, welches am nähesten beieinander liegt. Aufwand Naiver Ansatz sehr aufwändig ( n 2) = O(n 2 ) Besser: Teile und Herrsche O(n log n) Simon Kuhnle Geometrie 11.07.2008 22 / 33

Teile und Herrsche Closest Pair Teile Punktmenge wird durch eine senkrechte Linie in zwei Hälften geteilt, so dass die linke und die rechte Menge die gleiche Anzahl an Punkten besitzen Herrsche Rekursiver Aufruf auf die linke/rechte Hälfte. Minimaldistanz d = min(d links, d rechts ) Zusammenfügen Nachdem wir den minimalen Abstand d aus dem Bereich einer der beiden Hälften gefunden haben, bleibt das Problem, dass ein noch kleinerer Abstand zwischen zwei Punkten aus unterschiedlichen Hälften existieren könnte! Simon Kuhnle Geometrie 11.07.2008 23 / 33

Teile und Herrsche Closest Pair Vorgehen Array anlegen, in dem nur Punkte enthalten sind, die maximal d (nach links und rechts in x-richtung) von der Trennlinie entfernt sind (der Grenzbereich) Für jeden Punkt dieses Arrays wird nun im Umkreis von d nach anderen Punkten gesucht und die Entfernung d' dafuer berechnet maximal 7 Punkte pro untersuchten Punkt des Arrays falls ein d' kleiner als d ist, haben wir eine neue Minimaldistanz gefunden (ansonsten bleibt d die Minimaldistanz) Simon Kuhnle Geometrie 11.07.2008 24 / 33

Teile und Herrsche Closest Pair Simon Kuhnle Geometrie 11.07.2008 25 / 33

Bereichssuche Bereichssuche Was? Aunden aller Datensätze (Punkte) mit bestimmten Attributen (d.h. innerhalb eines Intervalls). Wie? 1-dimensional Sortieren und im Intervall suchen Binärbaum erstellen 2- bzw. N-dimensional Projektion Gitterverfahren 2-dimensionale bzw. k-dimensionale Bäume Simon Kuhnle Geometrie 11.07.2008 26 / 33

Gitterverfahren Bereichssuche Vorgehen Aufteilen des Bereichs in gleich groÿe Quadrate Alle Punkte innerhalb eines Quadrats in einer Liste speichern Suche auf Quadrate beschränkt, die durch den Suchbereich überdeckt werden Problem: Wahl der Gröÿe Zu groÿ: Viele Punkte pro Quadrat Zu klein: Viele (leere) Quadrate Simon Kuhnle Geometrie 11.07.2008 27 / 33

Bereichssuche Aufwand Gitterverfahren Aufwand Im besten Fall: O(M), M = Anzahl der Punkte eines Quadrats Worst-case: O(n) Simon Kuhnle Geometrie 11.07.2008 28 / 33

Gitterverfahren Bereichssuche Simon Kuhnle Geometrie 11.07.2008 29 / 33

2D-Bäume Bereichssuche Idee Einen Binärbaum aus den Punkten erstellen, mit den x- und y-koordinaten als Schlüssel Einfügen Wurzel wählen Nächsten Punkt wählen y-wert gröÿer als der y-wert der Wurzel rechts einfügen y-wert kleiner links einfügen Nächsten Punkt einfügen an Hand des x-wertes relativ zur Wurzel und an Hand des y-wertes des darauf folgenden Knotens (falls vorhanden) Ständiger Wechsel zwischen x- und y-wert Simon Kuhnle Geometrie 11.07.2008 30 / 33

2D-Bäume Bereichssuche Simon Kuhnle Geometrie 11.07.2008 31 / 33

Mehr Dimensionen Bereichssuche Verfahren auch für mehr Dimensionen möglich Problem beim Gitterverfahren: sinnvolle gröÿe für die Gitter kd-bäume: Bäume entarten sehr schnell Simon Kuhnle Geometrie 11.07.2008 32 / 33

Literatur Literatur 1 T.H.Cormen, C.E.Leiserson, R.L.Rivest: Introduction to Algorithms 2nd Ed, The MIT Press, 2001 2 R.Sedgewick: Algorithms in C++, Addison-Wesley, 1984 Simon Kuhnle Geometrie 11.07.2008 33 / 33