Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

Ähnliche Präsentationen


Präsentation zum Thema: "Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier."—  Präsentation transkript:

1 Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier - Projekt

2 2 Übersicht über das Semester was ist „GIS 2“? –Funktionen von GIS Algorithmen in GIS effiziente Berechnung –Speicherung räumlicher Objekte in GIS effiziente Suche GIS 1 = Modelle für GIS Welt  Modell GIS 2 = Modell  Rechner 2 große Algorithmen –Overlay von Netzen und Flächen (Segmentschnitt) –räumliche Nachbarschaft Voronoi-Diagramm, Delaunay- Triangulation

3 3 Organisation 1 V 1 Ü 2 Optionen für „1Ü“ –Semesterprojekt: Java-Implementierung des Overlay- Algorithmus in Gruppenarbeit –Durcharbeiten der in der Vorlesung vorgestellten Algorithmen an Beispielen erfolgreiche Teilnahme –aktive Mitarbeit an Programmierprojekt –Test Teilnahmevoraussetzung für Klausur (Förstner)

4 4 Overlay von Netzen: –Fluß und Straßennetz: Brücken –Straßen und Eisenbahnnetz: Brücken, Tunnel –Problem: Schnitt von n geraden Linien-Segmenten von Landkarten (polygonalen Strukturen) –PLZ und Verkaufsbezirke –Gemeinden und Geologie –Problem: Segmentschnitt + Polygonkonstruktion –heute nur: Schnitt von n Segmenten

5 5 n-Segment-Schnitt einfaches Vorgehen: –paarweiser Vergleich:  s  S:  s‘  S - {s} überprüfe s und s‘ auf Schnittfreiheit und bestimme ggf. den Schnitt von s und s‘ Laufzeit: O(n 2 ) für die Praxis viel zu langsam Ziel: O(n * log n) harter und langer Kampf! erste Idee: betrachte horizontale Projektionen

6 6 Zur Erinnerung („Diskrete Mathematik“)  Groß-Oh-Notation Definition: wobei

7 7 Groß-Oh-Notation Beispiele:  O(log n)   O(n log n)   O(n 3 )   O(n)  ...  O(exp n)  O(1)  O(n 2 )  Inklusion:

8 8 Wachstum n² n log n

9 9 Hinreichende Bedingung für Schnittfreiheit notwendig für Schnitt: Überlappung der horizontalen Projektionen Reduktion einer 2-dimensionalen auf eine 1-dimensionale Fragestellung

10 10 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

11 11 Idee: horizontale Scan-Line über die Ebene schieben –aktive Elemente: Schnitt mit der Scan-Line –nur aktive Elemente können horizontale Überschneidungen haben –überprüfe aktive Elemente auf Schnittfreiheit Problem: wo sind die Haltepunkte der Scan-Line –Anfangspunkt eines Segments –Endpunkt eines Segments –geordnete Menge der x-Koordinaten

12 12 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

13 13 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

14 14 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

15 15 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

16 16 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

17 17 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

18 18 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

19 19 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

20 20 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

21 21 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

22 22 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

23 23 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

24 24 Gegenbeispiel zu viele Elemente gleichzeitig aktiv  O(n 2 )

25 25 Nachbarschaft  - Umgebung A B

26 26 Verfeinerung des Algorithmus nur benachbarte Segmente betrachten wie erkennt man sehr schnell, ob zwei Segmente benachbart sind? Nutzung der Scan-Line –Betrachte die Schnittpunkte der aktiven Segmente mit der Scan-Line –Nachbarschaft ergibt sich aus der Lage der Schnittpunkte

27 27 Ordnungsrelation „  x <‘‘ x x‘ B A C A  x < B A  x < C C  x‘ < A C  x < B A  x‘ < B C  x‘ < B

28 28 Ordnung der Segmente durch die Scan-Line –  x< ist eine dynamische (!) Ordnung... –die nur auf der Menge der aktiven Elemente definiert ist –die Ordnung  x< zwischen zwei Elementen wird an ihren Schnittpunkten umgedreht aus a  x< b wird am Schnittpunkt s von a und b b  x< a –liefert eine vollständige eindimensionale Ordnung der aktiven Segmente... –... für jeden Haltepunkt der Scan-Line !

29 29 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4

30 30 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 A

31 31 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 A E

32 32 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B E A

33 33 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B D A E

34 34 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B C A D E

35 35 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B D C E

36 36 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B E C D

37 37 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 F C B E D

38 38 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B C F E D

39 39 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B C F E

40 40 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 C E F

41 41 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 C F E

42 42 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 C

43 43 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4

44 44 Wann wird der Schnittpunkt S 1 erkannt? A S1S1 Übung: Wird ein Schnittpunkt stets genau einmal erkannt? C D E B

45 45 Vereinfachende Annahmen Annahme 2 Segmente schneiden sich höchstens in einem Punkt in keinem Punkt schneiden sich mehr als 3 Segmente die x-Koordinaten aller Segmente sind paarweise verschieden kein Segment ist vertikal Gegenbeispiel

46 46 Algorithmus Scan-Line Input: S: eine Menge von Segmenten Output: die Schnittpunkte der Elemente von S Sei T = Endpunkte der Segmente von S nach x-Koordinaten sortiert (Haltepunkte) L =  // aktive Segmente von S while T   do bestimme und entferne den nächsten Punkt p  T x ist x-Koordinate von p case: p ist linker Endpunkt von s fuege_ein(s,x,L) sl = vorgaenger(s,x,L) sr = nachfolger(s,x,L) schnitt(sl,s,T); schnitt(s,sr,T); p ist rechter Endpunkt von s sl = vorgaenger(s,x,L) sr = nachfolger(s,x,L) entferne(s,x,L) schnitt(sl,sr,T) p ist Schnittpunkt von s und t vertausche(s,t,L,x) // t < s sl = vorgaenger(t,x,L) sr = nachfolger(s,x,L) schnitt(sl,t,T) schnitt(s,sr,T)

47 47 Algorithmus (II) fuege_ein(s,x,L): fügt das Segment s in die Menge L ein entsprechend der Ordnung an der Stelle x entferne(s,x,L): entfernt das Segment s aus die Menge L an der Stelle x nachfolger(s,x,L):liefert den Nachfolger von s in L an der Stelle x, falls vorhanden vorgaenger(s,x,L) liefert den Vorgänger von s in L an der Stelle x, falls vorhanden schnitt(s,t,T)prüft s und t auf Schnitt. Berechnet ggf. den Schnittpunkt p und fügt ihn als neuen Haltepunkt in T ein. offene Probleme: eine geeignete Datenstruktur für T eine geeignete Datenstruktur für L Prüfung auf Schnitt, Berechnung des Schnittpunkts

48 48 Prüfung auf Schnittfreiheit 1. Idee –Berechnung der Geradengleichungen g und g‘ der Segmente s und s‘ –Schnittpunkt p von g und g‘ –prüfe ob p in s und s‘ Problem –vertikale Segmente –Vermeidung unangenehmer Sonderfälle

49 49 Segmentschnitt I g1g1 g2g2 c) g2g2 g1g1 b) g1g1 g2g2 a)

50 50 Segmentschnitt II Reduktion auf das Problem P 1, P 2 liegen auf der gleichen / verschiedenen Seiten der durch g induzierten Geraden Homogene Koordinaten: P 1 =(x 1,y 1,w 1 ) P 2 =(x 2,y 2,w 2 ) P=(x,y,w) D > 0 D < 0 D = 0 P P2P2 P1P1 s

51 51 Einfacher Segmentschnitt I S 1 = det ( P 1,P 3,P 4 )Def.:Vor.: Alle Determinanten sind  0: S 2 = det ( P 3,P 1,P 2 )g und g` schneiden sich genau dann, wenn S 1, S 2 S 3 = det ( P 2,P 3,P 4 )sowie S 3, S 4 jeweils verschiedene Vorzeichen S 4 = det ( P 4,P 1,P 2 )haben. P2P2 P1P1 P3P3 P4P4 P2P2 P3P3 P4P4 P1P1 g g` P2P2 P1P1 P3P3 P4P4

52 52 Einfacher Segmentschnitt II Wenn alle Determinanten gleich Null sind, dann folgt daraus, daß alle vier Punkte kollinear sind. - eine Determinante ist Null: => Algorithmus: Einsparen von Multiplikationen


Herunterladen ppt "Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier."

Ähnliche Präsentationen


Google-Anzeigen