geoinformation.net Folie 1 von 51 Geometrische Algorithmen Punkt-in-Polygon-Suche Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Punkt-in-Polygon-Suche Übersicht l l Praxisbeispiel/Problemstellung Zählen von Schnittpunkten Schnitt einer Halbgerade mit der Masche Aufwandsbetrachtung Streifenkarte Vorgehen und Eigenschaften Speicherung der Daten / Suche in den Daten Aufwandsbetrachtung Trapezkarte ¡ ¡ l ¡ ¡ ¡ l Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 2 von 51 geoinformation.net Praxisbeispiel Rollover am Bildschirm Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 3 von 51 geoinformation.net Lösungsansatz 1 Zählen Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 4 von 51 geoinformation.net Folie 5 von 51 Problemstellung 1 In welcher Masche liegt Punkt P? Allgemein: Gegeben ist eine räumliche Datenbank und eine Klasse typischer Anfragen Gesucht wird eine Datenstruktur, die einen effizienten Algorithmus unterstützt l l Konkret: Gegeben ist eine Landkarte S und ein Punkt P Gesucht wird die Masche M, die den Punkt P beinhaltet l l Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 6 von 51 Lösungsansatz 1 Halbgerade am Punkt anlegen Aus dem >>Jordanschen Kurvensatz folgt: l l l 1x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Konstruiere ausgehend von P eine Halbgerade in beliebiger Richtung P liegt außerhalb des begrenzten Gebietes, wenn eine gerade Anzahl von Schnittpunkten entsteht. P liegt innerhalb des begrenzten Gebietes, wenn eine ungerade Anzahl von Schnittpunkten entsteht. geoinformation.net Folie 7 von 51 Theorem Jordanscher Kurvensatz Nach Jordan: l l Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Eine geschlossene Jordankurve S zerlegt die Ebene in zwei zusammenhängende Gebiete, von denen genau eines nicht beschränkt ist. Zwei Punkte der Ebene können genau dann durch eine Jordankurve J verbunden werden, die S nicht schneidet, wenn sie entweder beide im Inneren oder beide im Äußeren von S liegen. geoinformation.net Folie 8 von 51 Lösungsansatz 1 Suchaufwand Das Verfahren muss für jede Masche iteriert werden: l l Aufwand für ein Polygon mit n Kanten: O(n) Aufwand bei m Polygonen: O(m*n) Der Aufwand für eine Suche nach dem Jordanschen Kurvensatz beträgt O(m*n). Mit welchem Verfahren kann der Suchaufwand verringert werden? Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 9 von 51 Praxisbeispiel Bundesrepublik Deutschland In der Praxis kann die Anzahl der Maschen und Kanten sehr schnell hoch werden: Bundesrepublik Deutschland: 1 Masche Bundesländer: 16 Maschen mit 17.700 Kanten Kreise: 440 Maschen mit 75.000 Kanten Gemeinden: 13.900 Maschen mit 300.000 Kanten Angaben für den Massstab 1:500.000 Quelle: ArcDeutschland 500, ESRI Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 10 von 51 Vorgehensweise 2 Konstruktion eines Index Der Aufbau eines Index kostet Zeit. Diese amortisiert sich jedoch bei der Abfrage. Allgemein: Gegeben: Räumliche Datenbank und eine Klasse typischer Anfragen Gesucht: Datenstruktur, die einen möglichst schnellen Algorithmus unterstützt Konkret: Gegeben: Landkarte S und ein Punkt P Gesucht: Index für die schnelle Identifikation der zugeordneten Masche M . l l l l Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Lösungsansatz 2 Zerschneiden Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 11 von 51 geoinformation.net Folie 12 von 51 Lösungsansatz 2 Konstruktion der Streifenkarte S' Vorgehen: l Konstruktion einer Karte S' durch Aufteilung der Landkarte mit vertikalen Geraden durch alle Knoten. Folge: l 2x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche In allen Schnittpunkten der Geraden mit den Kanten entstehen neue Knoten. geoinformation.net Folie 13 von 51 Lösungsansatz 2 Eigenschaften von S' S' hat folgende Eigenschaften: l l 2x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Die Maschen sind in Trapeze (ggf. Dreiecke) zerlegt. Kanten sind in Teilkanten zerlegt. geoinformation.net Folie 14 von 51 Lösungsansatz 2 Vorteil von S' Die Karte erhält eine Struktur, die wir ausnutzen können: l l 2x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Die Streifen sind in x-Richtung angeordnet. Innerhalb eines Streifens sind die Teilkanten und damit die Trapeze in y-Richtung angeordnet. geoinformation.net Folie 15 von 51 Lösungsansatz II Speicherung der Daten Die Datenspeicherung erfolgt in Arrays: l l Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Ein Array enthält die x-Koordinaten der Streifen. Jeder Streifen enthält ein Array der y-Koordinaten der Teilkanten. geoinformation.net Folie 16 von 51 Lösungsansatz 2 Intervall-Bisektion Zwei schnelle binäre Suchalgorithmen werden für die Suche nach der Masche hintereinander geschaltet: l l Binäre Suche im Array der xKoordinaten nach dem Streifen, der P enthält. Binäre Suche nach dem zugehörigen Trapez in diesem Streifen. Sobald die Teilkante direkt >>unterhalb/ oberhalb von P gefunden ist, ist die gesuchte Masche gefunden. 3x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 17 von 51 Bemerkungen Eigenschaften der Maschen Es gilt: l l l Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Jeder Abschnitt eines Streifens liegt genau in einer Masche. Jede Kante lässt sich einer in yRichtung folgenden Masche zuordnen. Die Fläche"Außen" muss ebenfalls als Masche angesehen werden. geoinformation.net Folie 18 von 51 Lösungsansatz 2 Suchaufwand Der Suchaufwand dieses Lösungsansatzes entsteht durch: l l Binäre Suche im Array der x-Koordinaten nach dem Streifen, der P enthält: Binäre Suche in einem Array mit maximaler Länge 2n: O(log n) Binäre Suche nach der Lage von P zu den Teilkanten im Array der y-Koordinaten: Binäre Suche in einem Array mit maximaler Länge n: O(log n) Der Aufwand für die binäre Suche in einer Streifenkarte beträgt O(log n). Im >>Vergleich zum Lösungsansatz 1 hat sich der Suchaufwand verbessert. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 19 von 51 Vergleich Suchaufwand der zwei Lösungsansätze Der Aufwand für eine Suche nach dem Jordanschen Kurvensatz beträgt O(n). Der Suchaufwand für die binäre Suche in einer Streifenkarte beträgt O(log n). Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 20 von 51 Lösungsansatz 2 Speicherbedarf Es entsteht eine hohe Speicheranforderung durch: l l die sortierte Speicherung der x-Koordinaten der vertikalen Geraden in einem Array: Array der x-Koordinaten: O(n) die sortierte Speicherung der y-Koordinaten der Teilkanten jedes Streifens von oben nach unten in einem Array: Array der y-Koordinaten: O(n) Die Speicheranforderung für die Daten dieses Lösungsansatzes beträgt O(n²) Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 21 von 51 Lösungsansatz 2 Worst Case Speicherbedarf Der Worst Case tritt tatsächlich auf: l In ungünstigen Fällen erfolgt mit diesem Verfahren eine sehr hohe Knoten- und Teilkantenbildung und damit ein hohes Datenaufkommen. Wie kann der Speicherbedarf verringert werden? 1x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 22 von 51 Problemstellung 3 Verringerung des Speicherbedarfs Zwischenresümee: l l Die Zerlegung in Streifen führt zu einer schnellen Suche. Allerdings ist der Speicherbedarf unvertretbar hoch. Problem: l Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Gibt es eine bessere Zerlegung, die die Laufzeit erhält und den Speicherbedarf verringert? geoinformation.net Lösungsansatz 3 Tranchieren Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 23 von 51 geoinformation.net Folie 24 von 51 Lösungsansatz 3 Vereinfachung des Beispiels Um im Folgenden die Übersicht zu wahren, wird die Beispielkarte geändert: l l 2x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Löschen zweier Knoten: Ersetzen von drei Kanten durch eine Kante Verschieben zweier Knoten geoinformation.net Folie 25 von 51 Lösungsansatz 3 Vereinfachende Annahmen l l Umschließen der Karte durch ein achsenparalleles Rechteck R: Vermeidung der unbeschränkte Masche "Außen" Es existieren keine Knoten mit gleicher x-Koordinate: Scherung oder Rotation um den Winkel e um den Ursprung e ist sehr klein wodurch die Topologie erhalten bleibt Später wird gezeigt, dass diese Transformation rein virtuell ist ¡ ¡ 2x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 26 von 51 Lösungsansatz 3 Konstruktion der Trapezkarte T(S) Vorgehen: l 2x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Bei der Salamikarte werden alle Kanten der Landkarte durchschnitten. Beim Tranchieren endet der Schnitt an der Kante. Dadurch werden nur die direkt betroffenen Kanten zerlegt. geoinformation.net Folie 27 von 51 Lösungsansatz 3 Konstruktionsprinzip Trapezkarte Gegeben ist eine Landkarte S, umschlossen von einem Rechteck R; es existieren keine Knoten mit gleicher x-Koordinate Konstruiere für jeden Knoten aus S eine obere und eine untere vertikale Extension (Linie); diese Linien enden am Schnittpunkt mit der nächsten Kante aus S oder an R l Die Trapezkarte T(S) ist eine Zerlegung, bestehend aus der Landkarte S, dem Rechteck R und den vertikalen Extensionen T(S) besteht aus disjunkten Trapezen (Dreiecken), die von (höchstens) vier Seiten (Kanten) begrenzt werden: Ein oder zwei vertikale Seiten, gebildet aus den Extensionen Genau zwei nicht-vertikale Seiten, gebildet aus Segmenten von Kanten l ¡ ¡ Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 28 von 51 Lösungsansatz 3 Eigenschaften von T(S) 5 Fälle für die vertikalen Kanten (in der Abbildung die linken Kanten): 1. Die Kante entartet zu einem Punkt 2. Die untere vertikale Erweiterung trifft auf eine Kante von S 3. Die obere vertikale Erweiterung trifft auf eine Kante von S 4. Die Kante besteht aus oberer und unterer Extension 5. Die Kante besteht aus einer Kante des Rechtecks R (genau zwei Trapeze) 5x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 29 von 51 Lösungsansatz 3 Bezeichnungen Ein Trapez ist durch vier Elemente eindeutig festgelegt: top( ) bottom( ) leftp( ): Linker Endpunkt von top( ) oder bottom( ) oder rechter Knoten einer dritten Kante (linke Kante eines Trapezes besteht aus oberer und unterer Extension) oder einer der linken Knoten von R (Trapez ganz links rightp( ): analog zu leftp( ) l l l l Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Lösungsansatz 3 Komplexität der Trapezkarte Satz 1: Eine Trapezkarte T(S) einer Landkarte S mit n Kanten enthält höchstens: a) 6n + 4 Knoten und b) 3n + 1 Trapeze. Beweis: a) >>Addition der vorkommenden Knoten b) mit Eulers Formel aus a) (als Übung) Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 30 von 51 geoinformation.net Lösungsansatz 3 Beweis zu Satz 1a Satz 1: Eine Trapezkarte T(S) einer Landkarte S mit n Kanten enthält höchstens: (a) 6n + 4 Knoten Beweis: Ein Knoten der Trapezkarte ist entweder 4 ein Eckpunkt von R 2·n ein Knoten der Karte S 2·2·n Endknoten einer Extension (n Kanten 2 · n Knoten 2 · 2 · n Endknoten) Insgesamt: 6n + 4 l l l Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 31 von 51 geoinformation.net Folie 32 von 51 Lösungsansatz 3 Adjazenz von Trapezen Zwei Trapeze und ' heißen adjazent, wenn sie sich entlang einer vertikalen Linie berühren. Es gilt entweder: top( ) = top( ') oder: bottom( ) = bottom( ') Ein Trapez kann höchstens zu vier Trapezen adjazent sein. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 33 von 51 Lösungsansatz 3 Datenstruktur für T(S) l l Möglich wäre eine doppelt verkettete Kantenliste Wegen der einfachen Struktur der Trapeze bietet sich folgende Alternative an: Elemente für Knoten (mit Koordinaten) von S (leftp( ), rightp( )) Elemente für Kanten (mit Referenzen auf Knoten) von S (top( ), bottom( )) Elemente für Trapeze von T(S) mit Referenzen auf: leftp( ) rightp( ) top( ) bottom( ) alle (maximal 4) adjazenten Trapeze ¡ ¡ ¡ n n n n n l Beachte: Die Geometrie der Trapeze ist nur implizit, kann aber in konstanter Zeit rekonstruiert werden Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 34 von 51 Lösungsansatz 3 Konstruktion und Suche l Probleme: Konstruktion der Trapezkarte T(S) Unterstützung der Suche in einer Trapezkarte ¡ ¡ l Idee für das weitere Vorgehen: Unterstützung der Suche durch eine Art „binärer Suchbaum“ D mit 2 Arten von Elementen X-Elemente für Knoten: Links oder Rechts? Y-Elemente für Kanten: Oben oder Unten? Trapezkarte und „Baum“ werden simultan konstruiert ¡ n n ¡ Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Lösungsansatz 3 Beispiel für T(S) und D Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 35 von 51 geoinformation.net Lösungsansatz 3 Aufbau des Beispiels 33x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 36 von 51 geoinformation.net Folie 37 von 51 Lösungsansatz 3 Zum Algorithmus l l l l l l l T(S) und D werden simultan konstruiert Die Suchstrukur wird schrittweise aufgebaut: Nach "Einfügen" eines Elements in der Karte S erfolgt ein Update von Suchstruktur und Trapezkarte D ist kein Baum, sondern ein „DAG“, ein „directed acyclic graph“, ein gerichteter azyklischer Graph Dieser DAG ist zusammenhängend, hat genau eine Wurzel und genau ein Blatt für jedes Trapez von T(S) In der berechneten Suchstruktur referenzieren sich die Blätter von D und die Trapeze von T(S) gegenseitig Wie stets hängt die Tiefe (=Güte) des Baumes von der Reihenfolge der Bearbeitung der Segmente ab Idee: Zufällige Permutation der Segmente von S Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 38 von 51 Lösungsansatz 3 Pseudocode: Aufbau von T(S) & D Input: Eine Landkarte S mit n Kanten Output:Eine Trapezkarte T(S) und eine Suchstruktur D für T(S) in einem Rechteck R 1. Konstruiere ein umschließendes Rechteck R 2. Berechne eine Permutation s , s ,...,s der Kanten von S 1 2 n 3. for i = 1 to n 4. 5. 6. do Finde die Trapeze 0,..., k in T(Si-1), die von s i geschnitten werden Lösche 0,..., k aus T(Si-1) und ersetze sie durch neue Trapeze Entferne die Elemente für 0,..., k aus Di-1 und füge neue innere Knoten und Blätter an Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 39 von 51 Lösungsansatz 3 Übergang von i-1 zu i Offene Frage: Wie finden wir l l l 0 ,..., k? Konstruktion von T(S i ) und Di mit S i = {s1, ..., si} unter Verwendung von T(Si-1) und Di-1 "Schleifeninvariante": T(Si-1) ist eine Trapezkarte und D(Si-1) ist eine Suchstruktur für diese Trapezkarte Der Unterschied zwischen "i - 1" und " i " betrifft genau die Trapeze in T(S i-1), die von s i geschnitten werden Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 40 von 51 Lösungsansatz 3 Pseudocode: Finde Trapeze Input: Das Segment si , T(Si-1) und D(Si-1) Output: Die Trapeze 0, ..., k, die von s i geschnitten werden. 1. Seien p und q linker und rechter Knoten von s i i i 2. Punkt-in-Polygon für pi in D i-1: Finde 0 3. j = 0; 4. while qi liegt rechts von rightp( j) 5. do if rightp( j) liegt oberhalb von s i 6. then j+1 ist der untere rechte Nachbar von 7. else j+1 8. j = j + 1 9. return 0, ..., ist der obere rechte Nachbar von k Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche j j Wir erhalten zwei Fälle geoinformation.net Lösungsansatz 3 Trapezfolge Fall 1 Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 41 von 51 geoinformation.net Lösungsansatz 3 Beispiel zum Fall 1 15x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 42 von 51 geoinformation.net Lösungsansatz 3 Trapezfolge Fall 2 Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 43 von 51 geoinformation.net Lösungsansatz 3 Beispiel für Fall 2 21x Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 44 von 51 geoinformation.net Folie 45 von 51 Lösungsansatz 3 Effizienz I - Erwartungswerte Der oben beschriebene Algorithmus hat folgende Erwartungswerte (gemittelt über alle Permutationen von n Segmenten): l l l Konstruktion von T(S) und Aufbau von D(S): O(n log n) Speicherplatz von D(S): O(n) Punkt-in-Polygon-Suche mittels D(S): O(log n) Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 46 von 51 Lösungsansatz 3 Effizienz II - Bemerkungen l l l l Der Erwartungswert bezieht sich auf die Menge aller Permutationen Pech bei der Permutation kann zum Worst – Case O(n) für die Suche und zu entsprechender Tiefe der Suchstruktur führen Abhilfe durch Stop-Loss-Punkt setzen: Brich ab, falls D(S) zu tief wird, und fange neu an mit einer neuen Permutation Differenz zum Worst-Case O(n) für die Suche und O(n 2) für die Konstruktion kann beliebig klein gemacht werden, ohne daß man von der O(n log n) – Laufzeit für die Konstruktion von D(S) sehr stark abweicht Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 47 von 51 Lösungsansatz 3 Sonderfallbetrachtung I Annahme war : Keine zwei Knoten haben die gleiche x-Koordinate! l l l l l Übung: An welcher Stelle im Algorithmus treten Probleme auf, falls zwei Punkte die gleiche x-Koordinaten haben? In der Praxis darf dieser Sonderfall natürlich nicht ausgeschlossen werden! Mögliche Lösung: Rotation der Achse um einen kleinen Winkel Schwierigkeit: Numerik bei der Rotation um kleine Winkel Lösung: >>Symbolische Transformation in Form einer Scherung entlang der xAchse: ist so klein, dass die Reihenfolge der Knoten in x-Richtung erhalten bleibt Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Lösungsansatz 3 Scherung Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 48 von 51 geoinformation.net Folie 49 von 51 Lösungsansatz 3 Sonderfallbetrachtung II Anwendung des Algorithmus "Trapezkarte" auf S := { s : s S} Problem: Numerik bei Punkten p = (x + y, y) Wir nutzen statt p = (x + y, y) die Repräsentation ( x, y): Es werden im Algorithmus keine geometrischen Objekte berechnet, auch wird nicht benötigt Es genügen qualitative Aussagen: rechts/links an x-Knoten bzw. oben/unten an y-Knoten Diese Aussagen lassen sich durch Betrachtung der Punkte (x, y) treffen l ¡ ¡ ¡ Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Folie 50 von 51 Lösungsansatz 3 Sonderfallbetrachtung III Rechts/links-Vergleich zweier transformierter Punkte (xp + yp, yp) und (x q + yq, yq): l l xp!= x q : Vergleich von xp und xq ergibt Reihenfolge der Knoten in x-Richtung xp = xq : Reihenfolge der transformierten Knoten in x-Richtung hängt von den yKoordinaten ab Übung: Betrachtung des oben/unten-Vergleichs eines Knotens q = (x + y, y) an einer Kante s mit den Anfangs- bzw. Endknoten p1 = (x 1 + y1, y1) und p2 = (x 2 + y2, y2) Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche geoinformation.net Punkt-in-Polygon-Suche Literatur De Berg, Mark et al.: Computational Geometry: Algorithms and Applications. Springer Verlag Berlin, Heidelberg, 1997 Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche Folie 51 von 51