Hallo Welt für Fortgeschrittene Geometrie I Lukas Batz Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen
Gliederung Grundlagen Vektoren Geradengleichungen Skalar- und Kreuzprodukt Abstand Punkt-Linie/-Segment CCW-Test Polygone Punkt-in-Polygon-Problem Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 2
Gliederung Grundlagen Vektoren Geradengleichungen Skalar- und Kreuzprodukt Abstand Punkt-Linie/-Segment CCW-Test Polygone Punkt-in-Polygon-Problem Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 3
Grundlagen - Vektoren Definition: Vektor () a1 a2 a = gegeben durch n-tupel reeller Zahlen,... an darstellbar als Spaltenvektor oder Vektorpfeil. Verschiebung in Raum oder Ebene, Vektoren können summiert und addiert werden und mit Skalaren multipliziert werden. Berechnung A = Verschiebung von A nach B: AB = B Merke Kopf minus Fuß Länge eines Vektors: a = (Abstand von A und B) a +a +...+a 2 1 2 2 2 n Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 4 ( ) b1 a1 b2 a 2... bn an
Grundlagen - Geradengleichungen Im ℝ2: y = m x + t Kann durch zwei voneinander verschiedene Punkte bestimmt werden x 2 x 1 Steigung m := y 2 y 1 Y-Achsenabschnitt t := y p m x p Vorteile von Geradengleichung: Lotgeraden in Punkt p: y = m x+y p+m x p Parallelen Geraden durch Punkt p: y = m x+y p m x p Schnittpunkt zweier Geraden: Ps ( t 2 t 1 m1 t 2 m2 t 1, m1 m2 m1 m2 Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 5 )
Grundlagen - Geradengleichungen Mit Vektoren im ℝ2/ℝ3: Erzeugung durch Punkt und Richtungsvektor: + λ g = A u Erzeugung durch zwei voneinander verschiedene Punkte: + λ g = A AB z.b. Berechnung von Schnittpunkt LGS Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 6
Grundlagen - Skalarprodukt Berechnung B ℝ(Skalar) Im ℝ3: A B = a1 b1+a 2 b 2+a3 b 3 A Eigenschaften und Anwendung B = A B cos(φ) A 1 A B φ = cos B A auf die von A bestimmte Richtung Orthogonale Projektion von B B = 0 gdw. die Vektoren senkrecht aufeinander stehen A 2 2 2 v = v v = v 1 +v 2+v 3 Berechnung des Betrags eines Vektors Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 7
Grundlagen - Kreuzprodukt Berechnung B ℝ3 Im ℝ3: A ( a 2 b3 a 3 b2 B = a b a b A 3 1 1 3 a1 b 2 a 2 b1 ) Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 8
Grundlagen - Kreuzprodukt Eigenschaften und Anwendung B steht senkrecht auf der A und B aufgespannten Ebene. von A B ergibt den Flächeninhalt des A und B aufgespannten Parallelogramms. von A B = A B sin(φ) A B A sin(φ) = B A B A φ = sin B A 1 Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 9
Gliederung Grundlagen Vektoren Geradengleichungen Skalar- und Kreuzprodukt Abstand Punkt-Linie/-Segment CCW-Test Polygone Punkt-in-Polygon-Problem Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 10
Abstand Punkt-Linie ges.: Der Abstand eines Punktes P zur Geraden g. AP u Abstand: d(g,p) = u Herleitung: 1 g h= 1 AP u 2 2 AP u <=> h = u = d 2, g = u Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 11
Abstand Punkt-Segment ges.: Der Abstand eines Punktes P zur Strecke AB. Fall 1: P liegt zwischen den Endpunkten A und B der Geraden AP u AP AB d(ab,p) = = u AB Fall 2: P liegt außerhalb von diesen Bereich AP, BP } d(p, AB) = min{ Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 12
Gliederung Grundlagen Vektoren Geradengleichungen Skalar- und Kreuzprodukt Abstand Punkt-Linie/-Segment CCW-Test Polygone Punkt-in-Polygon-Problem Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 13
CCW-Test CCW Beschreibt die relative Richtung eines Punktes zu einer Strecke. CW: Clockwise (Im Uhrzeigersinn) CCW: Counter Clockwise (Gegen den Uhrzeigersinn) Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 14
CCW-Test Berechnung (im ℝ2) sei = a = AC, b AB a 1 b 2 a 2 b1 < 0: Counter Clockwise (CCW) a 1 b 2 a 2 b1 = 0: Punkt C liegt auf einer Linie mit A und B a 1 b 2 a 2 b1 > 0: Clockwise (CW) Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 15
CCW-Test Anwendungsbeispiel: Gibt es einen Schnittpunkt der beiden Strecken AB und CD? Es gibt einen Schnittpunkt, wenn die Endpunkte jeweils auf unterschiedlichen Seiten der Geraden der anderen Strecke liegen und umgekehrt. Sonderfall: Ein Endpunkt liegt auf der anderen Strecke Überprüfe für alle Kombinationen ob Endpunkt auf anderer Strecke Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 16
Gliederung Grundlagen Vektoren Geradengleichungen Skalar- und Kreuzprodukt Abstand Punkt-Linie/-Segment CCW-Test Polygone Punkt-in-Polygon-Problem Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 17
Polygone Definition: Polygon mindestens drei Punkte voneinander verschieden nicht kollinear durch Strecken miteinander verbunden geschlossener Streckenzug Bspw.: Dreieck, Viereck,, n-eck (bei n Eckpunkten) Weitere Eigenschaften: überschlagen / einfach planar / nicht planar gleichseitig / gleichwinklig / regelmäßig Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 18
Polygone Konvexe Polygone Jede geradlinige Verbindung zwischen zwei Punkten aus dem Polygon muss innerhalb des Polygons liegen (inkl. Rand). Alle Innenwinkel <= 180 Konkave Polygone mindestens eine Verbindungsstrecke zwischen zwei Punkten liegt ( zumindest teilweise) außerhalb des Polygons. mindestens Ein Innenwinkel > 180 Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 19
Polygone - Punkt-in-Polygon-Problem Fragestellung: Liegt der Punkt P in geg. Polygon Beispiel aus AUD: Leiterplatte Für allgemeine Polygone: Strahl-Methode Wähle beliebigen Punkt Q, der sicher außerhalb liegt Verbinde P und Q und betrachte Schnittpunkte von PQ mit den Kanten des Polygons Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 20
Polygone - Punkt-in-Polygon-Problem Fall 1: kein Schnittpunkt P liegt außerhalb Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 21
Polygone - Punkt-in-Polygon-Problem Fall 1: kein Schnittpunkt P liegt außerhalb Fall 2: gerade Anzahl von Schnittpunkten P liegt außerhalb Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 22
Polygone - Punkt-in-Polygon-Problem Fall 1: kein Schnittpunkt P liegt außerhalb Fall 2: gerade Anzahl von Schnittpunkten P liegt außerhalb Fall 3: ungerade Anzahl von Schnittpunkten P liegt innerhalb Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 23
Polygone - Punkt-in-Polygon-Problem Fall 1: kein Schnittpunkt P liegt außerhalb Fall 2: gerade Anzahl von Schnittpunkten P liegt außerhalb Fall 3: ungerade Anzahl von Schnittpunkten P liegt innerhalb Sonderfall a: unendlich viele Schnittpunkte (schneidet Kante) Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 24
Polygone - Punkt-in-Polygon-Problem Fall 1: kein Schnittpunkt P liegt außerhalb Fall 2: gerade Anzahl von Schnittpunkten P liegt außerhalb Fall 3: ungerade Anzahl von Schnittpunkten P liegt innerhalb Sonderfall a: unendlich viele Schnittpunkte (schneidet Kante) Sonderfall b: Schnittpunkt = Eckpunkt Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 25
Polygone - Punkt-in-Polygon-Problem Fall 1: kein Schnittpunkt P liegt außerhalb Fall 2: gerade Anzahl von Schnittpunkten P liegt außerhalb Fall 3: ungerade Anzahl von Schnittpunkten P liegt innerhalb Sonderfall a: unendlich viele Schnittpunkte (schneidet Kante) Sonderfall b: Schnittpunkt = Eckpunkt Einfacher und Robuster als alle Sonderfälle abfangen: Bei Sonderfall neuen zufälligen Punkt Q wählen Statt gerade/ungerade zu zählen kann ein Bool je Schnittpunkt invertiert werden Laufzeit: Für Jede Kante muss überprüft werden, ob Schnittpunkte mit dem Strahl existieren O(n) Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 26
Polygone - Punkt-in-Polygon-Problem Algorithmus für konvexe Polygone(1) Konvex alle Innenwinkel <=180 Idee: Für alle Kanten (gegen den Uhrzeigersinn besucht) mittels CCW-Test überprüfen, ob Punkt P links davon liegt. Laufzeit O(n) Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 27
Polygone - Punkt-in-Polygon-Problem Algorithmus für konvexe Polygone(2) Binäre Suche nach einem Dreieck P0 Pa Pb, das P potentiell enthalten könnte, mit P0 als Fixpunkt. int a = 1, b = n - 1; while(b - a > 1) { int m = (a + b)/2; if(ccw(poly[0], poly[m], q) >= 0) { a = m; } else { b = m; } } Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 28
Polygone - Punkt-in-Polygon-Problem int a = 1, b = n - 1; while(b - a > 1) { int m = (a + b)/2; if(ccw(poly[0], poly[m], q) >= 0) { a = m; } else { b = m; } } Wenn P in gefundenem Dreieck (CCW) P liegt im Polygon Sonst P liegt nicht im Polygon Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 29
Polygone - Punkt-in-Polygon-Problem int a = 1, b = n - 1; while(b - a > 1) { int m = (a + b)/2; if(ccw(poly[0], poly[m], q) >= 0) { a = m; } else { b = m; } } Wenn P in gefundenem Dreieck (CCW) P liegt im Polygon Sonst P liegt nicht im Polygon Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 30
Polygone - Punkt-in-Polygon-Problem int a = 1, b = n - 1; while(b - a > 1) { int m = (a + b)/2; if(ccw(poly[0], poly[m], q) >= 0) { a = m; } else { b = m; } } Wenn P in gefundenem Dreieck (CCW) P liegt im Polygon Sonst P liegt nicht im Polygon Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 31
Polygone - Punkt-in-Polygon-Problem int a = 1, b = n - 1; while(b - a > 1) { int m = (a + b)/2; if(ccw(poly[0], poly[m], q) >= 0) { a = m; } else { b = m; } } Wenn P in gefundenem Dreieck (CCW) P liegt im Polygon Sonst P liegt nicht im Polygon Laufzeit: Binäre Suche O(log n) O(log n) Punkt in Dreieck per CCW O(3) Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 32
Polygone - Pick's Theorem Voraussetzungen Einfaches Gitterpolygon Ganzzahlige Eckpunktkoordinaten Aussage des Satz von Pick Der Flächeninhalt A eines solchen R Polygons beträgt: A = I + 1 2 wobei I := Anzahl der Gitterpunkte im Inneren des Polygons R := Anzahl der Gitterpunkte auf dem Rand des Polygons Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 33
Polygone - Pick's theorem Anwendungsfall: geg.: (ganzzahlige) Polygon-Eckpunkte, ges.: Anzahl der Gitterpunkte im Inneren R Umgestellte Formel : I = A + 1 2 A, die Fläche des Polygons kann aus den Eckpunkten per gaußscher Trapezformel n 2A= (y i+y i+1 )(x i x i+1 ) / / mit indizes modulo n i=1 R, die Anzahl der Gitterpunkte auf dem Rand, muss aus den Eckpunkten berechnet werden Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 34
Polygone - Pick's theorem Anzahl der Gitterpunkte auf dem Rand berechnen: Point poly [N]; //Polygon P int boundary_points() { int bp = 0; for(int i = 1; i < N+1; ++i) { bp += gcd( abs( poly[i%n].x - poly[i - 1].x ), abs( poly[i%n].y - poly[i - 1].y ) ); } return bp; } Lösung des Anwendungsfall int interior_points = area() - boundary_points() / 2 + 1; Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 35
Polygone - Konvexe Hülle Definition: Konvexe Hülle ( convex hull ) kleinstes konvexes Polygon P alle Punkte einer Punktemenge Q in P enthalten (inkl. Rand) Bsp.: Nagelbrett und Gummi Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 36
Polygone - Konvexe Hülle Aus AUD: Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 37
Polygone - Konvexe Hülle - Jarvis-March Jarvis-March (Gift-Wrapping-Algorithmus) (1) Wähle Extrempunkt p0 als Startpunkt S Teil der Hülle (2) Wiederhole (2.1) Füge Startpunkt S zum Polygon hinzu. (2.2) Wähle Endpunkt E aus Q. (2.3) Für alle restlichen Punkte qj aus Q mit 1< j < Q (2.3.1) Wenn (S == E) oder (qj rechts von der Geraden SE) (2.3.2) Setze E = qj; (2.4) Setze S = E; solange (E!= p0) Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 38 CCW-Test
Polygone - Konvexe Hülle - Jarvis-March Aufwand: Für jeden Punkt der konvexen Hülle müssen alle Punkte aus der Punktemenge Q durchlaufen werden Innere Schleife: O(n) Äußere Schleife: Sei h die Anzahl der Punkte in P O(h) Insgesamt: O(n*h) Allerdings im Worst Case: Alle Punkte aus Q gehören zur konvexen Hülle P h = n O(n²) Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 39
Polygone - Konvexe Hülle - Graham Scan Graham Scan (1) Wähle Extrempunkt als Startpunkt p0 Teil der Hülle z.b. mit kleinsten Wert der y-koordinate, bei Mehrdeutigkeit davon den der die größte x-koordinate hat. (2) Füge p0 zum Polygon P hinzu. (3) Bestimme für alle Punkte pi die Steigung der Geraden p0pi. (4) Sortiere die Punkte nach der Steigung absteigend in Liste (5) Entferne den obersten Punkt aus Liste und füge ihn zu P hinzu Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 40
Polygone - Konvexe Hülle - Graham Scan (6) Wiederhole solange Punkte in Liste (5.1) Nehme nächsten Punkt pi aus der Liste und zu P hinzu d.h. den mit der höchsten Steigung zum Startpunkt p0 Haben mehrere Punkte die gleiche Steigung, wähle von diesen den von p0 am weitesten entfernten Punkt. CCW-Test (5.2.1) Wenn Winkel (innenseitig) pn-1pnpi <180 füge pi zu P hinzu (5.2.2) Sonst (Winkel pn-1pnpi >=180 ) pn sei der zuletzt zu P hinzugefügte Punkt pn-1 der Vorletzte entferne solange zuvor hinzugefügte Punkte/Kanten, bis Winkel zwischen letzter Polygonkante und pi <180 Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 41
Polygone - Konvexe Hülle - Graham Scan Aufwand: Jeder Punkt wird höchstens einmal hinzugefügt und höchstens einmal wieder entfernt O(n) Sortieren der Steigungen/Winkel am Anfang O(n*log n) Insgesamt: O(n*log n) Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 42
Gliederung Grundlagen Vektoren Geradengleichungen Skalar- und Kreuzprodukt Abstand Punkt-Linie/-Segment CCW-Test Polygone Punkt-in-Polygon-Problem Pick's Theorem Konvexe Hülle Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 43
The End Fragen? Fragen! Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 44
Quellen Binomi Verlag : Formeln + Hilfen Höhere Mathematik AUD Foliensatz 15 vom WS 14/15 FAU ICPC Wiki Templates: Geometrie Wikipedia: Vektor, Gerade, Skalarprodukt, Kreuzprodukt, Polygon, Satz von Pick, Gaußsche Trapetzformel, Graham Scan, Jarvis March Hallo Welt Geometrie I Referat 2013 Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 45
Vielen Dank für eure Aufmerksamkeit! Vielen Dank für Eure Aufmerksamkeit! Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 46
Überschrift Farbschema (24) Hervorhebung (22) Besondere Akzentuierung Beispiel-Legende (20) Dritte Farbe bei Bedarf Dritte Ebene (20) Vierte Ebene (18) - Fünfte Ebene (18) Auch in Textfeld Arial Linien 2¼ pt Hallo Welt für Fortgeschritten Geometrie I Lukas Batz Folie 47