Softwarepraktikum WS 2003 Thema: Schnitt von Halbebenen. Markus Esch Jörg Jakoby Alexander Betz
|
|
- Catharina Dunkle
- vor 7 Jahren
- Abrufe
Transkript
1 Softwarepraktikum WS 2003 Thema: Schnitt von Halbebenen Markus Esch Jörg Jakoby Alexander Betz Universität Trier Prof. Stefan Näher Algorithms and Data Structures Group
2 Inhaltsverzeichnis I Einleitung...Seite 3 II Theoretische Grundlagen...Seite 4 III Implementierung...Seite 6 IV Probleme/Lösungen...Seite 9 V Bedienung...Seite 10 2
3 I Einleitung Im Rahmen unseres Softwarepraktikums im Hauptstudium befassten wir uns mit dem Thema "Schnitt von Halbebenen". Wir sollten ein Programm erstellen welches eine beliebige Menge von Halbebenen als Eingabe erhält und daraus den Schnitt berechnet und darstellt. Die Realisierung sollte in C++ unter Verwendung der LEDA Bibliothek erfolgen. 3
4 II Theoretische Grundlagen Eine Halbebene ist die Menge aller Punkte auf der gleichen Seite einer Geraden. Also definiert eine Gerade g eine obere und eine untere Halbebene. Der Schnitt mehrerer Halbebenen (HE) ist ein konvexes ( möglicherweise unbeschränktes ) Polygon, da der Schnitt konvexer Mengen wieder konvex ist. Ziel ist es die Folge der Ecken des Schnittpolygons zu berechnen. Dazu führen wir das Problem auf die Berechnung der konvexen Hülle einer geeigneten Punktmenge zurück. Das heißt, wir transformieren die definierenden Geraden in duale Punkte. Zu einer Geraden l : y= ax + b ist der duale Punkt D(l) = (a,b). Die duale Gerade zu dem Punkt p = (a,b) ist definiert als D(p) : y= - ax + b. Der Punkt p liegt oberhalb (auf/unterhalb) einer Geraden l genau dann wenn die Gerade D(p) oberhalb (auf/unterhalb) vom Punkt D(l) liegt. Wir unterteilen das ursprüngliche Problem in zwei Teilprobleme: Zum einen die Berechnung des Schnittes der oberen Halbebene und zum anderen der Berechnung des Schnittes der unteren Halbebene. Die Lösung des Gesamtproblems erhält man dann durch Schnitt der Ergebnismengen der beiden Teilprobleme. Wir beschränken uns hier auf die Beschreibung der Schnittberechnung der oberen Halbebene (S + ), da die Berechnung der unteren Halbebene (S - ) analog erfolgt. Algorithmus zur Berechnung von S + 1. Berechnung der dualen Punkte pi = D(li) für i = 1,..,m (m = # obere HE) 2. Berechnung der oberen konvexen Hülle H von {p 1,...,p m } (Wir verwenden hierzu den Algorithmus Graham's Scan (siehe unten)) 3. Seien e 1,...,e n die Kanten von H von links nach rechts. Nun berechnen wir die Folge der Geraden L 1,...,L n so, dass e i Teilmenge von L ist. 4. Berechnung und Ausgabe von D -1 (L 1 ),...,D -1 (L n ). Dieser Algorithmus hat die Laufzeit O(m*logm). Graham's Scan (zur Berechnung der oberen Hülle (untere Hülle analog)) Seien S = {q 1,...,q n } die Punkte deren obere konvexe Hülle berechnet werden soll. 4
5 1. Finde xy-lexikographisches Maximum a und Minimum b. 2. Ermittlung der Punkte oberhalb der Strecke ab. Dazu verwendet man das Orientation Prädikat (siehe unten). Also ergibt sich: S 1 = Menge der Punkte oberhalb von ab = {q S Orientation (a,b,q) = 0}; S 1 S 3. Initialisiere Stack mit qn,q1,q2 4. Schritt s s+1: while (! x t-1,x t,q s+1 right-turn) do pop(x t ) od push (q s+1 ) Orientation Prädikat Seien die Punkte p,q,r gegeben. Orientation (q,p,r) = sign [( qx-px)(ry-py)-(qy-py)(rx-px)] Ist Orientation (q,p,r) = -1, so liegt der Punkt r rechts der Geraden qp. Ist Orientation (q,p,r) = 0, so liegt der Punkt r auf der Geraden qp. Andernfalls liegt der Punkt r links der Geraden qp. Bestimmung des Durchschnitts von S + und S - Zur Bestimmung des Durchschnitts von S + und S - verwendet, sondern eine eigene Funktion geschrieben. haben wir keinen bekannten Algorithmus 5
6 III Implementierung Unser Programm besteht aus den beiden Dateien halbebenen.c und halbebenen.h. Die Datei halbebenen.h enthält die Funktionen upperhull, lowerhull und intersect. Als Eingabe erhalten upperhull und lowerhull jeweils eine Punktliste. Die Funktionen berechnen mit dem oben beschriebenen Graham's Scan Algorithmus die obere bzw. untere konvexe Hülle der Eingabepunkte und geben das Ergebnis als Punktliste zurück. Der Funktion intersect werden die Segmente des oberen und unteren Halbebenenschnittes übergeben. Die Segmente sind die Strecken zwischen den einzelnen Ecken des Schnittpolygons. Da die Polygone nach links und rechts ins Unendliche verlaufen, werden sie künstlich durch den linken bzw. rechten Fensterrand beschränkt. Außerdem werden noch die Eckpunkte des oberen und des unteren Schnittes übergeben. Die Funktion berechnet den Durchschnitt des oberen und des unteren Halbraumschnittes. Unsere selbstgeschriebene Funktion zur Berechnung des Durchschnitts von S + und S - bestimmt zunächst vier Punkte: "upleft", "upright", "lowleft" und "lowright". Wobei "upleft" der linke Endpunkt des am weitesten links liegenden Segmentes des oberen Schnittpolygons ist. Die anderen Punkte ergeben sich analog. Nun wird in einer doppelten Forschleife der Punkt "left", dies ist der linke Schnittpunkt von S + und S -, berechnet. (beachte: Dieser Schnittpunkt existiert unter Umständen nicht, nämlich dann wenn sich S + und S - außerhalb des Fensters schneiden). forall (currend_low, lower_segs){ forall (currend_up, upper_segs){ if (currend_low.intersection (currend_up, left)){ stop = true; break; } } if (stop) break; } 6
7 Die äußere Forschleife durchläuft die unteren Segmente von links, die innere Forschleife durchläuft die oberen Segmente von links. In der If - Abfrage wird geprüft ob sich die beiden Segmente schneiden. Ist dies der Fall, wird der Schnittpunkt in "left" gespeichert und die Schleifen werden verlassen. Analog wird der rechte Schnittpunkt berechnet. Beide Schnittpunkte können natürlich auch gleich sein, nämlich dann wenn der Schnittpunkt von S + und S - auf der linken oder rechten Seite außerhalb des Fensters liegt. Mit den folgenden Abfragen wird nun überprüft ob der Schnittpunkt von S + und S - auf der linken oder rechten Seite außerhalb des Fensters liegt: i) if(upleft.ycoord() < lowleft.ycoord()) ii) if(upright.ycoord() < lowright.ycoord()) Ergibt die erste Abfrage "true", so liegt der Schnittpunkt von S + und S - auf der linken Seite außerhalb des Fensters. Ist die zweite Abfrage "true" liegt der Schnittpunkt auf der rechten Seite außerhalb des Fensters. Nun können vier Fälle auftreten: 1) i) und ii) sind true: Dann besteht der Schnitt von S + und S - aus allen Punkten von S + und S -, sowie den Punkten upleft, upright, lowleft, lowright. 2) i) und ii) sind false: Dann besteht der Schnitt von S + und S - aus den Punkten "left" und "right", sowie den Eckpunkten p von S + und S - für deren y - Koordinate gilt: left.ycoord() < p.ycoord() < right.ycoord() 3) i )true und ii) false; Dann besteht der Schnitt von S + und S - aus den Punkten "upleft", "upright", "right" sowie den Eckpunkten von S + und S - für deren y - Koordinate gilt: p.ycoord() < right.ycoord() 4) i) false und ii) true: Analog zu Fall 3) Die Funktion liefert nun die entsprechend dieser Unterscheidung ermittelte Punktmenge zurück. 7
8 Die Datei halbebenen.c enthält die Methoden: calc_lower_average, calc_upper_average, dispay_time und main. Die Methode calc_upper_average bzw. calc_lower_average erhält als Eingabe eine Liste von Linien und eine Liste der dazugehörigen dualen Punkte. Daraus wird der obere bzw. untere Halbebenenschnitt errechnet. Dazu wird der in Teil II beschriebene Algorithmus zur Berechnung von S + bzw. S - verwendet. Die Spezialfälle, in denen weniger als drei Linien eingegeben wurden, werden abgefangen und gesondert behandelt, da der Graham's Scan Algorithmus mindestens drei Punkte als Eingabe benötigt. Wurde nur eine Gerade eingegeben, ist der Schnitt Trivialerweise die gesamte obere bzw. untere Halbebene. Bei zwei Geraden muss nur der Schnittpunkt zwischen diesen beiden Geraden berechnet werden. Dazu wird die LEDA Methode "bool intersection(line g, point& p)" verwendet. Zurückgegeben wird eine Liste der Eckpunkte des Schnittpolygons. Die display_time Methode erhält als Eingabe einen Pointer eines Windowobjektes und flusht die Eingabe des Objektes. In der main Methode wird ein Window Objekt der LEDA Bibliothek verwendet um ein Eingabefenster zu realisieren. In einer Forschleife wird ständig auf Mauseingaben geachtet, die dann entsprechend verarbeitet werden. Wird einer der Buttons betätigt, werden die entsprechenden oben beschriebenen Methoden zur Berechnung des Schnittes aufgerufen. Wird in das Eingabefenster geklickt, wird der default - Zweig der switch Anweisung ausgeführt. Darin werden die Koordinaten der eingegebenen Punkte eingelesen und in Listen gespeichert. Es gibt zwei Linienlisten: Die erste speichert die Geraden welche obere Halbebenen definieren, die zweite Liste speichert entsprechend die Geraden, welche untere Halbebenen definieren. Zu allen Geraden werden auch die dualen Punkte berechnet und in Listen gespeichert. Wurde eine vertikale Linie eingegeben, wird die gesamte Eingabe um ein Epsilon gedreht. 8
9 IV Probleme / Lösung Probleme traten insbesondere dadurch auf, da der obere bzw. untere Halbebenenschnitt unbegrenzt ist. Um dieses Problem zu lösen beschränkten wir die Schnittpolygone künstlich durch den Rand des Eingabefensters. Ein weiteres Problem entstand, wenn mehrere parallele Linien eingegeben wurden, die den gleichen Halbraum beschrieben. Da sich diese Linien nicht schneiden, funktionierten die verwendeten Algorithmen nicht. Aus diesem Grund haben wir diesen Fall gesondert behandelt. Die irrelevanten parallelen Linien wurden aus den Linienlisten gelöscht. Hierbei ist es einfach festzustellen welche Linien in diesem Sinne irrelevant sind. Im Fall von oberen Halbebenen ist nur die parallele Linie mit der höchsten y-koordinaten relevant. Im Fall der unteren Halbebenen ist dementsprechend die Linie mit der niedrigsten y-koordinate relevant. 9
10 V Bedienung Dies ist das GUI unseres Programms: Die Buttons Exit: Beendet das Programm Clear: Löscht den Inhalt des Eingabefensters S+: Berechnet den oberen Halbebenenschnitt und stellt ihn in dem Ein- /Ausgabefenster dar S-: Analog zu S+ Schnitt(S+,S-): Berechnet den Durchschnitt des oberen und unteren Halbebenenschnittes 10
11 Bedienung des Eingabefensters In dem Eingabefenster können beliebige Halbebenen definiert werden. Eine Halbebene wird jeweils durch drei Mausklicks beschrieben. Die ersten beiden eingegebenen Punkte definieren die Gerade, der dritte Punkt legt fest ob es sich um eine obere oder untere Halbebene handelt. Klickt man oberhalb der Gerade handelt es sich um eine obere Halbebene, die Gerade wird dann blau eingefärbt dargestellt. Untere Halbebenen werden durch einen Punkt unterhalb der Geraden festgelegt, diese Geraden werden sodann gelb dargestellt. 11
12 Dementsprechend wird der obere Halbebenenschnitt blau angezeigt, der untere Halbebenenschnitt gelb und der Durchschnitt von S + und S - grün. 12
Seminar. Algorithmische Geometrie
Seminar Algorithmische Geometrie WS 2000/2001 Thema: Konvexe Hülle Mirko Dennler 21439 Inhaltsverzeichnis Konvexe Hülle 1. Problemstellung 3 2. GRAHAMS SCAN 4-5 3. JARVIS' MARCH 5-6 4. QUICK HULL 6-7 5.
MehrGeradenarrangements und Dualität von Punkten und Geraden
Vorlesung Algorithmische Geometrie von Punkten und Geraden INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 12.06.2012 Dualitätsabbildung Bisher haben wir Dualität für planare
MehrGeradenarrangements und Dualität von Punkten und Geraden
Vorlesung Algorithmische Geometrie von Punkten und Geraden INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 12.06.2012 Dualitätsabbildung Bisher haben wir Dualität für planare
MehrGeradenarrangements und Dualität von Punkten und Geraden
Vorlesung Algorithmische Geometrie von Punkten und Geraden INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.06.2014 1 Dualitätsabbildung Bisher haben wir Dualität für planare
MehrGeometrische Algorithmen
Geometrische Algorithmen Thomas Röfer Motivation Scan-line-Prinzip Konvexe Hülle Distanzprobleme Voronoi-Diagramm Rückblick Manipulation von Mengen Vorrangwarteschlange Heap HeapSort swap(a, 0, 4) 1 5
MehrVoronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 03.06.2014 1 Das Postamt-Problem b(p, q) = {x 2 R 2 : xp = xq } p q h(p, q) h(q, p) = {x
MehrAlgorithmische Techniken für Geometrische Probleme
Algorithmische Techniken für Geometrische Probleme Berthold Vöcking 14. Juni 2007 Inhaltsverzeichnis 1 Die Sweepline-Technik 2 1.1 Schnitte orthogonaler Liniensegmente............... 2 1.2 Schnitte beliebiger
MehrVoronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 29.05.2011 Das Postamt-Problem b(p, q) = {x R 2 : xp = xq } p q h(p, q) h(q, p) = {x :
MehrGeometrie. Hallo Welt! für Fortgeschrittene Simon Kuhnle. 11. Juli
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
Mehr2.1. Konvexe Hülle in 2D
Wir wollen die konvexe Hülle einer Menge von Punkten P = {p 1,..., p n } in der Ebene R 2 bestimmen. y y x x Def. 21: Eine Teilmenge S der Ebene ist konvex gdw für jedes Paar das Liniensegment pq in S
MehrKlausur. 18. Juli 2008, 10:15-12:15 Uhr. Name:... Matrikelnummer:... Anzahl beschriebener Blätter (ohne Aufgabenblatt):... D(p) : Y = p x X + p y
GRUNDZÜGE DER ALGORITHMISCHEN GEOMETRIE Klausur 18. Juli 2008, 10:15-12:15 Uhr Name:................................... Matrikelnummer:................................... Anzahl beschriebener Blätter (ohne
MehrBereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.07.2012 Objekttypen in Bereichsabfragen y0 y0 y x x0 Bisher
MehrGeometrie I. Polygone. Dominik Huber Hallo Welt! für Fortgeschrittene. Informatik 2 Programmiersysteme Martensstraße Erlangen
Geometrie I Polygone Dominik Huber 28.5.2018 Hallo Welt! für Fortgeschrittene Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Gliederung Wiederholung Analytische Geometrie Abstand Punkt
MehrAlgorithmische Geometrie: Delaunay Triangulierung (Teil 2)
Algorithmische Geometrie: Delaunay Triangulierung (Teil 2) Nico Düvelmeyer WS 2009/2010, 2.2.2010 Überblick 1 Delaunay Triangulierungen 2 Berechnung der Delaunay Triangulierung Randomisiert inkrementeller
MehrBereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.07.2012 Objekttypen in Bereichsabfragen y0 y x x0 Bisher
MehrGeometrie 1. Christian Bay Christian Bay Geometrie / 46
Geometrie 1 Christian Bay 02.07.2013 Christian Bay Geometrie 1 02.07.2013 1 / 46 Inhaltsverzeichnis Grundlagen CCW Polygone Picks Theorem Konvexe Hülle Christian Bay Geometrie 1 02.07.2013 2 / 46 Geometrie
MehrAlgorithmische Geometrie: Lineare Optimierung (I)
Algorithmische Geometrie: Lineare Optimierung (I) Nico Düvelmeyer WS 2009/2010, 17.11.2009 Überblick 1 Geometrie von Gießformen 2 Durchschnitte von Halbebenen 3 Inkrementeller Algorithmus Überblick 1 Geometrie
MehrFüllen von Primitiven
Füllen von Primitiven Basisproblem der 2D-Graphik Anwendung: füllen beliebiger Flächen (Polygone, Freiformkurven) Darstellung von Buchstaben dicke Primitive (Linien, Kreise, Kurven), Teilproblem in der
MehrLiniensegmentschnitt. Doppelt verkettete Kantenliste. Überlagerung von 2 ebenen Graphen. Boolsche Operatoren für einfache Polygone (LEDA)
Liniensegmentschnitt Motivation, Überlagerung von Karten, Problemformulierung Ein einfaches Problem und dessen Lösung mit Hilfe des Sweep-Line Prinzips Output-sensitiver Liniensegmentschnittalgorithmus
MehrAlgorithmen II Vorlesung am
Algorithmen II Vorlesung am 03.12.2013 Algorithmische Geometrie: Schnitte von Strecken Sweep-Line INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg
MehrAlgorithmische Geometrie: Arrangements und
Algorithmische Geometrie: Arrangements und Dualität Nico Düvelmeyer WS 2009/2010, 19.1.2010 Überblick 1 Strahlenverfolgung und Diskrepanz 2 Dualität Dualitäts-Abbildung Transformation des Problems zur
MehrDualität + Quad-trees
Übung Algorithmische Geometrie Dualität + Quad-trees LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Andreas Gemsa 30.06.2011 Übersicht Übungsblatt 10 - Dualität
Mehr2.11 Clipping von Linien
2.11 Clipping von Linien Sollen Objekte in der Bildebene innerhalb eines Fensters dargestellt werden, so wird ein Verfahren benötigt, mit dem alle außerhalb des Fensters liegenden Objektteile abgeschnitten
MehrGeometrie I. Laura Lawniczak Hallo Welt -Seminar - LS 2
Geometrie I Laura Lawniczak 12.07.2017 Hallo Welt -Seminar - LS 2 Inhalt Grundlagen Abstandsberechnung Punkt-Gerade Punkt-Segment CCW Polygone Punkt in Polygon Pick s Theorem Konvexe Hülle 12.07.2017 Laura
MehrBereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 20.05.2014 Objekttypen in Bereichsabfragen y0 y0 y x x0 Bisher betrachteter Fall Eingabe:
MehrBoolesche Operationen in 2D
1 Boolesche Operationen in 2D Bevor die komplizierten Operationen mit 3 dimensionalen Körpern gebracht werden, soll das Prinzip am Beispiel von 2 Flächen demonstriert werden. Die 2D Flächen seien Polygone,
MehrAlgorithmische Geometrie 3. Schnitte von Liniensegmenten
Algorithmische Geometrie 3. Schnitte von Liniensegmenten JProf. Dr. Heike Leitte Computergraphik und Visualisierung Inhaltsverzeichnis 1. Einführung 2. Konvexe Hülle 3. Schnitte von Liniensegmenten 4.
MehrDatenstrukturen und Algorithmen
Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/36 Datenstrukturen und Algorithmen Vorlesung 20: (K33) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/
MehrInhaltsverzeichnis. 1 Hardwaregrundlagen
Inhaltsverzeichnis 1 Hardwaregrundlagen 2.4 2.5 Perspektivische 2.6 Parallele 2.7 Umsetzung der Zentralprojektion 2.8 Weitere 2.9 Koordinatensysteme, Frts. 2.10 Window to Viewport 2.11 Clipping 3 Repräsentation
MehrGeometrische Algorithmen Einige einfache Definitionen: Ist ein Punkt in einem Polygon? Punkt-in-Polygon-Problem. Das Punkt-in-Polygon-Problem
Geometrische Algorithmen Einige einfache Definitionen: Punkt: im n-dimensionalen Raum ist ein n-tupel (n Koordinaten) Gerade: definiert durch zwei beliebige Punkte auf ihr Strecke: definiert durch ihre
MehrGeometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen
Geometrie I Sebastian Redinger 01.07.2015 Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Gliederung Grundlagen CCW Polygone Picks Theorem Konvexe Hülle - Graham Scan - Jarvis March 2 Gliederung
MehrEs sei P ein einfaches Polygon in der Ebene; P habe n Ecken. Hilfssatz: Zu jedem einfachen Polygon mit mehr als 3 Ecken existiert eine Diagonale.
6. Polygontriangulierung: Wie bewacht man eine Kunstgalerie? 6.1. Grundlegendes zu Polygonen Es sei P ein einfaches Polygon in der Ebene; P habe n Ecken. Definition: Hilfssatz: Zu jedem einfachen Polygon
MehrSoftwarepraktikum: Programmieren mit C++ und LEDA. Visualisierung der Konvexe-Hülle Algorithmen Quickhull und Graham Scan
Softwarepraktikum: Programmieren mit C++ und LEDA Visualisierung der Konvexe-Hülle Algorithmen Quickhull und Graham Scan Verfasser: Uladizimir Bambalin Andreas Burkard Veranstalter: Matthias Baesken Aufgabenstellung:
MehrAlgorithmische Geometrie, SoSe 2005 Skriptmitschrift vom 29. April 2005
Algorithmische Geometrie, SoSe 2005 Skriptmitschrift vom 29. April 2005 Antonia Wittmers Igor Savchenko Konvexe Hüllen Inkrementeller Algorithmus für die konvexe Hülle Dabei heißt inkrementeller Algorithmus,
MehrHochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 3. Aufgabenblatt Funktionen - Unterprogramme
Ziel ist die Aufteilung eines Programms in Funktionen und Dateien Aufgabe 3: Diese Aufgabe ist die Weiterentwicklung von Aufgabe 2. Es ist ein Programm zu erstellen, in welchem der Anwender aus einer Anzahl
Mehr2.2. Schnitte von Liniensegmenten
Wir wenden uns nun dem Problem (2) aus 1 zu. F15 Aus zwei Mengen S1, S2 von Liniensegmenten möchten wir alle Schnittpunkte der Segmente aus S1 mit denen aus S2 ermitteln. Wir legen fest, dass sich zwei
MehrAlgorithmische Geometrie: Voronoi Diagramme (Teil 2)
Algorithmische Geometrie: Voronoi Diagramme (Teil 2) Nico Düvelmeyer WS 2009/2010, 12.1.2010 Überblick 1 Definition und grundlegende Eigenschaften (Wied.) 2 Bestimmung des Voronoi Diagramms Gleitebenenverfahren
MehrHallo Welt für Fortgeschrittene
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
Mehr2D-Clipping. Kapitel Clipping von Linien. y max. y min x min. x max
Kapitel 5 2D-Clipping Ziel: Nur den Teil einer Szene darstellen, der innerhalb eines Fensters sichtbar ist. y max y min x min x max Abbildung 5.1: Clip-Fenster 5.1 Clipping von Linien Zu einer Menge von
Mehr(1) Geometrie. Vorlesung Computergraphik 3 S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU
(1) Geometrie Vorlesung Computergraphik 3 S. Müller KOBLENZ LANDAU KOBLENZ LANDAU Organisatorisches Vorlesung CG 2+3 Die Veranstaltung besteht aus 2 Teilen, wobei in der Mitte und am Ende eine Klausur
Mehr9 Arrangements und Dualität
9 Arrangements und Dualität 9.1 Strahlenverfolgung und Diskrepanz Wir betrachten eine Anwendung aus der Computergraphik: realistische Bilder von 3D- Szenen lassen sich durch ray tracing berechnen. Für
MehrÜbung 04 Mehrkörper Keplerproblem
Übung 04 Mehrkörper Keplerproblem 1 1 Lösung 1.1 Skizzieren des Algorithmus Aufgabe 1 1. Erstellen Sie skizzenhaft eine Möglichkeit der Berechnung aller Kräfte einer beliebigen Anzahl von Himmelskörpern.
Mehr7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle
In Anwendungen ist es oft interessant zu wissen, ob man überhaupt von einem Knoten v zu einem Knoten w gelangen kann, ganz gleich wie lang der Weg auch ist. Gegeben sei dabei ein gerichteter Graph G =
MehrIntensivübung zu Algorithmen und Datenstrukturen
Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche
Mehr2 Teil 2: Nassi-Schneiderman
2 Teil 2: Nassi-Schneiderman Wie kann man Nassi-Schneiderman in einer objektorientierten Sprache verwenden? Jedes Objekt besitzt Methoden, welche die Attribute des Objektes verändern. Das Verhalten der
MehrEinführung & Konvexe Hülle
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 12.04.2011 AlgoGeom-Team Dozent Martin Nöllenburg noellenburg@kit.edu
MehrPunktlokalisation 1. Trapez-Zerlegungen. 2. Eine Suchstruktur. 3. Randomisierter, inkrementeller Algorithmus zur Konstruktion der Trapez-Zerlegung
Punktlokalisation 1. Trapez-Zerlegungen 2. Eine Suchstruktur 3. Randomisierter, inkrementeller Algorithmus zur Konstruktion der Trapez-Zerlegung 4. Analyse Punktlokalisation Einteilung in Streifen Anfragezeit:
MehrAbschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do
Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do 1. (6 P) Schreiben Sie die folgenden mathematischen Ausdrücke als korrekte C++- Anweisungen (Variablendeklarationen,
MehrDas Divide - and - Conquer Prinzip. Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt
Divide and Conquer Das Divide - and - Conquer Prinzip Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt 2 Quicksort: Sortieren durch Teilen
MehrParallele Algorithmen in der Bildverarbeitung
Seminar über Algorithmen - SoSe 2009 Parallele Algorithmen in der Bildverarbeitung von Christopher Keiner 1 Allgemeines 1.1 Einleitung Parallele Algorithmen gewinnen immer stärker an Bedeutung. Es existieren
MehrAlgorithmische Geometrie Mitschrift /
Einleitung Algorithmische Geometrie beschäftigt sich mit dem Entwurf und der Analyse von effizienten Algorithmen für geometrische Probleme. Eingabedaten sind dabei geometrische Objekte, wie - Punkte -
MehrVorlesung Algorithmische Geometrie Konvexe Hülle in R 3
Vorlesung Algorithmische Geometrie Konvexe Hülle in R 3 INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 15.07.2014 1 Wdh: Konvexe Hülle in R 2 (VL1) Def: Eine Menge S R 2
MehrEinführung & Konvexe Hülle
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.04.2012 AlgoGeom-Team Dozent Martin Nöllenburg noellenburg@kit.edu
MehrAlgorithmische Geometrie
Algorithmische Geometrie Martin Peternell TU Wien 31. Fortbildungstagung für Geometrie 2010, Strobl 1 Themen der Algorithmische Geometrie Entwurf von Algorithmen für geometrische Fragestellungen betreffend
MehrComputergraphik 1 LU ( ) Ausarbeitung Abgabe 2
Computergraphik 1 LU (186.095) Ausarbeitung Abgabe 2 Beispiel 4... 2 CG1Object... 2 if (dobackfaceeculling && numvertexindec >=3)... 2 CG1ScanfilledPolygon CG1Polygon... 2... 2... 3 buildactivelist (int
MehrComputergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2
Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Neben vector ist list die zweite wichtige Containerklasse. Um unsere Kenntnisse von Containerklassen zu erweitern,
MehrProgrammablaufpläne. Vorgehen zur Erstellung eines lauffähigen C-Programms
Programmablaufpläne Vorgehen zur Erstellung eines lauffähigen C-Programms Dieser Leitfaden soll eine Einführung in das Erstellen von Programmablaufplänen (kurz: PAP) geben. PAP erleichtern das Erstellen
MehrWas bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone
Was bisher geschah Motivation, Beispiele geometrische Objekte im R 2 : Punkt, Gerade, Halbebene, Strecke, Polygon, ebene Zerlegung in Regionen (planare Graphen) maschinelle Repräsentation geometrischer
MehrInformatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 7, Fallstudie Point-In-Polygon Algorithmus Diskretisierung: Linien zeichnen
Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 7, 11.4.2016 Fallstudie Point-In-Polygon Algorithmus Diskretisierung: Linien zeichnen Fallstudie: Point-In-Polygon Algorithmus Annahme: abgegrenztes
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)
MehrPolygon Triangulation. robot.scr. "Art Gallery Problem" Sichtbarkeitspolygon. Algorithmische Geometrie - SS 99 - Th. Ottmann
Polygon Triangulation "Art Gallery Problem" Sichtbarkeitspolygon robot.scr Triangulation simpler Polygone P w v u Satz: Triangulation existiert und besitzt n-2 Dreiecke Bew.: Induktion über n> 3. Suche
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrGeometrie 2. Julian Fischer Julian Fischer Geometrie / 30
Geometrie 2 Julian Fischer 6.7.2009 Julian Fischer Geometrie 2 6.7.2009 1 / 30 Themen 1 Bereichssuche und kd-bäume 1 Bereichssuche 2 kd-bäume 2 Divide and Conquer 1 Closest pair 2 Beispiel: Points (IOI
MehrHallo Welt! für Fortgeschrittene. Geometrie I. Philipp Erhardt. 19. Juli Philipp Erhardt Geometrie I 19. Juli / 27
Hallo Welt! für Fortgeschrittene Geometrie I Philipp Erhardt 19. Juli 2011 Philipp Erhardt Geometrie I 19. Juli 2011 1 / 27 Gliederung 1 Grundlagen 2 CCW 3 Punkt-in-Polygon 4 Pick s Theorem 5 Konvexe Hülle
MehrEs ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe
MehrEinführung & Konvexe Hülle
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.04.2012 AlgoGeom-Team Dozent Martin Nöllenburg noellenburg@kit.edu
Mehrif ( Logischer Operator ) { } else { Anweisungen false
if ( Logischer Operator ) { Anweisungen true else { Anweisungen false Bedingte Anweisungen Operatoren verknüpfen Variable zu neuen Ausdrücken, wir unterscheiden Arithmetische Operatoren Berechnung von
MehrGeometrie 1. Roman Sommer. Informatik 2 Programmiersysteme Martensstraße Erlangen
Geometrie 1 Roman Sommer Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Grundlagen Punkte, Vektoren Schreibweise: Skalar: Vektor: Komponente: Punkt: (spitzer) Winkel zw. zwei Vektoren:
MehrM. Pester 29. Ein konvexes d-polytop ist eine begrenzte d-dimensionale polyedrale Menge. (d = 3 Polyeder, d = 2 Polygon)
M. Pester 29 6 Konvexe Hülle 6.1 Begriffe Per Definition ist die konvexe Hülle für eine Menge S von lich vielen Punkten die kleinste konvexe Menge, die S enthölt (z.b. in der Ebene durch ein umspannes
MehrAlgorithmische Bioinformatik 1
Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen
MehrAlgorithmische Geometrie: Schnittpunkte von Strecken
Algorithmische Geometrie: Schnittpunkte von Strecken Nico Düvelmeyer WS 2009/2010, 3.11.2009 3 Phasen im Algorithmenentwurf 1. Konzentration auf das Hauptproblem 2. Verallgemeinerung auf entartete Eingaben
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Map Labeling INSTITUT FÜR THEORETISCHE INFORMATIK 0 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
MehrAlgorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016
Algorithmen und Datenstrukturen 2 Übung 1 Stefan Florian Palkovits, BSc 0926364 e0926364@student.tuwien.ac.at 12. Juni 2016 Aufgabe 1: Es existiert eine Reduktion von Problem A auf Problem B in O(n 3 +
MehrNachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Erklären
MehrNachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 4 Pkt.) Gegeben
Mehr5. Elementare Befehle und Struktogramme
5. Elementare Befehle und Struktogramme Programmablauf Beschreibung des Programmablaufs mittel grafischer Symbole Beispiel : Flussdiagramme ja nein Besser : Struktogramme Dr. Norbert Spangler / Grundlagen
MehrKryptographische Protokolle
Kryptographische Protokolle Lerneinheit 2: Generierung von Primzahlen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Wintersemester 2018/2019 15.11.2018 Einleitung Einleitung Diese Lerneinheit
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 25
Kapitel 9 Schleifen Seite 1 von 25 Schleifen - Schleifen werden zur wiederholten Ausführung von Anweisungen verwendet. - Es werden drei Arten von Schleifen unterschieden: o for -Schleife o while -Schleife
MehrAlgorithmische Geometrie: Abfragen Orthogonaler Bereiche
Algorithmische Geometrie: Abfragen Orthogonaler Bereiche Nico Düvelmeyer WS 2009/2010, 8.12.2009 Überblick 1 1-dimensionale Bereichsabfragen 2 Kd-Baum Struktur Aufbau Abfrage mit dem Kd-Baum 3 Range-Baum
MehrÜbersicht über Informatik und Softwaresystemtechnik WS 99/00, Prof. Dr. Andreas Schwill
Konvexe Hülle Hierbei handelt es sich um ein klassisches Problem aus der Algorithmischen Geometrie, dem Teilgebiet der Informatik, in dem man für geometrische Probleme effiziente Algorithmen bestimmt.
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollstrukturen - 1 - Anweisung Anweisung Zuweisung Methodenaufruf
MehrEffiziente Algorithmen 2
Effiziente Algorithmen 2 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen
MehrLösung zu Aufgabe 1 Blatt 9
Lösung zu Aufgabe 1 Blatt 9 Wir befinden uns in einem arbitragefreien 1-Perioden-Trinomialmodell. Die risikofreie Anlage β ist gegeben durch β 0 = 1 und β 1 = 1 + ρ mit ρ > 1. Die risikobehaftete Anlage
MehrKontrollfragen Mikrocontroller Programmiersprache C H1203 Felix Rohrer
Block 1 1. Welcher Wert hat w? int w = 034; 28 (Dezimal) 034 wird als Octal interpretiert 34oct = 28dec 2. Wie lauten die Ergebnisse? unsigned int a = 3, b = 5, c = 7; unsigned int x, y, z; x = a == 3;
MehrGeometrie I. Tobias Langer Tobias Langer Geometrie I / 59
Geometrie I Tobias Langer 02.07.2010 Tobias Langer Geometrie I 02.07.2010 1 / 59 1 Schulgeometrie Punkte & Geraden Dreieck Kreis Polygon 2 Schnitt von Geraden und Strecken 3 Punkt in Polygon Tobias Langer
MehrHochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme
Ziele sind das Arbeiten mit Funktionen, sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 4: Diese Aufgabe basiert auf der Aufgabe 3.
MehrKARL-FRANZENS-UNIVERSITÄT GRAZ. Seminar aus Reiner Mathematik. Die Museumswächter. Krupic Mustafa Wintersemester 2013/14
KARL-FRANZENS-UNIVERSITÄT GRAZ Seminar aus Reiner Mathematik Die Museumswächter Krupic Mustafa Wintersemester 2013/14 Inhaltsverzeichnis 2 Inhaltsverzeichnis 1 Einleitung 3 2 Museumswächter-Satz 6 2.1
MehrLineares Programmieren
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 03.05.2011 Nachtrag Art Gallery Problem Lässt sich der Triangulierungs-Algorithmus
Mehr3. Übungsblatt zu Algorithmen I im SoSe 2017
Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799
MehrAusleuchtung/Überwachung von polygonalen Flächen
1 Ausleuchtung/Überwachung von polygonalen Flächen 2 1. Beschreibung der Aufgabenstellung 3 Gegeben ist der Grundriss eines Raumes. 4 In den Ecken des Raumes sollen Geräte platziert werden, die zusammen
MehrAlgorithmische Bioinformatik 1
Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen
MehrAlgorithmische Geometrie Thema: Konvexe Hüllen
Algorithmische Geometrie Thema: Konvexe Hüllen Christoph Hermes Hermes@hausmilbe.de 17. Juni 2003 Ausblick auf den Vortrag 1/32 1 Was sind konvexe Hüllen? Wozu braucht man sie? Wie kann man sie berechnen
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung
MehrSchachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A
2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,
MehrAlgorithmische Geometrie: Rest Lokalisierung von Punkten; Voronoi Diagramme (1/2)
Algorithmische Geometrie: Rest Lokalisierung von Punkten; Voronoi Diagramme (1/2) Nico Düvelmeyer WS 2009/2010, 22.12.2009 Überblick 1 Fertigstellung Kapitel 7 2 Definition Voronoi Diagramm 3 Grundlegende
MehrProgrammieren in C (Übungsblatt 1)
21.02.2017 Aufgabe 1: Programmausführung Programmieren in C (Übungsblatt 1) a) Bitte geben Sie den folgenden Programmcode ein: /* Beispiel fuer Textausgaben */ #include int main() { printf("c-programmierung
MehrGeometrische Algorithmen Voronoi-Diagramme. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Voronoi-Diagramme
Folie 1 von 32 Geometrische Algorithmen Voronoi-Diagramme Folie 2 von 32 Voronoi-Diagramme Übersicht Problemstellung Animation zur Konstruktion eines Voronoi-Diagramms Definition, Eigenschaften eines Voronoi-Diagramms
Mehr