Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen
Gliederung Grundlagen Polygone ccw Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 2
Gliederung Grundlagen Punkt und Gerade im Koordinatensystem Schnitt von Geraden Abstand Punkt Gerade / Punkt Liniensegment Dreiecke Kreise Polygone Ccw Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 3
Grundlagen (1) Definition: Die Geometrie (griech.: γεωμέτρης Erdmaß, Landmessung ) ist ein Teilgebiet der Mathematik. Einerseits versteht man unter Geometrie die zwei- und dreidimensionale euklidische Elementargeometrie, die auch im Schulunterricht gelehrt wird und die sich mit Punkten, Geraden, Ebenen, Abständen, Winkeln etc. beschäftigt, sowie diejenigen Begriffsbildungen und Methoden, die im Zuge einer systematischen und mathematischen Behandlung dieses Themas entwickelt wurden. Andererseits umfasst der Begriff Geometrie eine Reihe von großen Teilgebieten der Mathematik, deren Bezug zur Elementargeometrie für Laien nur mehr schwer erkennbar ist. Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 4
Grundlagen - Koordinatensystem Koordinatensystem Punkt im Koordinatensystem ein Punkt hat 3 Koordinaten (x 1, x 2, x 3 ) Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 5
Grundlagen - Geraden Geraden Umgangssprachlich eine lange, gerade Linie Als Funktion: f(x) = mx+b mit Steigung m und hier: f(x) = 2x + 1 Verschiebungskonstante b Es gilt: m = (y 2 y 1 ) / (x 2 - x 1 ) Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 6
Grundlagen - Schnitt von Geraden Schnitt von Geraden f(x) = mx + b g(x) = nx + c Gleichsetzen der Funktionsgleichungen mx + b = nx + c x = (c b) / (m - n) nach x auflösen, in eine Funktion einsetzen, y ausrechnen Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 7
Grundlagen Abstand Punkt - Gerade Abstand von einem Punkt zu einer Geraden: Steigung der Geraden g ist m Abstand vom Punkt zur Geraden ist entlang der Geraden g', die durch P verläuft und senkrecht auf g steht d.h.: Steigung von g' ist -(1/m) Man kann Geradengleichung von g' aufstellen Den Schnittpunkt Q mit g berechnen Der Abstand PQ ist der minimale Abstand von P zu g Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 8
Grundlagen Abstand Punkt Liniensegment (1) Es gibt 2 Möglichkeiten: P liegt im Bereich zwischen den beiden Senkrechten durch die Eckpunkte A, B der Strecke (B) verfahre wie bei der Geraden P liegt nicht in diesem Bereich (A bzw. C): Der Abstand zur Strecke (zum Segment) beträgt min{d(p, A), d(p, B)} Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 9
Grundlagen Abstand Punkt Liniensegment (2) Um herauszufinden, welcher Fall zu wählen ist: Erweitere AB zu einer Geraden, berechne Abstand von P zu der Geraden. Liegt der Schnittpunkt innerhalb des Intervalls [A, B] auf g Variante 1 sonst Variante 2 Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 10
Grundlagen - Dreiecke Allgemein Innenwinkelsumme α + β + γ = 180 Flächeninhalt A = 0,5 * g * h Rechtwinkliges Dreieck sin α = a / c cos α = b / c tan α = a / b Satz von Pythagoras: a 2 + b 2 = c 2 Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 11
Grundlagen - Kreise Eigenschaften Mittelpunkt M Durchmesser d = 2 * Radius r Umfang U, Fläche A Kreiszahl π π 3, 141592654... A = π * r 2 U = 2 * π * r Kreisgleichung (x x M ) 2 + (y y M ) 2 = r 2 Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 12
Grundlagen Punkt im Kreis Liegt P innerhalb des Kreises? Ein Punkt liegt innerhalb eines Kreises, wenn der Abstand von diesem zum Mittelpunkt M kleiner oder gleich r ist. (x M x P ) 2 + (y M y P ) 2 r 2 Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 13
Gliederung Grundlagen Polygone Definition Konvexe / sternförmige Polygone Punkt im - Polygon Ccw Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 14
Polygone - Definition Definition Ein Polygon erhält man, indem man mindestens 3 voneinander verschiedene Punkte [ ] verbindet, sodass durch den entstandenen Linienzug eine zusammenhängende Fläche umschlossen wird. Auch die so entstandene Fläche wird oft Polygon genannt. Dreiecke, Vierecke und Sechsecke sind aus dem Alltag bekannte Beispiele für Polygone Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 15
Polygone Konvexe Polygone Ein Polygon wird als konvex bezeichnet, wenn es keine konkaven Ecken gibt, d.h., jeder Winkel innerhalb des Polygons ist kleiner als 180, oder, wenn man von jedem Punkt aus jeden anderen im Polygon sehen kann. Ein Polygon heißt sternförmig, wenn es einen Punkt gibt, von dem aus alle anderen sichtbar sind. Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 16
Polygone Punkt im Polygon Problem: Liegt ein Punkt P in einem Polygon? Lösung: Suche einen Punkt P', der sicher außerhalb liegt Verbinde P und P' Zähle, wie viele Kanten des Polygons die entstandene Strecke schneidet (Kreuzungszahl) ist sie gerade, liegt P außerhalb ist sie ungerade, liegt P innerhalb Aber: Sonderfälle sind zu beachten: P liegt auf einer Kante; die Strecke schneidet einen Eckpunkt Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 17
Polygone Punkt im Polygon - Sonderfälle Sonderfallbehandlung Man teste vorab, ob sich P auf einer Kante des Polygons befindet und entscheide dann beliebig Das Problem, dass PP' einen Eckpunkt schneiden könnte, kann bei konvexen Polygonen nicht auftreten Allgemein: Wähle P' zufällig, teste ob PP' einen Eckpunkt schneidet, falls ja, wähle neuen Punkt P' (straight-on-variante) Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 18
Gliederung Grundlagen Polygone ccw Beschreibung Code intersect Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 19
ccw (1) ccw (counter-clock-wise) ist ein Algorithmus, der die relative Lage von 3 Punkten (P 0, P 1, P 2 ) zueinander bestimmt Möglichkeiten: Die Bewegung P 0 P 1 P 2 erfolgt im Gegenuhrzeigersinn (ccw) return 1 Die Bewegung P 0 P 1 P 2 erfolgt im Uhrzeigersinn (cw) return -1 P 0, P 1, P 2 sind kollinear (auf einer Linie) return 0 Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 20
ccw (2) ccw kann genutzt werden, um das Punkt im Polygon Problem für konvexe Polygone zu lösen ccw(a, B, P) == ccw(b, C, P) == ccw(c, A, P) Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 21
ccw (3) - Code function ccw(p0, p1, p2: Point) : int { dx1 = p1.x p0.x; dx2 = p2.x p0.x; dy1 = p1.y p0.y; dy2 = p2.y p0.y; int ccw = (dx1 * dy2) (dx2 * dy1); if (ccw > 0) return 1; else if (ccw < 0) return -1; else return 0; } Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 22
ccw - intersect bool intersect(p1, p2, p3, p4: Point) d 1 = ccw(p3, p4, p1); d 2 = ccw(p3, p4, p2); d 3 = ccw(p1, p2, p3); d 4 = ccw(p1, p2, p4); if ( (d 1 > 0 && d 2 < 0) (d 1 < 0 && d 2 > 0) (d 3 > 0 && d 4 < 0) (d 3 < 0 && d 4 > 0) ) return true; Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 23
Gliederung Grundlagen Polygone Ccw Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 24
Pick's Theorem - Allgemein Voraussetzungen: Ein Polygon, dessen sämtliche Eckpunkte ganzzahlige Koordinaten haben (wie Rechenpapier ) Pick's Theorem: Seien: Dann gilt: A die Fläche I die Anzahl der Gitterpunkte im Inneren des Polygons R die Anzahl der Gitterpunkte auf dem Rand des Polygons A = I + R/2-1 Beim obigen Beispiel: I = 40; R = 12 A = 40 + 12/2 1 = 45 Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 25
Gliederung Grundlagen Polygone Ccw Pick's Theorem Konvexe Hülle Allgemein Einwickeln / Wrap / Jarvi's March Graham's Scan Hilfsfunktion Theta Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 26
Konvexe Hülle - Allgemein Konvexe Menge Eine Menge von Punkten in der Ebene heißt konvex, wenn sie mit je zwei Punkten auch deren Verbindungsstrecke enthält Konvexe Hülle Das Polygon X ist die konvexe Hülle vom Polygon P, wenn es das kleinste Polygon ist, das alle Punkte von P enthält (oder sie auf der Grenze liegen). Anschaulich: Stellt man sich die Punkte als Nägel vor, die in einem Brett stecken, dann erhält man den Rand der konvexen Hülle, indem man ein Gummiband um die Nägel spannt. Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 27
Konvexe Hülle - Algorithmen Es gibt verschiedene Algorithmen, die konvexe Hülle eines Polygons zu entwickeln: Einwickeln (Jarvi's March) Graham's Scan Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 28
Konvexe Hülle Einwickeln (1) Einwickeln Man erinnere sich an das Beispiel mit den Nägeln im Brett: Wähle den Nagel am weitesten unten als Startpunkt und wickle ein Seil darum Spanne dieses waagerecht nach rechts und gehe soweit nach oben, bis es einen anderen Nagel berührt Wiederhole den letzten Schritt solange, bis man wieder am Startnagel ankommt Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 29
Konvexe Hülle Einwickeln (2) Formalerer Algorithmus: 1. Wähle den Punkt mit kleinster y-koordinate als Startpunkt 2. wähle als nächstes den Punkt, dessen Strecke durch den zuletzt gewählten Punkt den kleinsten Winkel ggü. der Horizontalen hat 3. Wiederhole Schritt 2, bis Startpunkt wieder erreicht ist Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 30
Konvexe Hülle Einwickeln (3) Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 31
Konvexe Hülle Graham's Scan (1) Graham's Scan entwickelt die konvexe Hülle mithilfe der ccw-funktion: Wähle einen Punkt, der sicher zur konvexen Hülle gehört (z.b. wieder kleinster y-wert) Sortiere alle anderen Punkte nach aufsteigendem Winkel zwischen Startpunkt und diesem Punkt gegen den Uhrzeigersinn Sind 2 Winkel gleich, sind die Punkte kollinear und der mit kleinerem Abstand zum Startpunkt wird verworfen Sukzessive die Punkte durchgehen: Biegen wir links ab ( ccw), kommt der neue Punkt in die Menge Biegen wir rechts ab, wird der letzte Punkt aus der Menge entfernt und der letzte Schritt wiederholt Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 32
Konvexe Hülle Graham's Scan (2) Beispiel: (a) Wählen des Startpunkts (b) Verbinden der Punkte mit dem Startpunkt und Sortieren nach Winkel (c ) Der Reihenfolge nach verbinden Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 33
Konvexe Hülle Graham's Scan (3) ccw Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 34
Konvexe Hülle Graham's Scan Hilfsfunktion Theta Hilfsfunktion theta berechnet den Wert im Intervall [0,360[, der proportional zu dem Winkel zwischen der Horizontalen eines Punktes und der Strecke von diesem zu einem anderen Punkt ist. Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 35
Konvexe Hülle - Komplexitäten Jarvis March : Bei gleichmäßiger Verteilung der Punkte O(n log n) Im worst-case aber O(n 2 ) Graham's Scan: Nach Sortieren der Punkte ist der Aufwand linear O(n log n) Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 36
Zusammenfassung Grundlagen: Abstand Punkt Segment 2 Möglichkeiten betrachten Polygone: Konvexe und sternförmige Polygone Punkt im Polygon Kreuzungszahl (Sonderfälle!) Ccw: Gibt an, wie 3 Punkte relativ zueinander liegen Nützlich für Punkt im konvexen Polygon und Graham's Scan Pick's Theorem: Berechnet die Fläche eines Gitterpolygons Konvexe Hülle: Einwickeln Graham's Scan Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 37
Quellen http://de.wikipedia.org/wiki/geometrie http://images.google.de/imgres?imgurl=http://lernen.mws.tue.bw.schule.de/vekgeo/010punkteimraum/ks-3dxyz- k.gif&imgrefurl=http://lernen.mws.tue.bw.schule.de/vekgeo/010punkteimraum/koordinatensysteme_im_raum.html&usg= S0j1s- HKOOmvCKea8GNjNnDiKXs=&h=307&w=400&sz=11&hl=de&start=14&um=1&tbnid=NVDwNqH2M8JWUM:&tbnh=95&tbnw=124&prev=/im ages%3fq%3dkoordinatensystem%26hl%3dde%26client%3dfirefox-a%26rls%3dorg.mozilla:de:official%26sa%3dn%26um%3d1 http://www.memleb.de/unterrichtsdownload/geradengleichungen/images/schnittpunkt.gif http://www.dynama.de/javascript/10/dreieckberechnen/dreieck.gif http://upload.wikimedia.org/wikipedia/de/thumb/5/56/rechtwinkligesdreieck.svg/442px-rechtwinkligesdreieck.svg.png http://de.wikipedia.org/wiki/polygon http://www.iti.fh-flensburg.de/lang/algorithmen/geo/polygon.htm http://pics.computerbase.de/lexikon/36826/180px-heptagon.svg.png http://www.inf.fh-flensburg.de/lang/algorithmen/geo/convex.htm http://www-lehre.informatik.uni-osnabrueck.de/~cg/2002/skript/node43.html http://rw7.de/ralf/inffaq/polygon.html http://www.inf.uni-konstanz.de/bioml/lectures/ss08/s_acm_contest_s08/geometrie.pdf http://de.wikipedia.org/wiki/satz_von_pick http://www.personal.kent.edu/~rmuhamma/compgeometry/mycg/convexhull/grahamscan/grahamscan.htm http://www.inf.fh-flensburg.de/lang/algorithmen/geo/graham.htm http://www.inf.fh-flensburg.de/lang/algorithmen/geo/jarvis.htm http://icpc.informatik.uni-erlangen.de/wiki/doku.php?id=geometrie http://www.hinterseher.de/diplomarbeit/abstand_punkt_gerade.gif http://www-gs.informatik.tu-cottbus.de/alg_v08b.pdf http://www.inf.uni-konstanz.de/bioml/lectures/ss08/s_acm_contest_s08/geometrie.pdf Referate über Geometrie im HalloWelt Seminar der Jahre 06, 07, 08 Hallo Welt für Fortgeschrittene Geometrie I Markus Götze Folie 38