Aus technischen Gründen bleibt diese Seite leer
L. Stammler, E. Buchsteiner-Kießling
Globale Optimierung von Niveaulinien
Aus technischen Gründen bleibt diese Seite leer
Ludwig Stammler, Edeltraud Buchsteiner-Kießling
Globale Optimierung von Niveaulinien Geometrische und algebraische Fundierung und Algorithmen
WILEY-VCH Verlag GmbH & Co. KGaA
Alle Bücher von Wiley-VCH werden sorgfältig erarbeitet. Dennoch übernehmen Autoren, Herausgeber und Verlag in keinem Fall, einschließlich des vorliegenden Werkes, für die Richtigkeit von Angaben, Hinweisen und Ratschlägen sowie für eventuelle Druckfehler irgendeine Haftung.
Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. ¤ 1996 WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim Alle Rechte, insbesondere die der Übersetzung in andere Sprachen, vorbehalten. Kein Teil dieses Buches darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form – durch Photokopie, Mikroverfilmung oder irgendein anderes Verfahren – reproduziert oder in eine von Maschinen, insbesondere von Datenverarbeitungsmaschinen, verwendbare Sprache über-tragen oder übersetzt werden. Die Wiedergabe von Warenbezeichnungen, Handelsnamen oder sonstigen Kennzeichen in diesem Buch berechtigt nicht zu der Annahme, dass diese von jedermann frei benutzt werden dürfen. Vielmehr kann es sich auch dann um eingetragene Warenzeichen oder sonstige gesetzlich geschützte Kennzeichen handeln, wenn sie nicht eigens als solche markiert sind. ISBN
978-3-527-40267-0
Vorwort Mit diesem Buch miichten wir eine Bearbeitungsweise zur Raster-Interpolation eroffnen, bei der die Gewinnung eines global einfachen Linienbildes als vorrangiges Ziel angestrebt wird. Erste Erfahrungen mit diesem Vorgehen sind beispielsweise im Ingenieurwesen, bei Techniken der Oberflachenbearbeitung, auf deutliche Zustimmung gestofien. Ein Nutzen fur zahlreiche andere Gebiete ist naheliegend. Zugleich treteri mathematische Hintergrundbetrachtungen auf, sowohl fur direkten Gebrauch im mathematischen Arbeiten mit Rastern selbst als auch zu CTbungs-, Selbststudiumsund Seminarzwecken in der Ausbildung von Mathematikern und Anwendern. Dem Buch ist eine Diskette mit einem Pascal-Programm beigelegt. Dieses Programm, auf P C iiblicher Grofienordnung lauffahig, realisiert einen einfacheri Prototyp der Algorithmen, die im Buch selbst in groBerer Vielfalt der Varianten und Zusatze hergeleitet und beschrieben werden. Das Listing ist im Text rnit ausfiihrlichen Kommentaren zur Nutzung und zum Programmaufbau versehen. Die Autoren mochten Text und Programm auch als Anregung verstehen, den Algorithmus zu einer in vieler Hinsicht erweiterten Software auszubauen. Auf Anfragen hierzu sind wir im Rahmen unserer Moglichkeiten ansprechbar. Das gilt imch zu weiteren Teilprogrammen, die hier aus verschiedenen Grunden nicht in Diskettenfassung weiterzugeben waren, beispielsweise zu einem Programm aus der ,4rbeit [19] von J. ZILLER, aus der wir dankenswerterweise (aul3er teilweiser Nutzung des Programms) auszugsweise einige Erlauterungen zitieren konnten. erarbeitet. Die Konstruktion Die druckfertige Fassung wurde mit der -4bbildungen erfolgte rnit dem Programm CAD-2D von H. STACHEL.Dem J. A. Barth Verlag sei insbesondere Dank gesagt fur die kooperative und geduldige Zusammenarbeit .
&&m
Halle (Saale), im Juli 1996
Ludwig Stammler Edeltraud Buchsteiner-Kiepling
Aus technischen Gründen bleibt diese Seite leer
Inhalt sverzeichnis 1 Zielstellung dieses Buches ...........................................
1.1 Was sol1 ..global optimiert" werden? ................................. 1.2 Teilschritte des Optimierens .........................................
.
1.3 Ausfluge" in niathematische Gebiete. Moglichkeit zu Ubung oder kursorischer Information ....................................... 1.4 Nutzungsmoglichkeiten und -empfehlungen; grobe Raster
............
2 Niveaulinien in einem einzelnen Rasterquadrat ..................
2.1. Typen von Rasterquadraten; Dreieckszerlegung mit .. Langensummenmmimierung ......................................... 2.1.1 Lineare Interpolation auf dem Rand ............................ 2.1.2 Typen von Quadraten .......................................... 2.1.3 Linienfuhrung in unkritischen Quadraten ....................... 2.1.4 Die Aufgabe der Langensummenminimierung ................... 2.1.5 Uberfuhrung der Minimalbedingung in elementargeometrische Gestalt ........................................................ 2.1.6 Ein Spiegelungssatz, geometrische Losung der Minimierungsaufgabe .......................................... 2.2 Iteration mit dem arithmetischen Mittel .............................
2.2.1 2.2.2 2.2.3 2.2.4 2.2.5
Graphische Verbesserung als Motivation zum Iterationsansatz . . Rechnerische Beschreibung der Iteration ........................ Grenzwert der Iteration; das Parallelmittel ..................... Geometrische Modellierung der Iteration ....................... Projektiv vereinfachter a-priori-Uberblick .......................
3 5 7
7 7 7 9 10 11
14 18 18 22 25 27 32
2.3 Iteration mit dem Parallelmittel ..................................... 2.3.1 Die Faille eines Iterationsschrittes .............................. 2.3.2 Rechnerische Beschreibung, Konvergenz ........................ 2.3.3 Geometrisches Modell, Cremona-Transformationen ............. 2.3.4 Fundamentalelemente der Cremona-Transformation ............. 2.3.5 Gestalt der Teilflachen des geometrischen Modells .............. 2.3.6 Weiterfuhrende und zusammenfassende Aussagen ...............
37 37 39 41 43
3 Gewinnung eines globalen Niveaulinienbildes......................
56
48 53
3.l Strukturbestimmende Niveaulinien ..................................
56
3.1.1 Verzweigung in Rasterquadraten; Lageunterscheidung von Rasterpunkten ............................................. 3.1.2 Wertgleiche Nachbarschaft; Startpunkte ........................
56 57
VIII
Inhaltsverzeichnis 3.1.3 Homotopie unverzweigter Niveaulinien ......................... 3.1.4 Moglichkeiten unterschiedlich feiner Linienfuhrung .............. 3.1.5 Schrittweise Flachenzerlegung durch Linienfortsetzung . . . . . . . . . . 3.1.6 Datenstruktur fur das Anfugen von Teilflachen ................. 3.1.7 Schrittweises Zusammensetzen der Teilflachen ..................
58 61 63 67 70
3.2 Erste Varianten zur Gewinnung verbesserter Erscheinungsbilder . . . . . . 3.2.1 Ausgabe der uriverzweigten Niveaulinien ohne Weiterbearbeitung ............................................. 3.2.2 Abgerustete Variante: Iteration unter Verzicht auf Homotopie-Informat ion ........................................ 3.2.3 Wert-Intervalle der Teilflachen ................................. 3.2.4 Gewinnung der Niveaulinie zu gegebenem Wert in gegebener Flache ............................................ 3.2.5 Zweite Gewinnungsnloglichkeit dieser Niveauliriie . . . . . . . . . . . . . . . 3.2.6 Wahl eines Wertes pro Flache .................................. 3.2.7 Wahl einer arithmetischen Wertfolge ...........................
74
79 81 84 86
3.3 Bijektive Zuordnung zwischen Homotopieklassen und Teilflachen . . . . . 3.3.1 Fragestellung, Motiv, Ursachen ................................. 3.3.2 Globale Nachbarschaftsermittlung .............................. 3.3.3 Zusammensetzen von Flachen gleicher Homotopieklasse ......... 3.3.4 Zweite Zusammensetzungsmoglichkeit .......................... 3.3.5 Reprasentierende Niveaulinien ..................................
91 91 92 94 95 97
4 Varianten globaler optischer Verbesserung ........................
.
74
74 75
99
4.1 Gebietsfarbung nach Steigen" und ..Fallen" ......................... 4.1.1 Grundsatzliches Vorgehen ...................................... 4.1.2 Neue Aufteilung des Rasterrechtecks ........................... 4.1.3 Suchschritte ................................................... 4.1.4 Farbungsschritte ............................................... 4.1.5 Kontraktionsschritte ...........................................
99 99 100 102 103 105
4.2 Linienglattung ...................................................... 4.2.1 Bekannte Verfahren ............................................ 4.2.2 Satze uber Korbbogen ......................................... 4.2.3 Durchfuhrung einer einzelnen Eckenabrundung ................. 4.2.4 Kriterium fur nicht durchzufuhrende Eckenabrundung .......... 4.2.5 Benachbarte Eckenabrundungen ................................
109 109 111 116 118 120
4.3 Zwei Beispiele weiterfuhrender Anwendungsthemen .................. 122 4.3.1 Orthogonale Trajektorien ...................................... 122 4.3.2 Richtungsrosen ................................................ 124
Inhaltsverzeichnis
IX
5 Varianten im Arbeiten mit Genauigkeitsschranken............... 126 5.1 Abhangigkeit von allgemeinen Bedingungen .......................... 5.1.1 Genauigkeit der Rastervorgaben ................................ 5.1.2 Rastergemafier Zusammenhang zwischen Rechenund Zeichengenauigkeit ........................................
126 126
5.2 Genauigkeitskritische Teilschritte des Algorithmus ................... 5.2.1 Ermittlung der Rasterquadrat-Typen ........................... 5.2.2 Vergleich von Grenzwerten der Iterationen .....................
127 127 128
5.3 Entzerrung von dicht belegten Teilgebieten .......................... 5.3.1 Zielstellung .................................................... 5.3.2 Ausfiihrung ....................................................
129 129 130
6 Angaben zum Pascal-Programm....................................
132
126
6.1. Allgemeine Angaben ................................................ 132 6.1.1 GroBenordnung, prinzipielle Einteilung ......................... 132 6.1.2 Zusatz- und Weiterbearbeitungsmoglichkeiten .................. 132 6.2 Kommentare zii Ein- und Ausgabemodalitaten ....................... 6.2.1 Allgemeine Hinweise zur Zahleneingabe ......................... 6.2.2 Hinweise zu einzelnen Ein- und Ausgaben ......................
133 133 134
6.3 Kommentare zum Ablauf der Programme ............................ 6.3.1 Das Programm VERZWG....................................... 6.3.2 Das Programm UNVERZWG ....................................
137 137 150
6.4 Listings. ............................................................
155 155 200 209
6.4.1 Das Programm VERZWG ....................................... 6.4.2 Das Programm UNVERZWG .................................... 6.4.3 Die Prozedurensammlung KOORD5 .............................
Verzeichnis: Forderungen. Definitionen. Sttze und Ubungen ....
217
Literaturverzeichnis ....................................................
219
Stichwortverzeichnis ...................................................
220
Aus technischen Gründen bleibt diese Seite leer
1 Zielstellung dieses Buches Durch dieses Buch zieht sich wie eine ,,Hauptstrafie" die Bearbeitung des Themas ,,Globale Optimierung von Niveaulinien". Von dieser ,,Hauptstrafie" zweigen mehrere ,,AusflugsstrafienLL in mathematische Themen ab, die zur Bearbeitung des Hauptthemas herangezogen werden. Das sind Themen aus der euklidischen und projektiven Geometrie, aus der Theorie der algebraischen Transformationen in der algebraischen Geometrie und aus der Topologie.
1.1 Was soll ,,global optimiert" werden? Die Fragestellung des ,,globalen Optimierens", die hier behandelt werden soll, tritt bei folgender Interpolationsaufgabe auf: Gegeben sei ein Raster, das aus Quadraten gebildet wird; jedem Rasterpunkt sei eine reelle Zahl als Wert zugeordnet (siehe z.B. Abb. 1). Gesucht wird eine ,,optimale" Funktion, die in der Rechteckflache des Rasters definiert und stetig ist und an allen Rasterpunkten die vorgeschriebenen Werte annimmt. In welchem Sinne soll sie ,,optimal" sein?
1-
I I l
3-
I I l
3-
I I l
0-
I I l
2-
I I l
3
4-4-
I I l
2-
3-
3-
1-
4-
2-5-
0-
5-
4-
1-
6-
3-3-
1-
2-
0-
5-
3-
1-2-
I I l
I I l
5
5
2
Abb. 1
Um diese Rage zu beantworten, sei zunachst darauf hingewiesen, dafi es natiirlich unendlich viele stetige Interpolationsfunktionen gibt und dafi auch schon viele rechentechnische Verfahren bekannt sind, mit denen man solche Funktionen bilden kann (siehe etwa [l]und dort genannte Literatur). Solche Verfahren arbeiten aber nur ,.lokal"; d.h., das gesamte Funktionsbild wird aus kleinen Teilen zusammengesetzt, fur die zwar ein wiinschenswert glatter Ubergang zu den jeweils benachbarten Teilen erreicht wird, aber keine Einflufinahme auf weiter entfernte Teile und somit auf das gesamte Funktionsbild erfolgt. Daran andert sich auch nicht viel, wenn man Verfahren zum nachtraglichen Andern der Funktion anwendet, da sie entweder ebenfalls nur lokal steuerbar sind oder, wenn sie globale Anderungen nach Vorgabe zu steuern gestatten, gerade die Wahl solcher Steuervorgaben als bekannt erfordern, den Anwender also beim Ermitteln derartiger Vorgaben im Stich lassen.
1 Zielstellung dieses Buches
2
Stattdessen soll es nun um die Aufgabe gehen, im Gesamtbild der Funktion nur solche ,,Komplikationen" zuzulassen, die durch die gegebenen RasterpunktWerte ,,unvermeidlich" sind. Zu erklaren ist wieder, was hier als ,,KomplikationLLeines Funktionsbildes verstanden werden soll und in welcher Weise sich aus Rasterpunkt-Werten eine ,,unvermeidliche" Komplikation ergeben kann. Als erster vereinfachender Gedanke zu solchen Erklarungen sei hier die Betrachtung der Niveaulinien eines Funktionsbildes gewahlt. Wie sich spater im einzelnen zeigen wird, ist es moglich und sinnvoll, zu erreichen, darj die Gesamtheit aller Niveaulinien nur endlich viele Verzweigungspunkte aufweist und dafi von jedem Verzweigungspunkt hochstens vier Kurven-Ansatze ausgehen. Zu erklaren bleibt also, in welchem Sinne Rasterpunkt-Werte ,,optimale" Verzweigungen erzwingen. Weiterhin lafit bereits eine derartige vorlaufige Aufgabenfassung erkennen, darj die geforderten Eigenschaften der Niveaulinien im wesentlichen topologischer Art sind. Dies gestattet eine zweite Vereinfachung: Ein zu ermittelndes Niveaulinienbild kann aus stuckweise geradlinigen Kurven bestehen. (Sind solche Niveaulinien erst einmal gefunden, so kann man sie, wenn erwunscht, nachtraglich durch topologisch aquivalente Kurven mit anderweitig vorgegebenen Krummungs- und Glattheitseigenschaften ersetzen. Erst an dieser Stelle konnte also der Einsatz z.B. von Spline- oder Bkzierverfahren auf die Niveaulinien oder auch direkt auf die Funktionsflache sinnvoll eingreifen.)
1.2 Teilschritte des Optimierens Damit ist das Vorgehen auf der ,,HauptstraBe" dieses Buches umrissen: Zunachst werden in den einzelnen Rasterquadraten stuckweise geradlinige Niveaulinien gesucht und zugleich mit Verzweigungen, sofern diese in einem genauer zu bestimmenden Sinne erzwungen sind, lokal optimiert. Aus den so entstandenen verzweigten Niveaulinien wird eine Zerlegung der gesamten Rasterflache in Teilgebiete gewonnen. Jedes Teilgebiet kann nun unter Vermeidung neu hinzukommender globaler Komplikation uberdeckt werden mit unverzweigten Niveaulinien, die jeweils in einem dieser Gebiete untereinander topologisch aquivalent, namlich zueinander homotop sind. Damit hat man die Moglichkeit, ein derart global optimiertes Niveaulinienbild darzustellen, indem man aus jeder Homotopieklasse unverzweigter Niveaulinien einen Reprasentanten angibt. Neben den schon genannten Moglichkeiten des Abrundens, auf die in diesem Buch nur noch durch kurzes Skizzieren einer elementaren Variante eingegangen wird, lassen sich auch noch andere Varianten der Ausgestaltung wahlen, von denen die folgenden etwas genauer erortert werden sollen: 1. Die Wahl zwischen einer ,,besonders groben", einer ,,glatter bildfullenden" und einer zwischen beiden Extremen ,,vermittelnden" Variante, 2. die Kennzeichnung von (nun auch durch unverzweigte Niveaulinien begrenzten) Teilgebieten als ,,zu einem Gipfel ansteigend" oder ,,zu einem Tal absteigend" . ~
~
1.3 ,,Ausfliige" in mathematische Gebiete, Moglichkeit zu Ubung
...
3
Die Bildgewinnung wird am Ende so gefafit, dai3 sie rechentechnisch automatisiert erfolgen kann. Ein Prototyp fur ein Programm, das diese Bildgewinnung ausfiihrt, wird hier in einer lauffahigen Turbo-Pascal-Version aufgestellt. Je nach praxisorientiertem Verwendungszweck kann, aufbauend auf dieser Version, die Herstellung von weiter ausgearbeiteter Software erfolgen, mit der sich umfangreicheres Rastermaterial in genugender Geschwindigkeit und Druckqualitat bearbeiten lafit; doch ist das nicht mehr Gegenstand dieses Buches.
1.3 ,,Ausfluge" in mathematische Gebiete, Moglichkeit zu
Ubung oder kursorischer Informat ion An folgenden Stellen der ,,HauptstraBe" kann man nutzbringend von der Einbeziehung geometrischer Themen Gebrauch machen: Zur Gewinnung der Niveaulinien in einem Rasterquadrat wird die Wahl eines Wertes erforderlich, der im Innern dieses Rasterquadrats auftreten soll. Ein solcher Zahlenwert kann einerseits durch eine Extremalbedingiing festgelegt, andererseits durch ein Iterationsverfahren gefunden werden. Beide Gewinnungsmoglichkeiten gestatten geometrische Charakterisierungen: Die Extremalaufgabe kann elementargeometrisch durch einen Spiegelungssatz gelost werden, dessen Beweis dann wieder projektiv-geometrisch gefuhrt werden kann. Die Iterationsschritte, formuliert als Entscheidungsschritte ,,oben -unten", ,,rechts - links", lassen sich a priori ablesen aus den Eckwerten des Rasterquadrats; hierfur 1aBt sich ebenfalls der Ubergang zu einer projektiven Hilfsebene heranziehen. Man hat namlich in beiden Gewinnungsmoglichkeiten als ,,Schliisselzahl" (Losung der Extremalaufgabe und Grenzwert bei der Iteration) eine Zahl, die - in einer dritten Weise geometrisch charakterisiert - als Parallelmittel der vier Eckwerte bezeichnet werde. Infolge von Invarianzaussagen zu dieser Mittelbildung kann man die Eckwerte auf zwei signifikante Zahlen reduzieren, und die { 0; 1 )-Folgen von deren Dualbruchdarstellungen entsprechen den oben genannten Entscheidungsschritten. Man gewinnt diese Entsprechung, indem man ein durch sukzessive Halbierung zerlegtes Dreieck in der gedachten Hilfsebene geeignet projektiv transformiert. Zur Nutzung einer algebraisch-geometrischen Thematik kommt man in folgendem Zusammenhang: Die Iterationsschritte, ursprunglich mit dem arithmetischen Mittel der Eckwerte angesetzt und das Parallelmittel als Grenzwert erreichend, konnen stattdessen sogleich in jedem Schritt das Parallelmittel einsetZen. Wieder kann man durch geometrische Betrachtung einer Hilfsebene zu einer a-priori-Beschreibung der Folge von Entscheidungsschritten kommen. Dabei verlai3t man allerdings die lineare projektive Geometrie; denn auf eine Strecke, die ein Ausgangsdreieck der Hilfsebene zerlegt, wird nun eine Folge von CremonaTransformationen angewandt. Solche Transformationen kontrahieren gewisse Kurven zu Punkten und blasen gewisse Punkte zu Kurven auf; daher haben die Teilgebiete des Ausgangsdreiecks, die den Entscheidungsschritt-Folgenentsprechen, nicht nur die Gestalt von (krummlinig begrenzten) Dreiecken, sondern in periodischern Wechsel treten auch Zweiecke und Vierecke auf.
1 Zielstellung dieses Buches
4
Das Heranziehen einer topologischen Thematik schliefilich wird darin bestehen, das Auftreten des Homotopiebegriffs zu beschreiben, insbesondere hier vermittelt durch die kombinatorisch-topologischen Operationen des Zerlegens und Zusammenfugens von Gebieten. Schliefilich ist eine fur den vorliegenden Zweck genugend vereinfachte Datenstruktur einzufuhren, mit deren Nutzung sich solche topologischen Operationen rechentechnisch realisieren lassen. Die somit verwendeten Theorieteile aus der euklidischen und projektiven Geometrie, der Theorie algebraischer Transformationen und der Topologie werden so weit eingebracht, dafi sich damit Ubungsmoglichkeiten in diesen mathematischen Disziplinen ergeben. Sie sind an der hier zu erbringenden Anwendung orientiert und konnen dadurch allgemeiner dazu anregen, beim Bearbeiten praxisbezogener Aufgaben den Einsatzmoglichkeiten scheinbar fernliegender Theorieteile erneut Aufmerksamkeit zukommen zu lassen. Naturlich kann andererseits, wer sich in solchen Theorieteilen genugend kundig fuhlt oder uberhaupt nur an dem Algorithmus der Niveauliniengewinnung interessiert ist, die ,,Hauptstrafie" verfolgen oder sich sogleich nur dem Turbo-Pascal-Programm zuwenden. In diesem Fall waren in der angegebenen Reihenfolge die Abschnitte 2.1.1, 2.1.2, 2.1.3, 2.2.1, 2.2.3, 2.3.1, 2.3.2, 3.1.1, 3.1.2, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.6, 3.2.7, 3.3.2, 3.3.3, 3.3.5, 4.1.2, 4.1.3, 4.1.4, 4.1.5, 4.2.3, 4.2.4, 4.2.5, 5.1.1, 5.1.2, 5.2.2, 5.3.2 bzw. nur das Kapitel 6 zu lesen. Zur Darstellungsweise sei bemerkt: In Kapitel 2, das sich mit der Linienfuhrung in den einzelnen Rasterquadraten befafit und die erwahnten Fundierungen aus Geometrie und algebraischer Geometrie ausfuhrt, ergibt sich eine mehr lehrbuchartige Darstellung. Darin bilden Definitionen und Satze sowie deren Nutzung fur die Gewinnung der Linienfuhrung die zentralen Aussagen; sie werden teils durch Zitat, teils durch Motivation und Beweisdarstellung angeboten. Diese Teile des Buches, auch mit den eingefugten Ubungsaufgaben, konnen somit sowohl zu Selbststudienzwecken als auch etwa zu seminaristischer Nutzung geeignet sein. In den anschliefienden Kapiteln uber die globale Bildgewinnung wird dagegen mehr Wert gelegt auf das ausfuhrliche Beschreiben moglicher Algorithmen. Es geht dabei um genaueres Fixieren und Motivieren einzelner Schritte, in die sich ein solcher Algorithmus gliedern lafit; und es geht um Erlauterungen zur Rage, auf welche zuvor vorhandenen Informationen zugegriffen werden kann, um daraus die anschliefiend auszugebenden Informationen zu gewinnen. Mehrmals ist auch zu diskutieren, ob und mit welchem Nutzen Probleme erkennbar und behebbar sein werden. Dabei wurde bewufit in Kauf genommen, dafi diesem Darstellungsstil eine gewisse Naivitat anhaftet. So konnen Darlegungen zunachst als breit ausgefuhrte Selbstverstandlichkeiten erscheinen, ehe in ihrem Zusammenwirken eine insgesamt realisierbare Nutzung einsehbar wird. Ein wesentliches Ziel dieser Abschnitte ist, nicht nur zum Verstandnis des Pascal-Programms hinzufuhren, sondern auch detailliertere Anregungen zu geben, wie ein solches Programm variiert und wei~
~
1.4 Nutzungsmoglichkeiten und -empfehlungen; grobe Raster
5
ter ausgebaut werden kann, gegebenenfalls bis zur Gestaltung einer umfassenden Software. Das Programm selbst realisiert folglich nicht etwa umfangsgleich diese Algorithmenbeschreibung. Es wurde zunaichst in parallel-laufender Erarbeitung zu den vorangehenden Kapiteln, die erforderlichen programmiertechnischen Details einbringend, ausgefuhrt. Im Ergebnis wird damit eine Grundvariante angeboten, an der sich deutlich machen lafit, welcher Art die erreichbaren Resultate sind. Damit dies auch bei relativ kleiner Rechnergroi3e gelingt, waren einige programmiertechnische Mittel einzusetzen, die nicht in jedem Fall textlich zu kommentieren waren. Doch wurde versucht, einen allzu weitgehenden ,,black box"-Charakter zu vermeiden, um die im Text angebotenen Variations- und Ausbaumoglichkeiten realisierbar zu halten.
1.4 Nutzungsmoglichkeiten und -empfehlungen; grobe Raster Es gibt zahlreiche Praxisbereiche, in denen zu rasterformig gegebenem Zahlenmaterial interpolierende Funktionen oder auch nur deren Niveaulinien gesucht werden. Solche Praxisbereiche sind etwa bezeichnet durch folgende Stichworte: Oberflachendarstellung und -analyse in Geologie, Geographie, oberflachenbearbeitender Technik; ferner Bildgewinnung, -analyse und -bearbeitung in Kartographie, Meteorologie, Biologie, Medizin und in unterschiedlichen Anwendungsbereichen von teils mehr abstrahierender, teils mehr geometrisch veranschaulichender Statistik. In derartigen Cebieten kommt eine Anwendung des hier aufgebauten Verfahrens vor allem dann in Betracht, wenn das zu bearbeitende Zahlenmaterial nur in einem grobcin Raster vorliegt. Mit einer Unterscheidung zwischen ,,feinenLL und ,,grobenLL Rastern (in flieDendem Ubergang) ist naturlich nicht die absolute GroDe der Rasterquadrate gemeint; diese laat sich j a einfach durch Ahnlichkeitstransformation andern. Vielmehr geht es um die RasterquadratgroBe, bezogen auf die Haufigkeit von Monotoniewechseln in den Zeilen und Spalten des Rasters. Am Beispiel der Abb. 1 sei dies erlautert: In der Umgebung des mittleren RQsterquadrats der untersten Zeile sind folgende Monotoniewechsel zu beobachten: Verfolgt man die Kante der mit 1 und 6 belegten Ecken von links nach rechts, so wird sie monoton steigend belegt; in ihren beiden Fortsetzungen nach links bzw. nach rechts wechselt aber jedesmal bereits wieder die Monotonierichtung. Ein ebensolcher Wechsel tritt ein, wenn man von der mit 3 belegten Ecke jeweils nur zwei Schritte nach links bzw. nach oben geht. Das hat folgende Konsequenzen: Man kann auf allen vier Seiten dieses Rasterquadrats Punkte mit dem Wert 4 interpolierend belegen und je zwei dieser Punkte z. B. einander nicht kreuzend entweder so verbinden, dai3 dadurch die beiden mit 1, 3 belegten Ecken voneinander getrennt werden oder aber die beiden mit 5 , 6 belegten Ecken. Geht man dann jedesmal direkt weiter zu den beiden nachsten mit 4 belegten Rasterpunkten, so entstehen zwei global unterschiedliche Linienstrukturen: Im ersten Fall
6
1 Zielstellung dieses Buches
werden diese beiden Rasterpunkte ,,sehr kurz" miteinander verbunden, im zweiten ,,recht radikal" voneinander getrennt. Diese beiden hier nur andeutungsweise gekennzeichneten globalen Fortsetzungsmoglichkeiten bestehen auch im Anschlufi an eine kreuzweise Linienfiihrung. Treten solche globalen Auswirkungen der Grobheit eines Rasters haufig auf und ist es nicht moglich oder zu aufwendig, das Raster durch zusatzliche Messungen zu verfeinern, so verblieb bisher in zahlreichen Anwendungsfallen nur die Moglichkeit, den globalen Niveaulinienverlauf ,,gefiihlsmaBig" zu wahlen oder mit der Einschatzung ,,wegen Uniibersichtlichkeit nicht auswertbar" zu resignieren. In solchen Fallen, wenn zudem die Annahme eines (stetigen und) im oben angedeuteten Sinne nicht iiberflussig komplizierten Gesamtbildes praxisgerecht ist, sollte die Anwendung des hier zu entwickelnden Algorithmus gut motiviert sein. Seiner Erarbeitung auf der angekiindigten ,,Hauptstraae", unter Einbringung der ,,Ausflugsstrai3en"-Begriindungen, wenden wir uns nun zu.
2
Niveaulinien in einern einzelnen Rast erquadrat
2.1
Typen von Rasterquadraten; Dreieckszerlegung mit Langensummenminimierung
2.1.1 Lineare Interpolation auf dem Rand Die in 1.1 motivierte Vereinfachung, nur stuckweise geradlinige Niveaulinien zii bilden, entspricht der folgenden Festsetzung, die Rasterlinien durch stuckweise linear(: Interpolation zii belegen, d.h.: Wir ordnen allen Randpunkten eines Rasterquadrats diejenigen Zahlenwerte zu, die sich durch lineare Interpolation zwischeri den Eckwerten ergeben. In Abb. 2 ist als Beispiel skizziert,, wie diese Interpolation auf clas eben erwahnte Rasterquadrat aus Abb. 1 wirkt. 1
1.5 2 2.5
3 3.5 4 4.5 5 5 . 5
1.5
6
5.5
2 1
2.5 1.5
3
3.5
1
4 3.5
4.5 5
4.5
4
3.5
3
Abb. 2
2.1.2 Typen von Quadraten In 1.4 wurde deutlich, dafi es eine Rolle spielt, ob ein Zahlenwert existiert, mit dem mehr als zwei Randpunkte eines Quadrats belegt sind. Beispielsweise sind in Abb. 2 mit jedem z, das 3 < z < 5 erfullt, je genau vier Randpunkte belegt. Um diesen Gedanken detaillierter verfolgen zu konnen, definieren wir durch Gleichungen und Ungleichungen charakterisierte Typen von Quadraten: Definition 1. Ein Rasterquadrat hat jeweils genau dann den hier genannten Typ, wenn sich die Eckwerte, zyklisch das Quadrat umlaufend, so mit a, b, c, d bezeichnen lassen, daj3 folgende Bedingungen gelten:
8
2 Niveaulinien in einem einzelnen Rasterquadrat
a = b = C = d. Typ 1: T y p 2: a=b=c#d. Typ 3: a = b # c = d. Typ 4: a = b , c # d und entweder c > a , d > a oder c < a , d Typ 5: a < b < c < d. a < b < c und a < d < c. Typ 6: Typ 7: a
+
< a.
+
Man bestatigt hierfur:
Satz 1. Jedes mat Eckwerten belegte Rasterquadrat gehort genau einem Typ an. Bei Drehungen und Spiegelungen des Quadrats bleibt der Typ unverandert, ebenso bei Addition ein und derselben Zahl zu allen vier Eckwerten sowie bei M u l ~ i p l i ~ a taller i o ~ vier Eckwerte mit ein und derselben von Nu11 verschiedenen Zahl (insbesondere also bei gleichzeitiger Vorzeichenumlcehrung aller vier Eckwerte). Die Typen 7 und 8 nennen wir kritisch, alle anderen unkritisch. Zusammenfassend la& sich dies auch so formulieren: Ein Quadrat ist genau dann kritisch, wenn sich unter seinen vier Eckwerten zwei zueinander diagonal gegenuberliegende a, c befinden, so dafi fur sie und die beiden anderen Eckwerte b, d
s
max(a, c ) min(b, d ) gilt, wobei im Fall des Gleichheitszeichens zusatzlich die beiden Ungleichungen rnin(a, c ) < max(a, c ) und min(b, d ) < max(b, d ) gelten. Bemerkung: Zur algorithmischen (und d a m rechentechnischen) Typ-Ermittlung wird man die Reihenfolge der Bezeichnungen a , b, c, d nicht wie hier zur Vereinfachung der Fallbeschreibung - den Anordnungsbeziehungen der vier Eckwerte anpassen. Vielmehr wird man umgekehrt fur die Bezeichnungen a , b, c, d eine einheitliche geometrische Reihenfolge festlegen, etwa ,,unten links", ,,unten rechts", ,,oben rechts", ,,oben links". Der Algorithmus hat dann zwar mehr Fallmoglichkeiten abzufragen als in der obigen Beschreibung, aber immer noch in vertretbarem Ausmai3. Als gunstiger Umstand komnit hinzu, daa man in den meisten Varianten des Algorithmus nur die relativ grobe Unterscheidung zwischen den Fallen Typ I/ Typ 2 / Typ 7/ Typ 8/ sonstiger Typ benotigt. Abb. 3 zeigt fur jeden Typ ein Beispiel, das in Abb. 1 vorkommt. ~
2.1 Rasterquadrat-Typen, Dreieckszerlegung mit Langensummenminimierung
2-
3--3
I
I I
3-
3 2-
2 4-
4
I I
1 1
4
3-
TYP 2
TYP 1
3 3-2
I
I I
3 0-
TYP 7a
3 2-
TYP 3
24-
1-
2-
I 1
3 2-
4
1 1
1 1
1
3 0-
5
3
1-
TYP 4
TYP 5
TYP 6
4
1 1 -
6
I I
I3
4-
2 Q-
TYP 8a Abb. 3
TYP 7b
3 2-
I I
2 4-
9
5 5TYP 8c
TYP
Fur die Anzahlen, mit denen gleichbelegte Randpunkte vorkommen, erhalt man nach diesen Definitionen:
Satz 2. Mit Ausnahme der Typen 1 und 2 gilt: Genau dann, wenn das Quadrat kritisch ist, gibt es eine reelle Zahl, mit der mehr als zwei nicht derselben Quadratseite angehorende - Randpunkte des Quadrats belegt sind. Es gibt dann sogar stets ein Interval1 positiver Lange, das aus solchen Zahlen besteht. ~
Natiirlich ware die Ausnahmeregelung vermieden worden, wenn auch die Typen 1 und 2 zu den kritischen gezahlt worden waren; doch wird das fur den Aufbau des .Algorithmus nicht notig sein. Allerdings kommt dem Typ 2 bei spater zu erlaiuternder Variantenbildung (Abschnitt 2.2.lff.) doch noch eine gewisse Sonderrolle zu. 2.1.3 Linienfuhrung in unkritischen Quadraten
Entsprechend der Einschrankung auf stuckweise geradlinige Niveaulinien ist es offensichtlich bei den unkritischen Typen am einfachsten, fur jeden Wert, mit dem genau zwei Randpunkte belegt sind, diese beiden Punkte geradlinig miteinander zu verbinden, siehe Abb. 4.
TYP 1
TYP 2
TYP 3
TYP 4 Abb. 4
TYP 5
TYP 6
10
2 Niveaulinien in einem einzelnen Rasterquadrat
Bei Typ 1 werden somit uberhaupt keine Niveaulinien durch das Innere des Quadrates gefuhrt (das entspricht einem ebenen, zur Zeichenebene parallelen Teilstuck des Funktionsbildes). Fur Typ 2, bei dem wir auch die diagonale Randliriie des mit Linien gefullten Dreiecks hinzugefugt haben, wird, wie gesagt, spater wahlweise noch eine etwas andere Linienfuhrung zur Verfiigung gestellt. 2.1.4 Die Aufgabe der Langensummenminimierung
Die in 1.4 genannte und nach 2.1.2, Satz 2, den kritischen Typen zukommende Mehrdeutigkeit wurde nicht auftreten, wenn das Raster nicht aus Vierecken, sondern aus Dreiecken zusarrimengesetzt ware. (Das entspricht der Moglichkeit, uber jeder Dreiecksflache mit gegebenen Eckwerten ein ebenes Teilstuck fur die damit zusammengesetzte interpolierende Funktion zu wahlen.) Daher konnte der Versuch naheliegen, eine eindeutige Linienfuhrung dadurch zu erreichen, daB man jedes Quadrat in Dreiecke zerlegt. Eine Zerlegung in je zwei Dreiecke ware allerdings nur scheinbar eine Losung der Problematik; denn man hatte ja zu entscheiden, welche der beiden Diagonalen die Zerlegung erbringen sol1 (siehe Abb. 5), und das ware nichts anderes als die schon in 1.4 genannte Mehrdeutigkeit mit ihren globalen Konsequenzen im groben Raster.
1
6
1
6
5
3
5
3
Abb. 5
Als nachst einfachen Versuch denke man sich das Rasterquadrat durch beide Diagonalen in vier Teildreiecke zerlegt. Sobald man dann dem Quadratmittelpunkt einen willkurlich gewahlten Zahlenwert m zuordnet und die Katheten der vier Dreiecke mit linear interpolierten Zahlen belegt, erhalt man, wie gesagt, in den Dreiecken eindeutig bestimmte Verbindungsstrecken gleichbelegter Randpunkte. Abb. 6 zeigt, welche Niveaulinienbilder in dem Quadrat der Abb. 5 einmal bei der Wahl rn = 3 , 5 und einmal bei der Wahl rn = 4 , 5 entstehen.
2.1 Rasterquadrat-Typen, Dreieckszerlegung mit Langensummenminimierung 11 6
3.5
1
6
4.5
1
4.5
3.5
3.5 3.5
5
4.5
3
5
3
4.5
Abb. 6
Es erscheint plausibel, die Wahl von m durch eine Minimalbedingung festzulegen. In Anlehnung an die Linienbilder fur unkritische Quadrate, wo jede einzelne Linie eine rnoglichst kurze Verbindung zwischen den vorgesehenen Randpunkten ist, fordern wir hier:
Forderung 1. Der Mittelpunktwert m f u r die Linienfuhrung in einem kritischen Quadrat nach dessen Zerlegung durch seine beiden Diagonalen ist so zu wahlen, dap f u r eine geniigend grope, fest gewahlte naturliche Zahl N die Niveaulinien zu den Werten min(a, b, c, d ) $ (max(a, b, c, d ) - rnin(a, b, c , d ) ) ( k = 1 , . . . , N - 1) eine moglichst kleine Langensumme aufweisen.
+
2.1.5 Uberfuhrung der Minimalbedingung in elementargeometrische Gestalt
Wir betrachten zuniichst die Langensumme in einem der vier gleichschenkligrechtwinkligen Dreiecke, dessen Ecken A , B , M mit Zahlen a , b, m belegt seien. Es sei etwa [AM1 = lBMl = 1; ferner konnen wir bei genugend groi3em N niit beliebig kleinem relativem Fehler der Langensumme annehmen, dai3 a , b, m kommensurabel sind, etwa a = u . e , b = v . e , m = w . e mit hierfur genugend kleinem reellem e > 0 und ga.nzen Zahlen u,v,w . Es geniigt,, die beiden Falle m < a < b und a < m < b zu betrachten; Abb. 7 zeigt in diesen Fallen die Niveaulinie AA‘ fur ct bzw. die Niveaiilinie M M ‘ fur m. Man erhalt u-w w-u IMA‘I = - bzw. IAM’I = -~* v-w v-u
Jz
und daraus nach dem Satz des Pythagoras bzw. nach dem mit cos IqMAM’) = angewandten Kosinussatz
Jz
12
2 Niveaulinicii i n cinern einzelneri Rasterquadrat
M w-e
we Abb. 7
M‘
v-e
w.e
Nacli dein Strahlensatz und der Surrirrienforrriel fur arithmetische R.eihen folgt wei ter : Irri ersteri Fall haben die Niveaulinien, die in den Teilpurikten vori M bis A’ bzw. in deri Teilpunkten von B bis zum letzten Teilpunkt vor A‘ beginnen, die Langensurriine
c
11--10
h=O
~
h . IAA’I u-w
+
c
v-u-1
k=O
k
. IAA‘( =
~
71 - U
(
u--w+1 2
+ v - u2- 1
1 - w)2 (u- w)2 , 2 irn zweiten Fall liaben die Niveaulinien, die in den Teilpunkten von A bis MI bzw. in deri Teilpunkten von B bis zuin letzten Teilpunkt vor M’ beginnen, die I2i;gensurnrrie u-w-1 h k -+wM’l+ pfM’I = 2 w-u v-w h=O k=O
+
= -J(v
c
c
+
~’
1 - u)2 + 2 . (w- u)2 - 2 . (v - u ) . (w- u ) . 2 Damit und wegen der Identitat (v - u ) +~ 2 . (w- u ) 2 - 2 . (w - u ) . (w - u ) = (71 - w)’+ ( u - w ) ist ~ in beiden Fallen fur die Larigensumme der Ausdruck 1 - J ( a - 7r1)2 (b - 7r1,)~ 2e gefunderi. Wendet man dieses Ergebnis auf alle vier Teildreiecke eines Rasterquadrats an, so folgt: = -J(v
+
Satz 3. 171 e i n e m Quadrat m i t den in zyklischer Umlaufung angegebenen Eckwerten a. b, c, d und d e m Mittelpunktwert m ist die in Forderung 1 genannte L ang e n s u mm e proportional zu J(a
+J(c
+ ( b m ) 2+ J ( b m ) 2 + ( ~ l m)2 + J(d
-m -
~
)
~-
-
-
-
+ (c m)2 + ( a
m)2
-
m)2 m)2.
(1)
2.1 Rasterquadrat-Typen, Dreieckszerlegung mit Langensummenminimierung 13
Damit ist, nach Einfuhrung eines 2,y-Koordinatensystems in einer Hilfsebene, die folgende elementargeometrische Fassung von Forderung 1 erreicht (siehe Abb. 8):
Forderung 2. Zu einem gegebenen achsenparallelen Rechteck H J K L mit H = ( a ; b ) , J = ( c ; b ) , K = ( c ; d ) , L = ( a ; d ) ist uuf der Geruden g mit der Gleichung x = y, d.h. unter allen Punkten E' = ( m ;m ) , ein Punkt Po = (mo; mo) so zu ermitteln, daj3 die Abstandssumme
fur P = Po am kleinsten wird.
Y
L
K
I
/
a
c
Y
r.
Abb. 8
Bemerkung: Mit Minimierungsaufgaben fur derartige Abstandssummen hat sich bereits im vorigen Jahrhundert STEINERbefafit; daher spricht man von STEINER-Aufgaben, STEINER-Punkten usw. Im vorliegenden Fall wird P auf eine Gerade eingeschrankt,, so dafi man von einem ,,eingeschrankten STEINER-Problem"
14
2 Niveauliriicii in ciriem einzelnen Rasterquadrat
sprechen k a t i r i . Berrierkenswert ist dabei, dafl die Losungsfindung durch diese Einschrankung keineswegs erleichtert wird, wie sdion darari ersichtlicli ist, daf3 bei uneingeschriiiriktcr Variation von P trivialerweise der Diagorialenschnit,tpunkt kleinste Abstandssuninie zu den Eckeri hat (das gilt sogar fur jedes korivexe Viereck). Derri Leser sei empfohlen, die Forderung 2 zunachst durch klassische arialytische Betrachturig der Funktion (1) anzugehen, wobei etwa durch Einbeziehurig trigononietrischcr Deutung eine ,,leichte Geometrisierung" plausibel seiri mag:
Ubung 1. Man beweise: Die Ableiturig der Funktion (1) nach keiner der Piirikte H , J , K , L auf y liegt,
rr1
ist, falls
c o s ( 4 ( ~ . 0 ) ( + c o s ( . r ( ~ , o ) ( + c o s ( a ( ~ , a ) ( + c o s ( a ( (2) ~.u)(, wo D d e i i Vektor D = (1: 1) bezeiclinet. Wariini wird hier H , .I, K , L $ g vorausgesetzt? Man nutze (iiriter dieser Einschrankung) Stetigkeits- urid Monotoriiecigerisc~iaften der Furiktion (2) ziir Herleitung von Nullstellen- und VorzeiclicIiaussageri dieser Funktion und damit von Existenz- urid Eindeutigkeitsaussagen ziiin globalen Miriirriurri der Funktion (1). 2.1.6 Ein Spiegelungssatz, geometrische Losung der
Minimierungsaufgabe Wurde Inan die Ableitung vori (1),ohne trigonorrietrische Funktiorien geschrieben, gleich 0 setzen urid dann durch rnehrfaches Quadrieren die Quadratwurzeln beseitigen, so entsturide eine algebraische Gleichung hohereri Grades, die auch Losungen triit der Eigerischaft hatte, nicht die ursprungliche Gleichung zu losen, sondern eine Gleichung rriit geainderten Vorseichen einiger Wurzeln. Wir werderi nun zeigen, daB sich im Fall kritischer Typeri uriter den Losungen auch eine rationale befindet, die sogar die urspriingliclie Gleichung lost. Dieser Nachweis erfolgt,, iriderri auf gcorrietrischem Weg ein Punkt Po E g geworineti wird, bei den1 sich durch direkteri Vergleich rriit jederri anderen P E g die Abstandssum111e zu H , J , K , L als minimal erweist. Zunachst stelleri wir fest: Die (bei geeigneter Urrilaufurig des Rasterquadrats) fur die Typeri 7 urid 8 geltenden Ungleichungeri (I 5 c 5 b 5 d besageri, dall das Rmhteck H , J K L ganz in der abgeschlossenen Halbeberie oberhalb g liegt. Der in Ubung 1 ausgeschlossene Fall (hier wegen der Eirischr%rikung auf die Typen 7 urid 8 in der Bezeichnung a 5 c 5 b 2 d einfach der Fall a < c = b < d fur Typ 7, also *I E g) ordiiet sich in die folgende Beweisfuhrung problernlos ein, sogar als einer der unteri in Ubung 2 betrachteteri ,,trivialen" Falle. Die arigekuridigte Gewirinurig von Pa berufit auf derri folgenden Satz, der sich als Aussage uber Spiegelungseigerischaften forrriuliereri laat (siehe Abb. 9) :
Satz 4. Es seien g und s zwei Geraden, die sich unter einem Wankel von 45' schneiden; es sei Z ein Punkt nuf s. Geht dann ein Punkt K bei Spiegelung an
2.1 Rasterquadrat-Typen, Dreieckszerlegung mit Langerisummenminimierung
15
K , L bei Spiegelung an g in K', L', bei Punktspiegelung a n 2 in H , J uber (wobei 2 und K so gewiihlt seien, daJ? die eben genannten Bedingungen der Typen 7 oder 8 zustandekommen), so schneiden sich HK' und *JL' in einem auf g liegenden Punkt PO.
s in L uber und gehen
Y
9
u
s
v
Abb. 9
Weitgehend ohne rechnerische Zwischenschritte (siehe jedoch unten Ubung 2) la& sich Satz 4 unter Verwendung projektiv-geometrischer Hilfsmittel beweisen: Von tler Konfiguration in Abb. 9 halte man s,g, K , L und damit die durch Spiegelung an g erhaltenen Punkte K ' , L' sowie die zu s parallelen Geraden u, w durch L , K fest. Projiziert man nun jeden Punkt P E g einerseits aus K' auf H E u und andererseits aus L' auf J E v , so behaupten wir, dafl die damit fur jedes H E u durch p(H) := J definierte Projektivitat p : u -+ w mit der Spiegelung an s ubereinstimmt. Damit wird der Beweis von Satz 4 erbracht (denn die dort genannten H , J sind aufgrund ihrer Definition ein Urbild/Bild-Paar bei der Spiegelung an s; folglich gilt fur sie als Urbild/Bild-Paar bei 'p: Mit einem POE g sind
16
2 Niveauliiiicri in einem eirizelnen Rastcrquadrat
sowohl K’, PO,H als auch L’, PO,J kollinear). Die Behauptung uber cp trifft nun speziell fur die in Abb. 9 ersichtlichen PI, P2, P3 z u (da einerseits fur P = PI sich H = P I ,<J = Ql, fur P = P2 sich H = Q2, J = P2 ergibt und fur P = P3 beide Punkte H , J in den gemeinsariien Fernpurlkt Q3 von u urid fallen, wahrend wegen der Spiegelung an g andererseits IQLPIL’I = IQKP2K’I = 2 . 45” gilt, also P,,Q1 bzw. Q2, P2 jeweils Urbild/Bild-Paare bei der Spiegelung an s sind). Nach dem Hauptsatz uber Projektivitaten (siehe z.B. “J], S. 256) folgt daraus die behauptete Ubereinstimniurig fur jedes H E u. Etwas einfacher lassen sich anstelle des Ruckgriffs auf den Hauptsatz aucti solche Satze der projektiven Geometrie heranziehen, rriit deneri seinerseits der Hauptsatz begrundet werden kann. So gibt es nach einer brieflichen Mitteilurig folgenden Beweis zu Satz 4. Es sei A1 := H , A2 := K’; A3 sei der von G . PICKERT genieinsame Fernpunkt der Geraden KIP2 und L‘Pl; ferner sei A4 := L’, A5 := I ; A6 sei der Fernpunkt Q3. D a m liegen nach dem Satz von Pappos-Pascal die Schnittpunkte PI = A3A4n A6A1,P2 = A2A3 n AS& und Po = A l A 2n A 4 A , auf einer gemeinsanien Geraden. Der damit bewiesene Satz 4 ermoglicht die angestrebte Gewinnung von P , mit anschliefiendem Minimalitatsnachweis durch direkten Vergleich:
Satz 5 . Sind H , J , K , L wie in Forderung 2 und gelten die Beziehungen von Typ 7 oder 8 rnit a 5 c 2 b 5 d, so gilt fiir den Schnittpunkt Po := HK‘ n y und fur jeden uon Po verschiedenen Punkt P E g die Ungleichung
IPoHI
+ IPoJI + IPoKI + lPoLl < lPHl+ lPJl+ lPKl+ IPLI.
Beweis: Nach Satz 4 gilt auch Po = J L ‘ n g . Jedes von Po verschiedene P E g ist daher weder niit H , K‘ noch rriit J, L’ kollinear, also gilt nicht nur
IPoHI
+ IPoKI = IPoHI + IPoK’I = IHK’I
< IPH( + IPK’I
= (PHI
+ IPKI,
sondern auch
lPoJl
+ IPoLI = IPoJI + IPOL’l
= IJL’I
< lPJl
+ IPL’I
=
IPJ
+ JPLI.
Daraus folgt die Behauptung. Ubung 2. Man fuhre den Beweis von Satz 4 auch rechnerisch: Die Geraderi durch H = ( a ;b ) , K’ = ( d ;c) und durch J = ( c ;b ) , L’ = ( d ;a ) , naimlich ( b - c ) x + ( d - a ) y = db - ca bzw. ( b - a ) z ( d - c)y = db - ca, gehen durch Po = ( m o ; n ~mit ) db - ca 7rto = (3) d+b-c-a ’ Man diskutiere auch sowohl fur den obigen geornetrischeri als auch fur den rechnerischen Beweis die bei Typ 7 und 8 in den Ungleichungen a 5 c 5
+
2.1 Rasterquadrat-Typen, Dreieckszerlegung rnit Langensummenminimierung 17
b 5 d moglichen Falle rnit auftretenden Gleichheitszeichen (z.B. die bei Typ 8c moglichen Falle, in denen das Rechteck H J K L zur Strecke, aber nicht Zuni Punkt entartet) . Insbesondere bestatige man: 1. Im Fall a < c = b < d (Typ 7) wird einerseits die Aussage von Satz 4 rnit PO= J = (b;b ) trivial, andererseits geht auch (3) in mo = b uber. 2. Im Fall a -+ d = b c (Typ 7a, 8a, 8b) vereinfacht sich Satz 4, da H J K L ein Quadrat ist (bei Typ 8a zum Punkt entartet), so dafl sich die Punkte L , J, PO,J', L' kollinear mit LL' Ig und JdHPOLI = I
+
+
Die in (3) genannte Zahl mo nennen wir aus spater (Abschnitt 2.2.3, Satz 8) ersichtlichen Grunden das Parallelmittel p ( a , c, b, d ) :=
db - ca d+b-c-a
der zlier Zahlen a, c, b, d (mit max(a, c ) 5 min(b, d ) und a c < b d ) . Nachdem es hier als Losung fur (Forderung 2 und damit fur) Forderung 1 auftrat, wird es auch in einem weiteren Zusammenhang (Abschnitt 2.2.3, Satz 7) nochmals die in 1.3 erwahnte ,,Schlusselzahl"-Rolle spielen.
+
+
Als weitgehend offene Fragen bzw. Fortsetzungs- und Verallgemeinerungsmoglichkeiten der Konzeption seien bereits an dieser Stelle folgende Anmerkungen eingefugt: 1. 1111weiteren Verlauf der Niveaulinienbildung wird sowohl das Parallelmittel als auch das arithmetisclie Mittel von vier Zahlen a , b , c , d eine Rolle spielen. Das Verfahren kann dabei deswegen zustandekommen, weil beide Mittelbildungen gewissen Bedingungen genugen (zum Teil weiter unten ausdrucklich formuliert in 2.2.1, Satz 6; 2.2.3, Satz 7; 2.2.4, Satz 9; 2.3.1, Satz 13; 2.3.2, Satz 14). Wie weit werden solche Bedingungen auch von anderen Mittelbildungen zu vier Zahlen a , b, c, d erfullt? 2. Welche Anderungen ergeben sich, wenn man fiir das weitere Verfahren die Auszeichnung des Quadratmittelpunktes aufgibt und stattdessen einen beliebigen inneren Punkt des Quadrates wahlt? 3. Welche Bedingungen konnten dann zusatzlich gestellt (und durch Wahl dieses inneren Punktes erfullt) werden?
2 Nivcauliriieri in einem cirizclnen Rasterquadrat
18
Iteration mit dem arithmetischen Mittel
2.2
2.2.1 Graphische Verbesserung als Motivation zum Iterationsansatz
Ubung 3. Man bilde fur das Quadrat ails Abb. 6 urid fur die dort gewahlten Niveau-Werte 1; 1,5; . . . : 5,s; 6 die Niveaulinien, die bei der Zerlegung entstehen. Man (lurch beide Diagonalen urid bei der Walil p( 1 , 3 . 5 , 6 ) = bestatige, dafl die Langerisurrirne der hierniit gebildeten Niveauliriieri kleiner als beide Langensummen i r i Abb. 6 ist.
7
Ungeachtet der erreichten Minimalitatseigerischaft kann man an derartigeri Beispieleri als graphischen Nachteil feststellen, tlaB Linien rriit ,,uberflussig krasser", namlich spitzwinkliger Richtungsainderung auft,reten. Urn dies zu verrneiden, gehen wir zu einerri anderen Verfahren uber (spater wird sic11 zeigen, dafl es an den globalen Konsequenzen der bisher erarbeiteteri Linienfuhriirig nichts aridert): Wir zerlegeri das Quadrat nicht in vier Dreiecke, soridern in vier Quadrate. Wieder ist es erforderlich, eine Belegung fur den Mittelpunkt des ursprunglichen Quadrats zu walilen. Diesrnal ist es nalieliegend, liierfur das arithmetische Mittel 1 4
~ ( aC ,,b, d ) := - ( a
+ c + b +d)
der vier Zahlen a , ( : , b , d zu netiirien, und zwar u.a. deswegeri, weil es sowohl das arithrnetische Mittel der gemaIJ 2.1.1 vorliegenden Belegurigen i ( u + b ) , ;(c d) der Seitenmitten von A B , C D als auch das arithmetische Mittel der Belegungen $ ( a d ) , !j(b c ) der Seitenmit,ten von A D , BC ist. Mit arideren Worten: Wenn man auch fur die vier Teilquadrate die Raridbelegurig wie in 2.1.1 durch lineare Interpolation walilt, so wird auf beiden Mittelparallelen des ursprunglichen Quadrats durchgehend linear iriterpoliert (anders als in 2.1.4 2.1.6 auf den Diagonalen). Nach der Zerlegung und der genannten Wahl der Mittelpunktbelegung ist es weiterhin riaheliegerid. in den unkritischen Teilquadraten die Niveaulinien gemaif3 2.1.3 zii verwenden. Abb. 10 zeigt ein Beispiel fur die damit erhaltene teilweise Linienfiihriing. Die bereits hier ersichtlichc Liriienfuhrung ist in mehrfacher Hinsicht sehr vorteilhaft (siehe unteri h u n g 4). Insbesondere bedeutet die vollstandige Ausfullung der drei unkritischen Viertelquadrate raumlich betrachtet das Vermeiden ,,uberflussiger" Teilgebiete rnit konstanteni Funktionsverlauf. In Situationen, in denen Varianten angeben, die dies weriiger wichtig ist, werden wir spater auch ,,grobereLL jedoch stets keirieri Einfluif3 auf die globale Liriierifuhrung haben.
+
+
+
~
2.2 Iteration mit dem arithmetischen Mittel
19
Abb. 10
Die 13eobachtung, dal3 in diesem Beispiel nur eines der vier Teilquadrate kritisch ist, wird durch folgenden Satz verallgemeinert: Satz 6. Zerlegt m a n ein Quadrat eines kritischen Typs in vier Quadrate und
helegt den Mittelpunkt des urspriinglichen Quadrats mat dem arithmetischen Mittel von dessen Eckwerten, so gilt: Liegt fur das urspriingliche Quadrat nicht Typ 8b vor, so ist hochstens ein Teilquadrat kritisch. Liegt aber Typ 8b vor, so sind genau zwei Teilquadrate kritisch, und zwar ,,antisymmetrisch" vom Typ 7; d.h.: Diese zwei Teilquadrate haben die ~gemajl Qp 7 auftretende - Seite mit gleichen Eckwerten gemeinsam, und die senkrecht hierzu in die beiden Teilquadrate hinein auftretenden Diflerenzen Bind jeweils zueinander entgegengesetzt gleich. Zum Beweis sind in Abb. 11 jeweils Ungleichungen, die aus den Voraussetzungen des betreffenden Typs folgen, durch Pfeile von der kleineren zur groaeren Zahl angedeutet; die Gleichheit zweier Zahlen wird durch parallele Linien gekennzeichnet.
20
2 Niveaulinien in einerri eirizelnen Rasterquadrat
a+2b+d
D i t terenz L
C
2
Dift e r m
b-C 2
11. Fat t a + b + d
5
12.Fatl:a + b + d z 3 c l
3c I
Abb. 11
2.2 Iteration mit dem arithmetischen Mittel
21
Die resultierenden Typen sind in die skizzierten Teilquadrate eingetragen. Bei der Behandlung der Typen 7b und 8c wurde nach Satz 1berucksichtigt, daB man durch eventuellen Ubergang von a , b, c, d zu -a, -b, -c, -d in der Ungleichung a+d # 2b bzw. a d # b c sogar stets a d < 2b bzw. a d < b c erreichen kann; d.h. auch: Wenn bei Typ 8c eines der Gleichheitszeichen in a 2 c < b 5 d vorliegt (wegen a d # b c genau eines), so kann man erreichen, dafl a < c < b = d gilt. In Abb. 11 werden Ungleichungen mit zugelassenem Gleichheitszeichen durch parallele Linien mit Pfeilspitze kenntlich gemacht. Der damit bewiesene Satz 6 motiviert das Ansetzen der folgendermafien definierten Iteration:
+
+
+
+
+
+
+
Definition 2 (Iteration rnit Verwendung des arithmetischen Mittels). Fur jedes kritische Quadrat belege m a n den Mittelpunkt mit dem arithmetischen Mittel seiner vier Eckwerte und zerlege dann unter seinen vier Teilquadraten das kritische, sofern genau ein solches vorkommt, bzw. die beiden ,,antisymmetrischen '' kritischen Teilquadrate (mit folglich symmetrischen Weiterteilungen) jeweils weiter in vier Teilquadrate. Diese Teilungsschritte setze m a n solange fort, bis entweder kein kritisches Teilquadrat mehr auftritt oder aber erstmalig ein solches, bei dem das Interval1 zwischen Minimum und Maximum der vier Eckwerte denjenigen Zahlenwert nicht am Innern enthalt, dessen Niveaulinie gezeichnet werden soll. I n jedes bei diesen Teilungen entstehende unkritische Quadrat zeichne m a n die Niveaulinien gemafl2.1.3. Unter welchen Bedingungen eine so angesetzte Iteration nach endlich vielen Schritten endet (und damit algorithmisch verwertbar wird) bzw. durch welches endliche Verfahren sie andernfalls zu ersetzen sein kann, werden wir spater (Abschnitt 2.2.2) diskutieren. Abb. 12 zeigt als Beispiel die Fortsetzung der in Abb. 10 begonnenen Iteration bis zum Abbruch durch Auftreten eines kritischen Teilquadrats, das von keiner der gezeichneten Niveaulinien mehr durchquert wird.
Ubung 4. Man bestatige, dafl durch das Iterationsverfahren mit arithmetischem Mittel die folgenden graphischen Verbesserungen erreicht sind: 1. Langs jeder Niveaulinie treten im Innern des ursprunglichen Rasterquadrats hochstens stumpfwinklige Richtungsanderungen auf. 2. Betrachtet man diese Richtungsanderungen als vorzeichenfahige Angaben (Unterscheidung von ,,Anderung nach rechts/links") , so bleibt langs jeder Niveaulinie das Vorzeichen dieser Anderungen konstant. 3. Fur jede Strecke, die das Rasterquadrat parallel zu einer seiner Seiten clurchquert, gilt: Verfolgt man Iangs dieser Strecke die von ihr geschnittenen Niveaulinien, so andern sich die in den Schnittpunkten vorliegenden Richtungen dieser Niveaulinien monoton. (Dabei ist sinngemafi ein monotoner Ilurchgang durch go", bei Charakterisierung von Richtungen durch den Tangens also ein Sprung von +co nach -m zugelassen.)
22
2 Niveauliriieri in einerri cirizelnen Rasterquadrat
Abb. 12
Ahnlicli wie in 2.1.6 (Ubung 2) zeigt sich auch in der Beweisfuhrung zu Satz 6, daB sich die Gewinnung von Niveaulinien durch Iteration auch fur Typ 2 rnit vergleichbarern Verhaltnis von Aufwarid zu Effekt (,,Ausfullen freier Flachen") ausfuhren lafit; siehe Abb. 13 irn Vergleich zu 2.1.3, Abb. 4, Typ 2. Bei den ubrigen unkritischen Typen wurde dagegen durch grofieren Aufwand (Weiterteilung von einer grofieren Anzahl von Teilquadraten, grofiere Teilstreckenanzahl der Niveaulinien) nur ein kleinerer Effekt (etwas naher bei 180" liegende Richtungsanderungen, etwas gleichmafiigere Verteilungsdichte der Niveaulinien auf die Quadratflache) erzielt werden. 2.2.2 Rechnerische Beschreibung der Iteration Aus derri Beweis zu Satz 6 (Abb. 11, Typ 7) und der in Abb. 13 ersichtlichen Konstellation geht hervor: Weridet man die Iteration auf alle Typen 7, 8 und 2 an, so ergibt sich niemals ein Abbruch des Verfahrens infolge Nichtvorkommens dieser Typen unter den Teilquadraten.
2.2 Iteration mit dem arithmetischen Mittel
23
Abb. 13
Die - somit stets unendlich viele Schritte aufweisende - Iteration, beginnend mit dem Startwert-Quadrupel der Eckwerte a0 := a, bo := b, co := c, do := d , sol1 nun rechnerisch beschrieben werden. Um diese Beschreibung moglichst einheitlich zu hdten, verzichten wir auf die im Beweis zu Satz 6 beachtete Unterscheidung zwischen Gleichheits- und Ungleichheitsfallen sowie auf die beweistechnische Moglichkeit, bei Bedarf (zur Vermeidung analoger Fallbetrachtung) von a , b, c, d zu -a, --b, -c, -d iiberzugehen. IBn Iterationsschritt bestehe demgemaa aus dem Ubergang von Eckwerten a,, b,,, c,, d, (in dieser Reihenfolge ein Quadrat der Typen 7, 8 oder auch 2 um, laufend) fur die a, 5 c, 5 b, 2 d, gilt, zu den Eckwerten a,+l, b,+l, c , + ~ d,+l, die (in dieser Reihenfolge ein Teilquadrat umlaufend) folgendermaaen definiert sind:
Definition 3 (Nachfolger-Eckwertebei Verwendung des arithmetischen Mittels). Jeweils in den Fallen bn dn 2 3cn; [In] (an dn 5 bn cn und) a, [2n] an d, 5 b, C, und 3c, 5 a, b, d,;
+ +
+ +
+ + + +
24
2 Niveaulinien in einem einzelnen Rasterquadrat
hat das im laufenden Iterationsschritt auszuwahlende Teilquadrat entsprechend die Eckwerte
In der Tat beschreibt diese Definition die gemafl Satz 6 und Definition 2 durchzufuhrende Iteration. Denn erstens folgt aus der Voraussetzung, dai3 a,, b,,, C n l dn umlauferid zugeordnete Eckwerte sind, dieselbe Eigenschaft fur a,+l, b,+l, c,+1, d,+l, bezogen auf jeweils eines der vier Teilquadrate. Und zweitens gilt auch fur die Nachfolgerwerte wieder a,+l 5 c,+1 5 b,+l 5 d,+l. Man erhalt dies in den Fallen [I,] und [2,] durch Vergleich mit Abb. 11, Typ Sc, sowie in den Fallen [4,] und [3,] aus denselben Abbildungen nach Spiegelung an der Waagerechten (anstelle der oben erwahnten Vorzeichenumkehr). Ferner sei bemerkt: Die bei [l,&] und [4,] eingeklammerten Bedingungen folgen aus der jeweils anderen Bedingung und a, 5 c, 5 b, 5 d,; sie sind also entbehrlich. Sie wurden trotzdem mit angegeben, da dann sofort die Vollstandigkeit der Fallunterscheidung ersichtlich ist. Wegen der Zulassung der Gleichheitszeichen ist die Fallunterscheidung nicht disjunkt. Von Interesse sind die Moglichkeiten des gleichzeitigen Geltens (im Hinblick auf die Einschrankung von [l,], [2,], [3,], [4,] ohne Zulassung der Gleichheit auch als ,,Trennungsbedingung" zu bezeichnen):
Zusatz zu Definition 3. Gleichzeitiges Gelten werde wie folgt bezeichnet: a, bn dn = 3cnj [5nl an dn = bn c,, [6nl a, c, d, = 36,. [7nl
+ + + + +
+
1x11 Fall [5,], d.h. bei gleichzeitigem Gelten von [I,] und [2,], erhalt man fur die gemaf3 Definition 3 zu bildenden Nachfolgerwerte (I,} und (2,) dasselbe Quadrupel, lediglich auf zwei verschiedene Arten formelmaflig geschrieben. Dasselbe gilt im Fall [7,] fur die Nachfolgerwerte (3,) und (4,). Im Fall [6,] (bei dem, wieder wegen a, 5 C , 5 b, 5 d,, gleichzeitig [2,] und [3,] gelten) sind dagegen die Nachfolgerwerte {a,}, (3,) nicht stets miteinander identisch. Sie sind aber, wie ein Vergleich mit Abb. 11, Typ Sb, zeigt, zueinander ,,antisymmetrisch", wie dies in Satz 6 beschrieben wurde. Die beiden Iterationsfortsetzungen, in die sich das Verfahren an dieser Stelle gabelt, sind daher auch in den Folgewerten von entsprechend ,,antisymmetrischer '' Struktur.
2.2 Iteration mit dem arithmetischen Mittel
25
2.2.3 Grenzwert der Iteration; das Parallelmittel
Wir zeigen nun:
Satz 7. Bei der in Definition 2 und Definition 3 beschriebenen Iteration, angewandt auf ein Quadrat der Typen 7 , 8, 2, gilt fur die Folge (bzw. f u r die nach Gabelung zustandekommenden Folgen) der durchlaufenen Teilquadrate und ihrer Eckenbelegungen: (i) Die Teilguadrcite konvergieren gegen einen eindeutig bestimmten (nach Gabelung also f u r die unterschiedlichen Folgen gemeinsamen) Grenzpunkt. (ii) Die Folgen aus Minimum bzw. Maximum der Eckenbelegungen dieser Teilquadrate konvergieren gegen das Parallelmittel p(a, c, b, d ) der Eckenbelegung ties Anfangsquadrats. Zugleich mit diesem Satz zeigen wir, dai3 das Parallelmittel neben den ,,Schlusselzah1"-Bedeutungen in Ubung 2 und Satz 7 die folgende geometrische Charakterisierung gestattet (siehe Abb. 14), mit der, wie bereits in 1.3 und 2.1.6 bemerkt wurde, die Bezeichnung ,,Parallelmittel" motiviert ist:
Satz 8. I n jedem Quadrat der Typen 7 , 8, 2 stehen sich auf jedem Gegenseitenpaar die bei linearer Interpolation mit dem Parallelmittel der vier Eckwer2e belegten Punkte so gegenuber, dug ihre Verbindungsstrecke parallel zu den anderen beiden Quadratseiten verlauft. Bei den Typen 7 und 2 wird dies trivialerweise erreicht, wenn m a n auf einer Seite mit gleichbelegten Eckpunkten jeweils einen geeigneten Punkt wahlt. Wir beweisen zunachst Satz 8, wobei zu den Typen 7 und 2 die Feststellung geniigt, daD fur a < d (und a 2 b 2 d ) stets p ( a , b, b, d ) = = b gilt, das Parallelmittel also der mehrfach vorkommende Eckwert ist. I3ei Typ 8 ist zu beweisen, dafl die Zahl m = p ( a , c , b,d) (unter der Voraussetzung a 5 c < b 5 d ) die Gleichungen
m-a b-a
d-m d-c
- _ _
erfullt, was sofort aus
und
und
m-a =b-m d-a
m -a =
db-ca-da-ba+ca+a2 d+b-c-a
d-m=
dZ+db-dc-da-db+ca d+b-c-a
b-m=
db b2-cb-bo-db+ca d+b-c-a +
~
b-c
- (d-a)(b-a) d+b-c-a
1
(d-a) (d- c) d+b-c-a
- (b-c)(b-a) d+b-c-a
folgt.
Zu Satz 7 beweisen wir als erstes, dafl in jeder g e m 8 Definition 3 zustandekommenden Folge von Quadrupeln (a,, b,, c,, d,) die Folge der (a,, d,) eine Intervallschacbtelung ist. In der Tat folgen wegen a, 2 cn 2 b, 2 d, fur alle vier mog= lichen Nachfolgerwerte {I,}, {2,}, {3,}, (4,) die Ungleichungen a, 5 a,+l <
26
2 Niveaulinien in einem einzelnen Rasterquadrat
2
2
3
4
3
m
3 1- - - j 3
4
$
1
27 7 6
1
2F;-I2 2
3
2
4
3 TYP 7a
4
2
0
TYP 2
TYP 7b
Abb. 14
d,+l 5 d, und d,+l - a,+l 5 ;(d, - u,), wobei fur die letzte Ungleichung im Fall der Nachfolgerwerte (2,) auch die Voraussetzung d, - c, 5 b, - a, aus [2,] heranzuziehen ist. Damit ist gezeigt, dafi fur jede solche Folge von Quadrupeln der gemeinsame Grenzwert limn+oo a, = limn+oo b, = limn+oo c, = limn+oo d, existiert. Weiter beweisen wir die Gleichung
Fur die Werte {ln},(2,) folgt sie aus P(%+l, G + l , bnS1, & + l I -
-
cn+dn)(bn +cn -c, an +bn +cn+dn) 2(c:+dn)+2(b, -4>, - (a, +b,+c, +d,)
= P(% c,,
ten)) b,,, &I,
- d b - c a - d, T b z -cz
-'Ln
mit entsprechender Rechnung fur die Werte {3,}, {4,}. Also ist das Parallelmittel ~ ( ac,,b, d ) der eben genannte gemeinsame Grenzwert. Aufierdem besagt die Gleichung (*) in Verbindung mit dem bereits gezeigten Satz 8: In jeder nach Definition 2 gebildeten Folge kritischer Teilquadrate hat jedes dieser Teilquadrate (abgeschlossen, also einschliefilich seines Randes verstanden) nichtleeren Durchschnitt mit einer der beiden Strecken, die gemafi Satz 8
2.2 Iteration mit dem arithmetischen Mittel
27
im Ausgangsquadrat zwei seitenparallel gegenuberliegende, mit p ( a , c, b, d ) belegte Rnndpunkte verbinden. Dadurch folgt die noch fehlende Eindeutigkeitsaussage in Satz 7, (i), indem sich namlich genauer ergibt: Zusatz zu Satz 7. Der Grenzpunkt der Folge von Teilquadraten ist der Schnittpunkt der gemaj? Satz 8 dem Parallelmittel zugehorigen seitenparallelen Strecken des Ausgangsquadrats. Durch diesen Zusatz ergibt sich auch die in 2.1.1 nach Definition 2 angekundigte Moglichkeit, fur jede Niveaulinie mit einem nach endlich vielen Schritten abbrechentlen Verfahren zum Ziel zu kommen: 1st der Wert w, zu dem die Niveaulinie gefunden werden soll, gleich dem Parallelmittel p ( a , c, b, d ) der Eckwerte, so resultiert die - ohne Iteration zu konstruierende verzweigte Niveaulinie aus Satz 8 (Abb. 14). 1st aber 'w # p ( u , c , b , d ) ,so ist spatestens bei demjenigen Iterationsschritt, in dem d, - a, < Ip(a, c, b, d ) - wI wird, ein Teilquadrat erreicht, das von der Niveaulinie zum Wert w nicht mehr durchquert wird. Nach der oben erhaltenen I Abschatzung fur die Folge der d, - a,, ist das spatestens fur n > 21og I p ( a ,",i,_w der Fall. ~
0
,
2.2.4 Geometrische Modellierung der Iteration
Zu dem Iterationsvorgang, bei dem in jedem Schritt das Aufsuchen eines von vier Teilquadraten auszufuhren ist, kann man die Rage aufwerfen, ob sich aus gegebenen Eckwerten a,b,c,d eines Rasterquadrates vom Typ (2 oder 7 oder) 8 die Schrittfolge dieser Auswahlentscheidungen a priori ablesen l a t . Um diese Frage in moglichst einfacher Form zu behandeln, wird man zunachst versuchen, die Vorgabe, von der die Auswahlentscheidungen abhangen, zu reduzieren. Man kann namlich von den vier Eckwerten a, b, c , d zur Vorgabe von zwei Zahlen z,y iibergehen, ohne da%das resultierende Niveaulinienbild sich andert. Das geschieht durch einen zweistufigen Normierungsvorgang. Dieser beruht seinerseits auf Invarianzaussagen, die zu den Invarianzaussagen aus 2.1.2, Satz 1, korrespondieren. Sie beziehen sich auf beide Mittelbildungen, die in Satz 7 aufgetreten waren. Satz 9. Das arithmetischeMitte1 a ( a ,c, b, d ) und das Parallelmittel p ( a , c, b, d ) (siehe 2.2.1 und 2.1.6) erfullen die Gleichungen
+t , c +t,b+ t , d + t ) = a(a,c,b,d) + t, p(u + t , c + t , b + t , d + t ) = p ( a , c, b, d ) + t;
a(u
a ( a - t , c -t , b . t , d - t ) = a ( a , c , b , d ) . t ,
-
p ( a . t , c . t , b t , d t ) = p(u, c, b, d ) t ;
4 4 b, c, a ) = 4% c, b , d ) , p(d, b, c, a ) =
4%c, b, d )
28
2 Niveaulinien in einem einzelnen Rasterquadrat
+
+
fur alle reellen a , b, c, d , t , die nur in den Formeln fur p durch a c # b d einzuschranken sind und wobei in der Multiplikationsformelfur p mit t = 0 die nicht definierte Zinke Seite p(a.0, c.0, b - 0 ,d.0) durch limt+o p ( a d ,c.t, b.t, d . t ) zu ersetzen ist. Indem man diese Aussagen anwendet, kann man bei geeignetem Beginn der Umlaufung a , b, c, d -. ohne die Iterationsfolge und das damit entstehende Niveaulinienbild zu andern - zunachst erreichen, daB ( a = b = c < d oder a < b = c = d bei Typ 2, a < b = c < d bei Typ 7 bzw.) a 5 c < b 5 d bei Typ 8 gilt; dann kann man additiv mit t = -a erreichen, daB a = 0 gilt; schlieBlich kann man multiplikativ 1 mit t = ; i noch d = 1 erreichen. Anders ausgedruckt bedeutet dies: Man erreicht, dafi die Eckwerte wie in Abb. 15 lauten, wobei sich x und y aus den urspriinglichen Eckwerten a , b, c, d zu c-a b-a z=Y = = d-a ergeben.
I“
f
Abb. 15
Daher kann man nun jede Vorgabe von Eckwerten a,b,c,d durch einen Punkt (z;y) einer Hilfsebene veranschaulichen. Die Ungleichungen fur Typ 8 lauten dann 0 5 x < y 5 1; die Punkte, die diese Vorgaben veranschaulichen, bilden also die in Abb. 16 gezeigte Dreiecksflache (einschlieBlich des linken und oberen Randes, ohne den rechten Rand); fur Typ 7 hat man die inneren Punkte des rechten Randes (0 < x = y < 1);seine Eckpunkte (x;y) = (0; 0) und (2; y) = (1;1) veranschaulichen Typ 2. Damit haben wir ein geometrisches Modell zur Behandlung der Iteration gebildet. Mit je einem Punkt (xo;yo) := (x;y) der Dreiecksflache wird eine Folge von Nachfolgerwerten (xn;yn) begonnen. Aus der Lage des Punktes ist der Reihe nach fur n = 0 , 1 , 2 , . . . erst abzulesen, welcher Fall [In], [2,], [3n], [4,] fur z, yn vorliegt,
2.2 Iteration mit dem arithmetischen Mittel
29
und demgemafi sind Definitionen {In}, {2,}, {3n}, (4,) der Nachfolgerwerte zn+l,yn+l vorzunehmen. Bevor wir dieses im folgenden Satz 10 ausfuhren, vereinbaren wir, dafi ab jetzt von der Dreiecksflache nur die Punkte fiir Typ 8 (also mit 0 5 x < y 5 1) betrachtet werden sollen und dafi in den Bedingungen [In], [2n], [3,], [4,] die Ungleichungen 1 < z,+yn und 1 > z,+yn ohne Zulassung des Gleichheitszeichens gefiihrt werden sollen. Das bedeutet, dafi bei Vorliegen einer Trennungsbedingung [6,] kein Nachfolgerwert mehr betrachtet wird. Gerechtfertigt ist dies damit, dafi die damit abgebrochenen Iterationen auf ein Quadrat des Typs 7 oder 2' gestoDen sind, nach Satz 7 (mit Zusatz) und Satz 8 also zu einem einfacher zu kennzeichnenden Verzweigungspunkt von Niveaulinien (Abb. 14, bezogen auf ein bei n-maliger Unterteilung des Rasterquadrats auszuwahlendes Teilquadrat). Satz 10 (Normierte Nachfolgerwerte bei Verwendung des arithmetischen Mittels). Jeweils i n den Fallen [In]
[2n] [3n] [4n]
+
(1 < xn Yn 1 < zn + ~ zn+Yn
(xn + y n
und)
n und
< 1 zlnd < 1 und)
1 Yn 5 3xn; 32, 5 1 + ~ ;n
+
1 +z,
2 3yn ;
39,
1
ergeben sich die Nachfolgerwerte
5
+ zn
Zusatz. Der Ubergang zwischen den Fallen [In], [2n] b.m. [3,], [4,] erfolgt uber die Rennungsbedingungen [5n] [6n] [7n]
[Zn], [3n] bzw.
1 + Yn = 32, 1 = zn f Yn 7 1 2, = 3yn . 7
+
Zum Beweis hat man die in 2.2.2, Def. 3 angegebenen Ungleichungen [I,], [2,], [3n], [4,] vermittels der Normierungsvorschrift [N], angewandt auf a,, b,, cn,d,, jeweils in Ungleichungen fur die gleichindizierten Variablen zn,yn zu iiberfiihren. Es geniigt offenbar, ebenso die Gleichungen [5,], [6,], [7,] zu bearbeiten; denn ist dies geschehen, so kommt man mit jeweils gleichlautenden Ersetzungen von Gleichheits- durch Ungleichheitszeichen zu [In], [2n], [3n], [4,]. In der Tat sind die
30
2 Niveaulinien in einem einzelnen Rasterquadrat
in 2.2.2, Zusatz zu Def. 3 , fur a,, b,, c,, d, angegebenen Gleichungen [5,], [6,], [7,] aquivalent zu ( d n - a n ) (bn - an) = 3(cn - a n ) bzw. d, - a, = (b, - a,) (c, - a,) bzw. (d, - a,) (cn - a,) = 3(bn - u,),
+
+
+
und diese geheri vermittels [N]uber in die oben fur z,y, behaupteten [5,], [6,], [7,]. Ebenfalls hat man die in 2.2.2, Def. 3 angegebenen Gleichungen {I,}, { 2 , } , {3,}, (4,) der Normierung [N) zu unterwerfen, sowohl mit n als auch n 1 als Indizes.
+
Ubung 5. Man fuhre diesen Beweisschritt durch, wobei man zwei niogliche Vorgehensweisen befolge: 1. Man wende {I,), { 2 , } , {3,}, (4,) aus 2.2.2, Def. 3 auf 0, x,, gn, 1 statt der dortigen a,, c,, b, d, an und gehe von den dabei als a,+1, c,+l, b,+l, d,+l erhaltenen Werten vermittels [N] zu z,+~,yn+l uber. 2. Man bestatige, dai.3 die hier in Satz 10 behaupteten {l,}, {2n}, {3n},(4,) in Identitaten ubergehen, wenn man erst Variable a,, b,, C n , d, und a,+l, bn+l,cn+1,dn+l durch Substitution von x,, yn bzw. z,+I,gn+l gemai.3 [N] einfuhrt und dann die eingefuhrten a,+l, b,+l, cn+1, dn+l nach 2.2.2, Def. 3, {I,}, { 2 , } , {3,}, {4,}, durch a,, b,, c,, d, ausdriickt.
Y
[51 Clill
> X
IOiOI Abb. 16
Abb. 16 zeigt, wie der Anfangsschritt der Iteration im geometrischen Model1 erfaBt wird: Das Dreieck (0;0)(0; 1)(1; 1) wird durch die Geraden mit den Gleichungen [50],[60],[70] in vier Teildreiecke zerlegt; wir bezeichnen diese Geraden mit denselben Symbolen ohne den Index 0. Die Teildreiecke sind diejenigen Teilmengen des gesamten Dreiecks, in denen jeweils eine der Bedingungen [lo], [20], [30],[40]
2.2 Iteration mit dem arithmetischen Mittel
31
gilt; wir ubernehmen auch hier die Symbole ohne den Index 0 als Bezeichnung der Teildreiecke. ller nachste Iterationsschritt wird dann im Modell folgendermaflen durchgefuhrt: In den Teildreiecken [ l ] [2], , [3],[4]wird durch die jeweils zugehorige Definition { l o } , {20}, {&}, (40) ein lokales X I , yl-Koordinatensystem eingefuhrt. In diesem definieren die Trennbedingungen [51], [61], [71]Geraden; fur sie fuhren wir neue Symbole [ i 11 k ] (i = 1,2,3,4; k = 5 , 6 , 7 ) ein. Diese Geraden zerlegen die Teildreiecke wiederum in je vier kleinere Teildreiecke, namlich in diejenigen Teilmengen, in denen aufler der betreffenden Bedingung [io] je eine der vier Bedingungen [ 1 1 ] ,[21],[31],[41] (fur die Koordinaten 2 1 , y1 des zugehorigen lokalen Koordinatensystems) gilt. Fur die so entstandenen 16 kleineren Teildreiecke fiihren wir die entsprechenden Symbole [ilj ] ( 2 , j = 1 , 2 , 3 , 4 ) ein. Abb. 17 zeigt die damit beendete Gestaltung des Iterationsschrittes im geometrischen Modell; die Flachensymbole sind sinngemai3 aus der spater erlauterten Abb. 18 zu entnehmen (dort vereinfacht zj geschrieben) .
X
Abb. 17
X Abb. 18
In dieser Weise fortfahrend wird sich fur die gesamte Iteration eine Darstellung im geometrischen Modell ergeben. Das Ausgangsdreieck wird durch Geraden mit den sinngema einzufuhrenden Symbolen [iolil I li, I( k ] (i,, = 1,2,3,4; k = 5 , 6 , 7 ) in Teildreiecke [iolill...li,li,+l] (i,, = 1,2,3,4) zerlegt, und man hat (hier zunachst in ,,abstrakter" Fassung) eine a-priori-Aussage fur den Iterationsablauf: Satz 11. Liegt ein Punkt (2;y) im Innern eines Teildreiecks [ioJ* . * /in],so verlauj? die Iteration bas zum Schritt n fiber die F d l e [i,,]( u = 0 , . . . ,n ) des
Typs 8, jeweils formuliert in den Nachfolgerwerten ( x u ;y,,).
32
2 Niveaulinien in einem einzelnen Rasterquadrat
Fur Randpunkte von Teildreiecken lassen sich ebenfalls (etwas kompliziertere) Beschreibungen des Iterationsverlaufs geben. Hierzu sowie zu ,,konkreteren " a-prioriAngaben empfiehlt sich zuvor der Ubergang zu einem geanderten Modell, das die Verhaltnisse noch einfacher durchschaubar macht. 2.2.5 Projektiv vereinfachter a-priori-Uberblick
In Abb. 17 zeigt sich namlich, daf3 bereits bei dem dort vorliegenden Iterationsschritt mehrere Trenngeraden ubereinstimmen, z.B. die Geraden [l 11 71, [2 [[ 71, [311 71. Man bestatigt dies im einzelnen durch entsprechende Anwendung der Gleichung [71] auf die gemaill {lo} bzw. (20) bzw. (30) definierten Nachfolgerwerte ( X I ; y1). So ergibt [71],angewandt auf {lo} (unter Beachtung von xo = x,yo = y), die Gleichung -1+3x-y = 3 . - 1 + x + y I+ l+x-y lfx-y l und diese Gleichung ist aquivalent zu x - 5y = -3; dasselbe stellt sich heraus bei Anwendung von [71] auf {20}, also fur 1 - 3 ~ + y-3.- -x+y l + 2(1-x) 1-2 sowie bei Anwendung von 1711 auf { 3 0 } , also fur 2 1+s-y 1+-=3. Y 2Y . Ferner fallt bei Betrachtung von Abb. 17 auf, daf3 drei der Trenngeraden in ihrer Verlangerung durch den Punkt (2; 1) und drei durch den Punkt (0; -1) gehen. Das legt es nahe, auf das Modell noch eine projektive Transformation anzuwenden, die diese beiden Punkte in die Fernpunkte der Koordinatenachsen uberfuhrt. Die Katheten des Modell-Dreiecks wird man in die neuen Koordinatenachsen selbst legen; der Punkt ( f ;f ) (und damit die Hypotenuse des Modell-Dreiecks) kann festbleiben. Die Transformation, die dies leistet, ist
X =
{.=
1-Y l-Z+Y
lx=
2Y 1+X+Y
1-s+y
Ubung 6. Man leite die Transformation [TI, mit homogenen Koordinaten (U : : w) = (1 : x : y) bzw. (U : V : W ) = (1 : X : Y ) in projektiver Schreibweise
U = p . (u- u + w),
w=p
u=(T.(U+V+W), u=(T
.v
w = (T. ( U -
v +W )
2.2 Iteration mit dern arithmetischen Mittel
-
33
gemafi dem Hauptsatz uber Projektivitaten als diejenige projektive Transformation her, die die Punkte
(u: 21 : w) = (1 : 0 : l), (1 : 2 : l), (1 : 0 : -l), (2 : 1 : 1) in dieser Reihenfolge in die Punkte
(V : v : W ) = (1 : 0 : O ) , (0 : 0 : l ) , (0 : 1 : O ) , (2 : 1 : 1) uberfuhrt. Wir wollen nun zeigen, dafi diese Transformation nicht nur fur die in Abb. 17 gezeigten Anfangsschritte der Iteration zu der in Abb. 18 ersichtlichen Vereinfachung fuhrt, sondern dafi dies auch sinngemafi fur die insgesamt fortgesetzte Iteration gilt. Man hat namlich: Sat2 12. Bei der Einfuhrung von Variablen Xn, Y, anstelle der zn,y, ver-
mittels der Dansformation [TI sind die Einschrankungen 0 5 x, 2 yn 5 1 iquivalent zu 0 5 X, 5 1, 0 5 Yn 2 1 - Xn. Ferner gehen die Formeln [in]( n = 1,.. . ,7) und {in} (i = 1,.. . ,4) iiber in
2
1
[In1
Yn
[2nl 13nl
xn< Y, 2 f, Y, < x, 2 ;, x, 2 y, = I2 ’
14nl 15nl l6nl I7nl {In} (2,) {3n} (4,)
2,
1. 2’
Xn = Yn,
xn
- I. 27
Xn+l = 2Xn Xn+l = 2Xn Xn+l= 1-2Xn 1 Xn+l = 2 x n - 1 , 1
7
Yn+l=2Yn-1, Yn+l=1-2Yn, Yn+1 = 2Yn, Y,+1 = 2Y,.
Zur rechnerischen Durchfuhrung des Beweises sei (anstelle einer Fortsetzung des hier in 2.2.5 zu Beginn angesetzten Arbeitens mit gebrochen-linearen Termen) das folgende Vorgehen empfohlen:
Ubung 7. Die wie in Ubung 6 eingefuhrten homogenen Koordinaten sowie die bei [TI und in Satz 10 und Satz 12 bei den Gleichungen {i,,} ersichtlichen Koeffizienten stelle man zu Matrizen U, U,,2,mi,‘332i zusammen: u, =
0
1
34
2
Niveaulinien in einem einzelnen Rasterquadrat 1
1 -1
-1
1
-1
0
0
0 2
usw. Dann gilt &+I = 2 . un+l = T . mi . u, = 2 . mi. 2-1. &, so dail die behaupteten 332i sich als
mi= z . mi.
~ - 1
berechnen lassen (i = 1,. . . , 4 ) . Entsprechend verfahre man mit den (in einer Seite auf 0 gebrachten) Gleichungen und Ungleichungen [in]. Aus den Angaben in Satz 12 liest man nun ab: Da in den Gleichungen und Ungleichungen auiler [2,], [3n]1[6,] stets entweder nur Variable X, oder nur Variable Y, vorkommen, sind Trennlinien [5n] bzw. [7,] stets Parallelen zur X-Achse bzw. zur Y-Achse. Ferner zeigt die Gestalt der Gleichungen, dai3 Trennlinien [6,] stets Parallelen zu einer der Winkelhalbierenden der Achsen sind und dai3 jeweils ein bereits vorliegendes gleichschenklig-rechtwinkliges Dreieck mit den (in lokalen Koordinaten angegebenen) Ecken (X,; Y,) = (0; 0), (0; l),(1; 0) durch Trennlinien der genannten Richtungen vom Punkt (X,; Y,) = ( f ; aus in vier gleichschenkligrechtwinklige Dreiecke zerlegt wird und dail jedes dieser Teildreiecke in den zugehorigen neuen lokalen Koordinaten wieder die Ecken (Xn+l;Y,+1) = (0; 0), (0;l),(1; 0) hat.
i)
Damit wird das Ablesen des Iterationsverlaufs aus den Eckwerten a , b, c, d eines Rasterquadrats von kritischem T y p in konkretisierter Weise ermoglicht. Zur Beschreibung seien Dualbruchdarstellungen verwendet. 1st z eine reelle Zahl mit 0 5 z 5 1, so ist die Dualbruchdarstellung
eindeutig, wenn festgelegt wird, dail Einerperioden (Existenz eines n mit z , = 1 fur alle v 2 n ) zu vermeiden sind. Wir schreiben kurz z = (zgz1z2. . . ). Aus den Zahlen X = (eoele2.. -),
y = (fOflfi...), x + y = (909192 . . . ), IY - XI = (hOhlh2.. .),
&
= sgn(Y - X)
ist dann fur jedes n = 0 ,1 ,2 ,. . . der Iterationsablauf bis zum Schritt n ablesbar. Der ,,allgemeine Fall" ist dabei derjenige, dail Indizes p , q , r , s mit p > n 1, q > m 1, T > n, s > n und e p = 1, fq = 1, g,. = 1, h, = 1 existieren. In diesem Fall liegt der Punkt ( X ; Y ) namlich sowohl im Innern des Quadrates a, das fur P = (eo...e,+l), Q = (fo...f,+l), L = 2-"-' zwischen den Parallelen X = P, X = P L und zwischen den Parallelen Y = Q, Y = Q L liegt, als
+
+
+
+
2.2 Iteration mit dem arithmetischen Mittel
35
auch im Innern des Quadrates 6, das fur R = (go . * .gn) , S = E * (ho . . * hn) , M = 2-" zwischen den Parallelen X Y = R, X Y = R M und zwischen den Parallelen Y - X = ES, Y - X = ES M liegt. Als Durchschnitt U n 6 entsteht eine Dreiecksflache. Sie ist andererseits nach Satz 12 dadurch zu erreichen, daB man aus dem Ausgangsdreieck (0;0)(1;O)(O; 1) der Reihe nach fur v = 0,1,. . . ,n je eine Auswahl unter den vier Teildreiecken [l,], [2,], [3,], [4,] trifft, wobei in jedem Zerlegungsschritt eines bereits erreichten Dreiecks die Reihenfolge dieser vier Teildreiecke dadurch zu finden ist, daB die Trennlinien zwischen [l,], [2,], zwischen [2,], [3,] bzw. zwischen [3,], [4,] (also [5,], [6,] bzw. [7,]) die oben angegebenen Richtungen haben. Die Reihenfolge der so gefundenen Zahlen [i,] (v = 0,1,. . . ,n) gibt fur das Dreieck 11 n 6 die in 2.2.4 erklarte Symbolik [iolill . . [in] und damit den Iterationsablauf an, wie er gemaB 2.2.2, Def. 3, diesen Symbolen zugeordnet ist.
+
+
OOOO
- MI01 - 0010 001 1
0100
0101
0110
0111
1000
P
Abb. 19
+
+
2 Niveaulinien in einem einzelnen Rasterquadrat
36
In Abb. 18 und Abb. 19 ist diese Zuordnung der Symbole [iolill ...I in] zu den Dreiecken r l n 6 fur die Anfangsschritte n = 0,1,2 ersichtlich. Als Beispiel sei etwa das in den Abbildungen 3 ,5 ,6 ,1 0 und 12 gezeigte Quadrat vom Typ 8c betrachtet. Aus den Eckzahlen, umlaufend als a , b, c, d mit a < c < b < d angeordnet a = 1, b = 5, c = 3, d = 6, ergibt sich nach [N] und [TI zunachst x = 52 , y = und dann
x = -71 = (om), 2 -=(an), 7 x + Y = 37 = (om),
Y=
-
Y
- x = 71 = (0001) -
(Uberstreichen kennzeichnet die Perioden). Damit liegt z.B. fur n = 2 der Punkt (X; Y ) im Innern des Quadrates rl zwischen X = P = (OOOl), X = P L = (0010) und zwischen Y = Q = (OOlO), Y = Q L = (0011) und im Innern des Quadrates 6 zwischen X Y = R = (OOl), X Y = R M = (010) und zwischen Y - X = S 1(000), Y - X = S + M = (001). Damit ist an6 = [21214]gefunden (siehe die Hervorhebung in Abb. 19), und in 2.2.2, Def. 3 hineingehend ergeben sich die in Abb. 20 gezeigten Iterationsschritte, ubereinstimmend mit Abb. 12.
+
3
do=6
Cg=
ao= 1
bo= 5
+
d1=4~5
4,125
a,=3
~
+
+
1
+
3,75 =
bl= 4
Cz = 3,8125
d2=4,125
az=3,75
3,8125
b2=3,875
Abb. 20
Weiter betrachten wir als ,,extrem speziellen Fall" die Situation, dai3 sowohl X als auch Y endliche Dualbruche sind, etwa (hochstens) n-stellige ( e , = f, = 0 fur alle v > n, also auch g, = h, = 0 fur alle v > n). Indem man notigenfalls zu n 1 statt n ubergeht, erreicht man, dai3 en = fn gilt. Damit ist erreicht, dai3 der Punkt ( X ;Y ) Hypotenusen-Endpunkt angrenzender Teildreiecke ist. Dies wiederum bedeutet: Spatestens im Iterationsschritt n wird der Fall (X,; Y,) = (0; 0) oder (Xn; Y,) = (1;l ) , also Typ 2 erreicht. Den Iterationsablauf bis zu diesem Schritt kann man wieder ablesen, indem man fur v = 0 , . . . , n verfolgt, welche Zerlegungsschritte der fur [5,], [6,], [7,] genannten Richtungen auf den Punkt
+
2.3 Iteration mit dem Parallelmittel
37
( X ;1') fuhren. Ein Beispiel dieser Art ist das folgende Quadrat vom Typ 8b: 2 a = 0, b = 2, c = 1, d = 3, 2 = s1 t y = 3; X = = (OOl), Y = = (001); dieser Punkt wird uber die Geraden
[:I1
:1 6
erreicht. Das besagt: Die Iteration gabelt
sich; verfolgt man etwa den Schritt (20}, der zu a1 = 1; bl = 1.5; c1 = 1.5; dl = 2 fuhrt, so ist der Punkt ( X ; Y )(wegen seiner Lage im Innern der Hypotenuse des Dreiecks [2]) durch seine lokalen Koordinaten im X I , Y1-Koordinatensystem als zu Typ 7 gehorig erkannt, und zwar liegt eben (da es sich um den Mittelpunkt der Hypotenuse handelt, also beim nachsten Zerlegungsschritt um den gemeinsamen Hypotenusen-Endpunkt von Teildreiecken) der zur Iterationsfortsetzung auf Typ 2 fuhrende - Typ 7a vor (siehe 2.2.1, Abb. 11 die beiden Fortsetzungsmoglichkeiten fur Typ 7a und 7b). Schlieillich gibt es noch den ,,gemischt-speziellen" Fall, dail der Punkt (X; Y ) zwar auf einer der Trenngeraden liegt, aber bei keinem Weiterteilungsschritt in den Schnittpunkt mehrerer Trenngeraden kommt. Dieser Fall tritt ein, wenn genau eine der vier Zahlen X , Y, X+Y, Y - X ein endlicher Dualbruch ist. 1st dies X oder Y , so besagt das: Von einem Zerlegungsschritt (Index n) an ist die Trenngerade die Achsenparallele [5,] bzw. [7,] (v = n 1, n 2 , . . ); also verbleibt nach dem Zusatz zu Def. 3 gleichgultig, welches der beiden Nachfolgerwert-Paare {l,}, (2,) bzw. {3,}, (4,) jeweils zu wahlen ist - der Iterationsablauf stets in Typ 8c. 1st aber genau X + Y oder Y -X der endliche unter den vier Dualbruchen, so liegt von einem Schritt (Index n) an die betreffende Parallele [6,] zu einer Winkelhalbierenden der Achsen vor (v = n + l , n + 2 , . . . ): Nach einer Gabelung wie oben in dem ,,extrem speziellen Fall" - sofern nicht die genannte Gerade [6,] von Anfang a n die Gerade X Y = 1 selbst ist, d.h. sofort Typ 7b vorliegt verbleibt die Iteration stets in Typ 7b, gelangt also, anders als in jenem Fall, niemals uber Typ 7a zu Typ 2. Man betrachte als Beispiele etwa: a = 0, b = 5, c = 4, d = 11, ferner a = 0, b = 8, c = 5, d = 9 sowie a = 0, b = 9, c = 7, d = 10. ~
+
+ .
~
+
2.3
~
Iteration mit dem Parallelmittel
Bevor wir die bisher betrachtete, auf ein einzelnes Rasterquadrat bezogene Gewinnung von Niveaulinien in einen globalen Algorithmus einbauen, betrachten wir noch eine andere Moglichkeit zur Iteration als die Wahl des arithmetischen Mittels. Die inzwischen nebenbei bemerkten Eigenschaften des Parallelmittels lassen es nainlich motiviert erscheinen, in jedem Iterationsschritt den Mittelpunkt des Rasterquadrats mit dem Parallelmittel der vier Eckwerte zu belegen. 2.3.1 Die Ftille eines Iterationssehrittes
Betrachtet man zum Vergleich Satz 6 in 2.2.1, so kann in der Formulierung sogar Ubereinstimmung festgestellt werden:
38
2 Niveaulinien in einem einzelnen Rasterquadrat
Satz 13. Bei Verwendung des Parullelmittels gelten bezuglich des Aujlretens
kritischer Teilquadrate und ihrer ,,Antisyrnmetrie" dieselben Aussugen wie bei Verwendung des arithmetischen Mittels.
Zum Beweis kann man namlich zunachst aus 2.2.1, Abb. 11 die Darstellung zu Typ 7a, Typ 8a und Typ 8b ubernehmen; denn in den dort vorliegenden Fallen stimmt das Parallelmittel mit dem arithmetischen Mittel uberein. Bei Typ 7a und Typ 8a ist das unmittelbar nachzurechnen, und auch bei Typ 8b folgt aus a d = b+c leicht uber ( u + d ) ( b - c ) = (b+c)(b-c) und 2(db-ac) = ( b + c ) ( d + b - c - a ) die Ubereinstimmung der beiden Mittel. In weiteren zum Bcweis heranzuziehenden Details sind allerdings auch bemerkenswerte Unterschiede festzustellen. Wie Abb. 21 zeigt, fuhrt Typ 7 in jedem Fall uber Typ 2 aus den kritischen Typen heraus, und bei Typ 8c spielt eine weitere Fallunterscheidung keine Rolle mehr.
+
a
a+b 2
b Abb. 21
Die fur diesen Typ noch benotigten Ungleichungen zwischen dem Parallelmittel und den Zahlen ( u + d ) / 2 , (b+c)/2, (a+b)/2, c kann man auf ahnliche Weise wie die eben zu Typ 8b genannte Gleichung bestatigen. Zusammenhangend mit den eben genannten Unterschieden zeigt sich auch, daB bei Typ 2 ein Unterschied zwischen der Iteration mit dem arithmetischen Mittel und dem Parallelmittel entsteht: Das Parallelmittel ist gleich der dreifach vorkommenden Eckzahl. Belegt man damit den Quadratmittelpunkt, so haben die vier Teilquadrate daher die Typen 1,2,2 und 6 . Die fortgesetzte Iteration fuhrt einfach zu dem in Abb. 4 fur Typ 2 gezeigten Bild; eine vollstandige Quadrat-Ausfullung wie in Abb. 13 unterbleibt. Diese Auswertung von Typ 2 hat nach dem hier in Abb. 21 zu Typ 7b Gezeigten sowie nach 2.2.1, Abb. 11, Typ 7a, Typ 8a auch bei diesen Typen die Konsequenz, daO das Feldlinienbild leerbleibende Dreiecksflachen aufweist. Wir kommen auf diese Besonderheit im Zusammenhang mit Wahlmoglichkeiten zwischen ,,besonders groben", ,,glatter bildfullenden" und ,,vermittelnden" Varianten zuruck.
2.3 Iteration mit dem Parallelmittel
39
Als weiteres Beispiel zum Vergleich der Linienfiihrung zeigt Abb. 22, wie die Iteration mit dem Parallelmittel auf das bereits mehrfach betrachtete Quadrat aus 2.2.1, Abb. 12, wirkt.
Abb. 22
2.3.2 Rechnerische Beschreibung, Konvergenz
Wie in 2.2.2 eroffnet Satz 13 die Moglichkeit, mit jedem Startwert-Quadrupel a0 := u,bo := b, co := c, do := d umlaufend bezeichneter Eckwerte eines Rasterquadrats vom Typ 7 (a < b = c < d ) oder Typ 8 (u 2 c < b 2 d ) ein Iterationsverfahreii zu beginnen. Man ubernehme zunachst Def. 2 aus 2.2.1, eben nur mit dem Parallelmittel statt des arithmetischen Mittels. Dann erfolgt die rechnerische Beschreibung in analogem Vbrgehen wie in 2.2.2, Def. 3, allerdings wegen der soeben beobachteten Unterschiede mit andersartiger Fallunterscheidung:
Definition 4 (Nachfolger-Eckwertebei Verwendung des Parallelmittels). Jeweils in den Fallen
“LI
an
+ d, 5 bn + cn,
40
2 Niveaulinien in einem einzelnen Rasterquadrat
[2n] bn + cn 5 dn hat das im laufenden Iterationsschritt auszuwahlende Teilquadrat entsprechend die Eckwerte b +c ._ d b -c a {In} an+l := cn, bn+l := y, .- d,;b:-c:-:, ' d,+l := c n +2d n . '
+
Wieder sind in dieser Definition u , + ~ b,+l, , d,+l jeweils umlaufende Eckwerte fur eines der vier Teilquadrate, fur die auch a,+l 5 cn+1 5 bn+l 5 dn+l gilt. Allerdings kann dies, wie oben bemerkt, auch auf Typ 2 fuhren. (Man beendet dann entweder die Iteration oder denkt sie in ahnlichem Ansatz wie in Abb. 13 unbegrenzt fortgesetzt. Nur fuhrt dies hier wie ebenfalls bemerkt beides zu deniselben Bild.) Weiterhin fuhren wir auch hier eine Bezeichnung fur die ,,Trennungsbedingung" (gleichzeitiges Gelten von [In]und [2n], d.h. Vorliegen von Typ 8b) ein: ~
Die beiden Nachfolger-Werte {l,}, {2,}, in die sich das Verfahren an dieser Stelle gabelt, sind wieder zueinander ,,antisymmetrisch". Zugleich sind sie allerdings vom Typ 7 und fuhrer1 daher im nachsten Iterationsschritt beide auf Typ 2. Die oben in 2.3.2 hierfur erwahnten freibleibenden Dreiecksflachen schlieflen sich zu Quadratflachen zusammen (deren Seitenrichtungen sind die Diagonalenrichtungen der Rasterquadrate). Mit diesem Effekt kann das Iterationsverfahren bei beliebig groflem n abbrechen; es konnen also beliebig kleine derartige freibleibende Quadratflachen auftreten. Bricht aber das Verfahren nicht ab, d.h., liegt stets Typ 8c (Fa11 [l,] oder [2n] ohne Zulassung des Gleichheitszeichens) vor, so gilt wieder Konvergenz:
Satz 14. Bei der in Definition 2 und Definition 4 beschriebenen Iteration, angewandt auf ein Quadrat des Typs 8 , gilt, wenn niemals der Fall [On] vorliegt: 1. Die Teilquadrate konvergieren gegen einen Grenzpunkt. 2. Die Folgen aus Minimum btw. Maximum der Eckenbelegungen dieser Teilquadrate konvergieren gegen einen gemeinsamen Grenzwert.
Mit der - nun durch die Voraussetzung erreichten Eindeutigkeit aller Iterationsschritte ist die Behauptung 1. unmittelbar bewiesen, und 2. folgt wieder durch &+I 5 d, und d,+l - a,+l 2 ;(dn - a n ) , was in Nachweis von a, 5 a,+l beiden Fallen [I,], [a,] leicht nachzurechnen ist. ~
2.3 Iteration mit dem Parallelmittel
-
41
2.3.3 Geometrisches Modell, Cremona-Transformationen
Wegen Satz 9 kann man auch bei der Iteration mit dem Parallelmittel die Normierung [N] vornehmen, also zu dem uber Abb. 15 erreichten Modell des Dreiecks aller (5; y) mit 0 5 x 5 y 5 1 ubergehen. Anstelle der Transformation [TI wollen wir hier die einfachere Transformation X=l-y, x = Y, [SI Y = 2, y=l-x anschlieflen, durch die ebenfalls das symmetrisch gelegene Dreieck aller Punkte (X; Y) mit 0 5 X $ 1, X Y $ 1 erreicht wird. Man erhalt
+
Satz 15 (Normierte symmetrische Nachfolgerwerte bei Verwendung des Parallelmittels). Jeweils in den F u l l e n [In1
Xn
< Yn,
[2nl Yn Xn ergeben sich die Nachfolgenuerte
Es genuge, von den zum Beweis fuhrenden Rechnungen ein Beispiel auszufuhren und etwa die in {In} angegebene Formel fur Xn+l zu bestatigen. Wahlt man von den Vorgehensweisen wie in 2.2.4, Ubung 5, etwa die 1. MGglichkeit, so besagt das hier: Man wendet die in Definition 4 vorliegende Gestalt von {In} auf 0, xn, ynr 1 statt der dortigen an, cn, bn, dn an. Das ergibt
Um [N] anzuwenden, errechnet man hieraus
und findet damit Xn+1
=
2(Yn - xn) 1 + Yn - xn
Yn - Xn Y n + l =-. 1 - xn
Auf diese Nachfolgerwerte wendet man nun noch [S] an. Dabei ergibt sich dann, wie behauvtet
Mit Satz 15 ist wieder ein geometrisches Modell zur Iteration verbunden:
42
2 Niveaulinien in einem einzelnen Rasterquadrat
; := ( X ;Y ) = (0; 0 ) , (0; l ) ,( 1 ;0 ) Ausgehend von den1 Dreieck mit den Ecken ( X O YO) wird in jedem Iterationsschritt (71 = 0, 1,2,. . . ) ein schon erreichtes Flachenstuck, vorliegen, zunachst durch eine Trennlinie rriit der in dem Koordinaten X,, Gleichung
xL
x, = Y,
[On1
in zwei Teilflachen zerlegt. In diesen Teilflachen gelten die Ungleichungen [I,] bzw. [2,], und dementsprechend werden in ihnen durch {I,} bzw. (2,) ,,lokale Koordinatenil Xn+l , Yn+l eingefuhrt. Wir bezeichnen die Trennlinien und Teilflachen wieder mit Symbolen [iolill...li, (1 01 bzw. [i~lill.-.li,li,+l](iv = l 1 2 ) . Einerseits ist also das Modell einfacher als bei der Iteration mit dem arithmetischen Mittel, da jeweils ein Zerlegungsschritt die Zahl der Teilflachen nicht vervierfacht, sondern nur verdoppelt. Auch liegt fur die Trennlinien eine einfachere Interpretation vor; wie soeben in 2.3.2 erlautert, signalisieren sie einfach das Abbrechen der Iteration (Ubergang zu unkritischen Typen). Andererseits zeigt das Modell groi3ere Kornpliziertheit, da die jeweils eingefuhrten X n + l , Y,+1 ,,krurnmlinige KOordinatenu sind. So ergeben sich z.B. bereits in den Teilgebieten 111 und [2]als Trennlinien [l 11 01 bzw. [2 11 01 (mit X I = Y1 als Gleichung) die (in den Variablen X O = X , Yo = Y ausgedruckten) Kurven
x
2(1-X-Y) 2-x-Y also Bogen der Hyperbeln --
1-Y
(X
-
+ Y ) ( X + 2Y - 4 ) = -2
bzw ,
2(1-X-Y) 2-X-Y
bzw.
(X
--
Y
I-x’
+Y)(2X+ Y
-
4 ) = -2.
Abb. 23 zeigt diese Hyperbeln mit ihren Asymptoten. Ferner ist dort bereits die Verteilung der Teilflachen [iolil] angegeben, die jedoch durch die bisherige Betrachtung noch nicht nachgewiesen ist. Fur eine weiterfuhrende Betrachtung ist es gunstiger, anknupfend an die in Satz 15 auftretenden Formeln { I n } , { 2,) , allgemein die beiden Abbildungen der Ebene in sich zu betrachten, bei denen jeweils fur den Bildpunkt (XI; Y‘) eines Punktes (X; Y ) definiert wird
X‘
X 1-Y
:= ___
bzw.
X‘ :=
2(1 - X - Y ) 2-x-Y
, Y ‘ : = 2(1 - x
-Y
2-X-Y
’
)
Y y’ .- 1-x’
Von Ausnahmestellen ( X ;Y ) oder (X’; Y’), an denen hier auftretende Nenner gleich Null sind, zunachst einmal abgesehen, zeigt sich namlich, dai3 diese beiden Abbildungen eindeutig umkehrbar sind. Man bezeichnet derartige algebraische
2.3 Iteration mit dem Parallelmittel
43
Y
101’
\
\
\ \ Abb. 23
Abbildungen als Crenzona- Transfornationen. Es genugt iius Symmetriegrunden, die Umkehrung der ersten Abbildung zu berechnen. Durch Auflosen des (einzeln jeweils in X und in Y linearen) Gleichungspaares erhalt man
[C?I
X =
X‘Y‘ 2 - 2X‘ - 2Y’ + X’Y’ , Y= (1 - X’)(Z - Y‘) (1 - X ’ ) ( 2 - Y’)
‘
2.3.4 Fundamentalelemente der Cremona-Transformation
Wir betrachten diese Cremona-Transformation [C,] bzw. [C2]wieder fur homogene Koordinaten (U : V : W ) = (1 : X : Y ) bzw. (U’ : V’ : W’) = (1 : X’ : Y’) der
2 Niveaulinien in einem einzelnen Rasterquadrat
44
projekt,iven Ebene. Dabei verwenden wir die Bezeichnungen
Fl(U rnit
:
v : W ) =(U’ : v’ : W’) = ( f l ( U ,v,W ): g1(U, v, W ) : h l ( U ,v, W ) ) fl(U, v,W ) := (U - W)(2U - v - W ) , g1(U, v, W ) := V(2U - v - W ) , ILl(U, v, W ) := 2(U - W ) ( U-
v
-
W)
sowie fur die Unikehrabbildurig
@1(U‘ : v’ : W ’ ) = (U : v : W ) = (cpl(U’,v’,W’) : x1(U’, v’, W ’ ) : @l(U’, v’,W ’ ) ) niit cp1 (U’, v’,W‘) := (U’ - V’)(2U’ - W’), Xl(U’, V’, W’) := V’W’, @l(U’,V’, W’) := 2 u r 2 - 2U’V’
-
2U’W’
+ V’W’.
Fur die durch Vertauschen von X , Y urid von X’,Y‘ zu erhaltende CrernonaTransformation verwenderi wir dieselben Bezeichnungen mit dem Index 2 statt 1. Aus der seit derri vorigen Jahrhundert entstandenen Literatur, siehe etwa [2], IS], [7], [lo], [la] (in [12] S. 26ff., speziell S. 31ff.) hat man zur genaueren Betrachtung folgendes Vorgehen: Man bezeichnet einen Punkt P = (U : V : W ) der projektiven Ebene genau darin als einen Fundamentalpunkt der Cremona-Transformation, wenn ihrri kein eindeutiger Bildpunkt (U’ : V’ : W ‘ ) zugeordnet ist. In der Darstellung [C1],[CT1] zeigt sich dies, freilich nicht sehr ubersichtlich, am Nullwerden von Nennerpolynornen, die beini Aufsuchen eiries Bildpunktes oder beini Herleiten der Umkehrabbildung auftreten. In der projektiven Darstellurig ist die Eigenschaft, Fundamentalpurikt zu sein, daran zu erkennen, dafl alle drei Zahlen f l ( U ,V ,W ) ,gI(U, V,W ) , h l ( U ,V, W ) gleich Null sind. Man bestatigt z.B. leicht, daO die Transformation F1 genau die drei Fundanieritalpunkte (1 : 1 : l ) , (1 : 0 : 1): (0 : 1 : (-1)) hat. Fur jeden Fundamentalpunkt P = (U : V : W ) betrachtet man nun alle Geraden g durch P und daniit die Paare ( P ,g ) , die als Linienelemente bezeichnet werden. Man halte nun zunachst eine solche Gerade g fest und erfasse ihre Punkte etwa in einer Pararneterdarstellung. In horriogener Schreibweise kann nian anstelle eiries Pararrieters T auch ein Parameterverhaltnis (TO : 7 1 ) verwenden. Eirie solche Parameterdarstellung von g besteht dann in drei Funktionen U = (Y(TO, T ~ ) V, = TO, T I ) , W = TO, T I ) , die in den Variableri TO und T I honiogeri linear sind. Dabei karin man es so einrichten, daO sich fur TI = 0 der Purikt P ergibt. Das hat zur Folge, daO sich beim Einsetzen vori TI = 0 in die Terrne f l ( c u , p, y),g1(cu, p, y),h l ( a ,p, y) fur alle drei der Wert 0 ergibt, da ja P ist. 1st aber das Verhaltnis (TO : 7 1 ) von (1 : 0) ein Fundamentalpunkt von
2.3 Iteration mit dem Parallelmittel
45
verschieden und genugend nahe bei (1 : 0 ) , so tritt dieses gleichzeitige Nullwerden nicht ein. (Man mul3 nur, falls g noch einen von P verschiedenen Fundamentalpunkt enthalt, den hierzu gehorenden Wert von (70 : 7 1 ) vermeiden.) Also kann , y) : gl(a,P, y) : h l ( a ,@,y)) fur 7 1 + 0 man fragen, ob das Verhaltnis ( f l ( a @, einem von (0 : 0 : 0) verschiedenen Verhaltnis zustrebt. Trifft das zu, so kann man erklaren, der Punkt niit diesem Verhaltnis seiner projektiven Koordinaten sei der ,,Bildpunkt von P (bei der Abbildung F l ) , wenn P langs der Geraden g erreicht g) bei F1 L L . wird", oder kiirzer, er sei der ,,Bildpunkt des Linienelementes (P, Um diese Betrachtung rechnerisch fur alle Linienelemente (P, g) durchzufuhren, charakterisiere man die jeweils zu wahlende Gerade g durch einen zweiten Parameter t oder, ebenfalls homogen, durch ein zweites Parameterverhaltnis ( t o : t l ) . 1st P ein eigentlicher Punkt (d.h. gilt U # 0 ) , so kann man sich die Skala aller dieser (to : t1)-Werte anschaulich vorstellen als eine Skalierung aller ,,Richtungen, langs derer der Punkt P erreicht werden kann". 1st P ein uneigentlicher Punkt (d.h. gilt U = 0 ) , so ist eher die Vorstellung passend, (to : t l ) skaliere eine ,,Hohe quer zur Richtung des Parallelbuschels durch P". Man findet eine derartige Zuordnung zwischen Geraden g und Verhaltniswerten (to : t l ) , indem man eine nicht durch P gehende Gerade h wahlt, ihre Punkte Q in einer Parameterdarstellung den Werten ( t o : t l ) zuorclnet und dann festlegt, dal3 eben jeweils die durch P und Q geheiide Gerade g durch den zu Q gehorenden Wert ( t o : t l ) charakterisiert werde. Bildet man demgemafl fur die Verbindungsgerade g des Punktes P und des durch (to : t l ) ausgedruckten Punktes Q eine Parameterdarstellung (in obengenannter Weise mit (TO : 71) als Parameter fur die Punkte von g ) , so ergeben sich a , @ , y nun i5uch homogen linear in t o und tl. Da weiterhin f l , 91,hl gleichgradig homogen in U, V,W sind, werden somit f l ( a ,@, y),gl(a,@, y). h l ( a ,@, y) gleichgradig homogen sowohl in TO,7 1 als auch in t o , t l . Nach den Satzen uber Grenzwerte von Polynomverhaltnissen kann man daher die Existenz und den Wert von
ermitteln, indem man das Verhaltnis ( f l(a,@,y) : gl(a,@, y) : hl (a,P, y)) zunachst mit noch nicht spezialisiertem (TO : T I ) bildet, von gemeinsamen Faktoren 7-1 befreit und erst dann 7 1 -+ 0 ausfuhrt. In der Tat zeigt sich, dal3 die so gefundenen ,,Bildpunkte der Linienelemente (P, g)LL (mit festem P und variablem g) eine ganze Gerade ausfullen. Man sagt, beim Ubergang F1 von der (U : V : W)-Ebene zur (U' : V' : W')-Bildebene werde der werde Punkt P zu dieser Geraden ,,aufgeblasen"; beim umgekehrten Ubergang diese Gerade zum Punkt P ,,kontrahiert". Fur P = (1 : 1 : 1) wahlt man etwa h als Menge aller Q = (0 : t o : tl); dann hat, jeweils die Verbindungsgerade g von P, Q die Parameterdarstellung
2 Niveaulinien in einem einzelnen Rasterquadrat
46
Damit ergibt sich
lim
T1+0
P, Y) : gl(a,P, Y) : h l ( a ,P, Y)) = (0 : (-to
(fl(a,
- ti)
ti),
P wird aufgeblasen zur Geraden U' = 0. Fur P = (1 : 0 : 1) wird mit derselben Wahl von h
P wird aufgeblasen zur Geraden W’ = 0. tl : 0) und Fur P = (0 : 1 : (-1)) wahlt man etwa h als Menge aller Q = ( t o : tl erhalt
P wird aufgeblasen zur Geraden U‘ = V’. bestatige ebenso, dafi bei der Abbildung Ubung 8. Man bestatige die Fundamen2U = zu den Geraden Geraden U = W, 2U talpunkte vermittels der folgenden Rechnung zu V W und U = V W aufgeblasen werden: P’ : 7 ’’ ))= (71tO (71to : 70tO T& P’ = (0 : 1 : 0) mit (a’ : p’ : ~~ 11 tt ll )) ergibt ( ~ ( a ’ P,I , 7’) 7 ’ ) : xl(a’, xl(a’, 7’) : $l(a’, $l(a’,P’, 7’)) 2to) : tl t l : (tl - 2 t o ) ) ; lim (cpl(a’, P’, P’, 7’) = (( (( tt ll-- 2to) 5-1 +o
+
5-1
+O
+
P’ : 7’) ~ 11 tt oo:))~~ 0o tt o0: 71tl) T1tl) ergibt P’ = (1 : 1 : 0) mit (a’ : p’ = ( ( ~ o t+ o ~ X l ( d P’, 7’) 7’) $&’, P’, 7‘)) 7‘)) t l : ((2to t1)); lim ((Cplb’, c p l ( d P’, 7’) : X&’, : $&’, = ((2to 2 t o tl 2 t o - t1)); T i -10 -10 ‘Ti P’ = (0 : 0 : 1) mit (a’ : P’ : 7’) = (( q t o : r1tl : to) ergibt q t o rltl ~ t 0 ) (pl(a’, P’, 7’) 7’) : x xl(a’, 7’) lim (cpl(cu’, ~ ( a ’ P’, , 7’) : $I(Q’, P’,?’)) = (( ((ttll- - t o ) : tt~l : (( tt ll - 22to)). to)). T1+0 r1+0 Man bestatige dann weiter: Diese Geraden sind die Verbindungsgeraden von Fundamentalpunkten der Abbildung F1, und die oben gefundenen je zwei Fundamentalpunkten
2.3 Iteration mit dem Parallelmittel
47
Geraden U' = 0, W' = 0, U' = V' sind die Verbindungsgeraden von je zwei Fundamentalpunkten der Abbildung @I. Die beiden Dreiecke, die in der (U : V : W)-Ebene und in der (U' : V' : W')Ebene jeweils die Fundamentalpunkte von F1 bzw. von als Ecken haben, haben hiernach zugleich diejenigen Geraden als (Tragergeraden ihrer) Seiten, die durch Aufblasen der Ecken der Fundamentalpunkte jeweils in der anderen Ebene entstehen. Man hat also, mit dieser Cremona-Transformation (Abbildung F1 mit Umkehrabbildung @ I ) verbunden, das Paar zusammengehoriger Fundumentuldrezecke in der Urbild- und Bildebene (siehe Abb. 24).
Y' I 1 :o: 1I
'
11: 1:Ol
Iw:=o]
T
y
- 1 l 10:1:01
l0:l:l 111
1o:o: 11
Abb. 24
Diese Aussagen kann man auch zum Teil in etwas einfacherer Weise direkt aus den ablesen. Beispielsweise fuhrt das Einsetzen von U' = 0 Gleichungen fur Fl und in auch bei ,,allgemein" gehaltenem V' : W' (genauer: solange nur V' # 0 und W' # 0 gelassen wird) eindeutig zu (U : V : W ) = (1 : 1 : l), also wird die Gerade U' = 0 zu diesem Punkt kontrahiert. Die stattdessen hier gewahlte Herleitung der Fundamentaldreiecks-Eigenschaften hat den Vorteil, nach Art einer Parameterdarstellung einzelne Punkte bzw. Linienelemente einander im Urbild-Bildverhaltnis zuzuordnen. Das ist wichtig, wenn man intervallartige Abschnitte (Teilkurvenbogen bzw. Teilwinkelraume) als einander zugeordnet erkennen mijchte, wie wir es nun fur die Analyse der Teilfliichen [iolilI . . linlzn+l] benotigen, die durch eben solche Teilkurven [iolill. [ i n )I 01 voneinander abgegrenzt werden. +
48
2 Niveaulinien in einem einzelnen Rasterquadrat
2.3.5 Gestalt der Teilflachen des geometrischen Modells
In der folgerideri rechnerischen Durchfuhrurig seieri die Parameterdarstellungen aristelle eines Parameterverhaltnisses ( t o : t l ) mit einerri Parameter t geschrieben, der aber im Sinne der projektiven Georrietrie verstanden werden soll. Er durchlauft zur Darstellung eines Kurveristucks oder eiries Winkelraums von Linienelerneriten ein ,projektives Intervall"; die verschiedenen Moglichkeiten hierfur sclireiben wir folgendermafieri: Die Menge der reellen Zahleri wird um das Symbol m erweitert; fur reelle a , b, c rnit a < b < c bezeichne d a m
t = a , . . . ,b , . . . , c t = b , . . . , c , . . . ,00 t = c ,... ,00,... , a t = 00,. . . , a , ... ,b
die Merige { t : a 5 t 5 c } , die Menge { t : b 5 t } U {m}, dieMenge { t : c ~ t } U { m } U { t : t ~ a } , die Menge (00) u { t : t 5 b}.
Zusatzlich sol1 durch eine derartige Schreibweise auch ein Durchlaufungssinri gekennzeichnet werden. So korinen dieselben Intervalle auch durch
t = C , . . . , b,... ,a, t = m, . . . , c , . . . , b, t = a ) . . . ,m, . . . , c, t = b ,... , a , . . . ,a wiedergegeben werden; daniit wird dann wegen a < b < c gekennzeichnet, da13 sie ,,von rechts nach links'' durchlauferi werden. Ebenso verweriden wir statt (TO : 7-1) einen Parameter T , der ,,projektive Intervalle" zu durchlaufen hat. Wir werderi solche Intervalle stets so eiririchten, daB die Durchfiihrung einer CremonaTransformation hochstens an einer Randstelle eines Intervalls auf die Ausnahniesituation eines Fundamentalelementes stoljt. Nach Satz 15 aus 2.3.3 niit n = 0 folgt auf diese Weise, daB die in 2.3.4 eingefuhrte Abbildung Fl das Teildreieck [l],dessen Irineres durch die Ungleichiing X o < Yo charakterisiert ist und das somit die Eckpurikte ( X O YO) ; = (0; 0), (0; l ) , hat, in ein Dreieck mit den Eckpunkteri ( X I ;Y1) = (0; O ) , (0; l ) , (1;0) uberfiihrt. Wir wenderi namlich die Abbildung F1 zusammen niit ihrer Unikehrung @ l auf die R.andbestandteile der beideri genannten Dreiecke an (siehe Abb. 25): Die Strecke (V : V : W ) = (1 : 0 : t ) ( t = 0 , . . . , . ,1) wird durch FI 2(1-t) 2(1-t) abgebildet auf die Strecke (U' : V' : W ' ) = (1 : 0 : =), wobei t I - 2-t das Intervall t' = 1 , . . . . f . . . , 0 durchlauft. Der Purikt (U : V : W ) = (1 : 0 : l ) , in dern der Winkelrauni der Linieneleinente mit den Geraden (V : V : W ) = (1 : T : (1 d ) ) ( t = 00,.. . , - 2 , . . . , -1) angebraclit ist, wird durch aufgeblasen zur Strecke (U':V':W')=(l:(-i):O),wobeit'=-fdasIritervallt'=O , . . . , ?1 , . . . ,1 durchlauft .
(i;i)
i,..
.
+
2.3 Iteration mit dem Parallelmittel
49
Abb. 25
3.) Iler Punkt (U’ : V’ : W’) = (1 : 1 : 0), in dern der Winkelraum der Linienelemente niit den Geraden (U’ : V’ : W’) = ((1 T ) : 1 : ~ t ’ ) (t’ = 0 , . . . , 1) angebracht ist, wird durch @I aufgeblasen zur Strecke ’”.”’ (1 : f : (1 - f)),wobei t = das Intervall t = 0 , . . . , . . . , durchlauft.
+
i, 5
f
4.) Die Strecke (U : V : W ) = (1 : t : t ) ( t = f,.. . ,f , . . . ,0) wird durch F1 abgebildet auf die Strecke (U‘ : V’ : W’) = (1 : : (1 - &)), wobei t’ = das Intervall t‘ = 1,. . . , . . . , O durchlauft.
i,
&
75
Nachdem auf diese Weise das Teildreieck [l]bestatigt ist (und entsprechend durch Verwendung von F2 und Q p z , also durch Vertauschung von X, mit Y, auch [2] als Dreieck (0; 0) (1;0) f ) bestatigt werden kann) , gelangt man zur weiteren Zerlegung, indem man (und entsprechend Q.2) auf die Strecke (0; O)($; f)anwendet. Die entsprechenden Teilstucke der schon in 2.3.3, Abb. 23 gezeigten Hyperbeln konnen wir nun genauer feststellen (siehe die gestrichelten Linien in Abb. 25) und damit auch die in Abb. 23 gegebenen Eintragungen [iolil] bestatigen: In der X I , Y1-Ebene wird das durch X1 < YI charakterisierte Teildreieck umlaufen durch drei Strecken, von denen keine bei @ I zum Punkt kontrahiert wird; es wird auch keine Ecke des Teildreiecks aufgeblasen. Es entsteht also wieder ein dreieckiges Flachenstuck in der XO,Yo-Ebene. Allerdings gehoren die beiden im Punkt (0; 1) endenden Kurven zu demselben Linienelement; die Hyperbel beruhrt dort die Yo-Achse. An dieser Ecke liegt also ein ,,Nullwinkel“ vor (wenn man wie ublich als Winkel zweier in einem Punkt endenden Kurven den Winkel zwischen ihren Tangenten in diesem Punkt versteht) . Das durch X1 > YI charakterisierte Teildreieck dagegen wird zwar auch durch @I in ein dreieckiges Flachenstuck uberfuhrt, sogar in eines ohne ,,Nullwinkel“; aber es findet ein ,,Rollentausch“ statt: Die Seite ( O ; O ) ( l ; O ) wird durch @ I zur Ecke (XO;YO)= (0; 1) kontrahiert, die Ecke (XI;Y1) = (1;0) wird durch Fl zur Seite (0; l ) ( f ;f) aufgeblasen.
(i;
50
2 Niveaulinien in einem einzelrien Rasterquadrat
In entsprechender Weise kann man die Gestalt der Flachenstucke [ i o l i l l . . . [ i n ] ermitteln. Man wendet jeweils @I oder @2 auf die Randkurventeile eines zuvor errnittelten Flachenstucks [il I . . . [in] an, je nachdem, ob i o = 1 oder i o = 2 ist. Zu diesem Zweck kariri man sich die Flachenstucke [ i l l . . . li,] in die rechte Figur der Abb. 25 eiritragen urid durch @ I (bzw. @ 2 ) in die linke Figur abgebildet denken (wobei man irn Fall einer Kontraktion stattdessen die umgekehrte Aufblasung verrriittels Fl (bzw. F2) vornimmt). Nach Abb. 25 zeigt Abb. 26 einige weitere Beispiele dieser FlachenstucksErrnittlung; Abb. 27 zeigt die Aufteilung des gesaniten Dreiecks (0; 0) (0; 1) (1; 0) in die 32 Flachenstucke [ i o l . . . 1241. Im einzelnen verdeutlicht Abb. 26, wie fur das Flachenstuck [1/2[lll] die Randkurven gefunden werden, insbesondere die Teilkurve [11211 11 01,die das in die hervorgehobene Teilflache [1(2(l(l] und die Restflaiche Flachenstuck [l(2(l] [1121112]zerlegt: Marl wendet auf [111] der Reihe nach @2 und an (erste und dritte Zeile der Abbildung). Andererseits eritsteht das in der genanriten Weise zu zerlegeride - Flachenstuck [11211], indem man auf [211]die Abbildung @ I anweridet (zweite Zeile der Abbildung). Auf diese Weise bietet das jeweils genugerid weit aufgeteilte - Dreieck analog wie in 2.2.5 die a-priori-Unterscheidung dafur, uber welche Faille [l,] oder [2,,]fur gegebene a , b, c, d die Iteration mit dem Parallelmittel ablauft. Man kann dies auch bei hoherer Bildqualitat (Pixeldichte) allerdings mit zunehmendem Zeitaufwand ohne theoretische Erorterung ,,experimentell" zeichnerisch folgenderniafleri bestatigen: Fur je ein konstantes Xo (vertikaler Pixelstreifen) laflt man YOPixel fur Pixel von 0 bis 1- XOlaufen. Dabei berechnet man nach den Formeln aus 2.3.3,Satz 15 solange rekursiv fur n = 1,2,.. . die Werte X,, Y,, bis erstrnals ein Wert n erreicht wird, bei dem der Ubergang zum nachsten Pixel eirien Durchgang durch 0 fur die Differenz Y, - X , verursacht, oder bis aridernfalls n = N fur ein fest gewahltes N erreicht ist. Die Pixel rnit Nulldurchgarig gibt man zeichnerisch aus; so eritstehen die Kurven [ i o l . . . li, 11 01 ( n 5 N ) . Freilich mufl zur Gewinnung der Flachenstucke in jedern Fall berrierkt werden: Wahrend man in 2.2.5 die theoretische Erorterung noch rechnerisch relativ bequern auf Dualbruchdarstellungen zuruckfuhren konnte (wobei genaugenommen deren Ermittlung nur eine vereinfachte, aber aquivalerite Wiedergabe der Itera1 tion darstellt), bietet hier das Herstellen der zerlegenden Kurven [ i o l . . . li, 11 0 wegen des wachsenden Grades dieser Kurven entsprechend wachsende Komplikation. Einige genauere allgemeine Aussagen uber die Zerlegung lassen sich dennoch gewinnen, worauf im nachsten Abschnitt 2.3.6eingegangen wird. Zuvor sei noch fur die nun vorliegende Gestalt des Modells die Betrachtung eines konkreten Beispiels als Ubung zum damit durchzufuhrenden Iteratiorisverlauf besonders empfohlen: ~
2.3 Iteration mit dem Parallelmittel
Y
Y'
/ 2
211111
Y
Y'
t
t
Y
Y'
>x Abb. 26
51
52
2 Niveaulinien in einem einzelnen Rasterquadrat
221 11
2222 1
22222
2221 1
Abb. 27
Ubung 9. Man bestatige am Beispiel der Eckenbelegung a = 0, b = 36,c = 35,d = 50: 1. In derri nach 2.2.4,[N] und 2.3.3,[S]eingefuhrten Model1 liegt der zu diesen a , b , c , d gefundene Punkt ( X ; Y )in der Flache [ll2llllll];dies ist grafisch an der Abbildung 27 abzulesen. 2. Rechnerisch ergibt sich nach 2.3.3,Satz 15, indem man ausgehend von Xo := X, YO:= Y jeweils fur n = 0,1,2,3,4feststellt, ob der Fall [I,] oder [2,] vorliegt, und dementsprechend X n + l , Y,+, gem86 {I,} bzw. (2,) ermittelt: Es liegen der Reihe nach die Falle [lo], [a,], [12],[13],[14] vor. 3. Hierrnit ubereinstimmend verlauft die in 2.3.2 beschriebene Iteration (Ubernahme von 2.2.1,Definition 2 mit Verwendung des Parallelmittels statt des arithmetischen Mittels) so, dai3 in 2.3.2,Def. 4 die eben genannten Falle auftreten. Der dabei nach 2.3.2,Satz 14 erhaltene Grenzpunkt liegt somit in dem Teilquadrat PQRS mit folgenden Ecken: In demjenigen Koordinatensystem, in dem (0; 0), (1;0),(1; l ) , (0; 1) die mit a , b, c, d belegten Ecken sind,
2.3 Iteration mit dem Parallelrnittel
53
gilt P = (-. 13 -1 9 Q = (27.2)R = ( 2 I . ‘9) s = (13.19). 16’ 16 ! 32’ 16 ’ 32’ 32 3 16’ 32 Man bestatige hierzu auch: Diese Punkte sind belegt mit den (auf 5 Dezinialen gerundeten) Werten 35,43042; 35,43340; 35,43147; 35,43173. Zwischen dem kleinsten und grofiten dieser Werte liegt also der nach Satz 14 zu erhaltende Grenzwert; durch Fortsetzung der Iteration ergibt er sich auf 5 Dezimalen zu 35.43161.
2.3.6 Weiterftihrende und zusammenfassende Aussagen Bei jedem Weiterteilungsschritt beginnt die Kurve [iolill. . . linli,+~11 01, die somit als Bild der Strecke (0; 0)(; +) bei den Abbildungen @ i n + l ,@ i n , . . . ,@ i l , @io entsteht (in dieser Reihenfolge angewandt), in einem Punkt, der bereits im vorangehenden Teilungsschritt als Endpunkt einer Kurve aufgetreten war, und sie mundet in die Kurve [iolill. . li, 11 01 in einem Punkt ein, der in dieser Kurve ein innerer Punkt ist. Wir bezeichnen diesen Punkt mit P[iolill ... li, 11 01 und brinf ) bei den Abbildungen gen damit zum Ausdruck, dafi er das Bild des Punktes @in . . . ,ail,@io ist. Da diese Abbildungen jeweils die Koordinaten X’, Y’ eines Urbildes durch rationale Terme in die Koordinaten X,Y des Bildes uberfuhren (siehe die Gleichungen [C,’] am Ende von 2.3.3 und entsprechende durch Vertauschen von X , Y und X’, Y’ entstehende Gleichungen fur [C;’]), haben also alle Punkt,e P[iolilI . . li, 11 01 rationale Koordinaten.
-
(i;
-
Ubung 10. Mit der Bezeichnung a :=
1, falls i = 2 2, falls i = 1
beweise man: Stets liegen die beiden Punkte P[iolil I * . * li, I( 01 und P[io$l I . . . I;, einer gemeinsamen Geraden durch den Punkt (0; 0).
11 01 auf
Abschlieaend sei noch genauer auf die Rag e nach der Gestalt der Flachenstucke . . lin] eingegangen. Dabei sei der Einfachheit halber die Beschreibung nur fur n 2 3 formuliert; in den Anfangsfallen ( n = 0 , 1 , 2 ) sind die vorkommenden Moglichkeiten und ihre Charakterisierung durch die Zahlenfolge (20, . . . ,i n ) sinngemafi zu reduzieren und dann in entsprechender Vereinfachung zu formulieren. Zum Beweis fiir die folgenden Aussagen hat man in entsprechender Aufeinanderfolge die Eigenschaften der Cremona-Transformationen anzuwenden, daa bis auf das Verhalten in den Fundamentalpunkten und -geraden Bijektivitat vorliegt und auch der Unterschied zwischen beruhrendem und transversalem Verhalten (zweier Kurven in einem gemeinsamen Punkt) erhalten bleibt, wahrend in den F’undamentalelementen stattdessen die in 2.3.5 geschilderte Entsprechung (Punkt -+ Linienelement bei Kontraktion bzw. Linienelement + Punkt bei Aufblasung) vorliegt.
54
2 Niveaulinien in einem einzelrien Rasterquadrat
Als Anfangsschritt dieser Herleitungen beginne man mit derjenigen Figur, die aus Abb. 27 entsteht, irideni man jeweils die Trennkurve zwischen [iolil li2]i31i4] und [i01illi21i31;4] (also die Kurve [iolilli2li3 11 01) weglaiBt (20,i l , i2,i3 E {1,2}). Der erste Weiterteilungsschritt ist dann der Ubergarig zu Abb. 27 selbst. AuiBer den schon eingefuhrten Bezeichriungeri [io(. . . (in (1 01 fur Trenrikurveri seien folgende Bezeichriungen verwendet: Die Strecke [O] von (0; 0) bis (f; f ) wird $) zerlegt in zwei Teilstrecken; durch den Punkt P[l 1) 01 = P [ 2 11 01 = bezeichnet. Ferner sei diese seien mit (O+):=(O;O)($; und (O-):=(i; ( ~ + ) : = ( o ; o ) ( oI), ; (2+):=(0;0)(1;0) sowie ( I - ) : = ( ? ; ?)(o; I ) , ( 2 - ) : = ( + ; $)(I;o) gesetzt .
5)
(4,
$4'2; i)
Danri werde ein Flachenstuck [iol ... liT1]( n 2 3) genau dann ein Dreieck 1. Art genannt, wenn es begrenzt wird durch je eine Teilkurve von [iol. . . lin-l 1) 01, von [io(. . . l i n - 2 11 01 und vori einer Kurve k, fur die eine der folgenden Aussagen (a), (b), ( c ) , (4gilt: (a) Es ist k = [ i o l . ..li, )I 01 mit r 5 n - 5; (b) es gilt io = i l = i 2 und k = (O+); (c) es gilt io = i l = i.2 und k = (d) es gilt io = 31 = i2 und entweder k = ( 0 - )oder k = ( i ; ) . Ein Flachenstuck [iol . . . [in] werde genau dann ein Dreieck 2. Art genarint, wenn es begrenzt wird durch je eine Teilkurve von [iol.. . 1) 01, von (201 . . . lira-2 11 01 und von [iol.. . 11 01. Es werde genau dann ein Zweieck genannt, wenn es begrenzt wird durch je eine Teilkurve von [iol . . . lin-l 1) 01 und von [iol . . . lin-2 )I 01. Es werde genau dann ein Viereck genannt, wenn es begrenzt wird durch je eine Teilkurve von [ i o l . . . lzn-l 1) 01, [iol . . . lin-2 11 01, [iol ... lin-3 11 01 und von [ioJ * lzn-4 11 01 (wobei im Fall n = 3 anstelle von [ i o J . . . Jin-4 1) 01 entweder (O+) oder ( 0 - )gesetzt werde).
(it);
3
A
Es folgt dann (wie gesagt, schrittweise fur n = 3 ,4 ,5 ,. . .): Satz 16. Jedes Flachenstiick [iol... / i n ] ist ein Dreieck 1 . oder 2. Art oder
ein Zweieck oder ein Viereck.
Im einzelnen gilt: 1. 1st in-l = i n , so sei k derjenige Index, fur den ik = . . = i n und entweder k = 0 oder i k - 1 # ik gilt. 1.1. Im Fall k = 0, also io = . . . = i n , ist das Flachenstuck ein Dreieck 1. Art. 1.2. Im Fall k = 1, also io # 2 1 , i l = ... = i n ist es ein Zweieck. 1.3. Im Fall k 2 2 und zk-2 = i k - 1 ist es ebenfalls ein Zweieck, 1.4. im Fall k 2 2 und ik-2 # ik-1 ist es ein Dreieck 1. Art. 2. 1st in-l # in, so gilt: 2.1. Im Fall in-2 = in-l ist das Flachenstuck ein Dreieck 2. Art, 2.2. im Fall i n - z # in-l ist es ein Viereck. +
2.3 Iteration mit dem Parallelmittel
55
[in]in die Flachenstucke [ i o l . .. linll]und Fur die Weiterteilung jeweils von [iol [ioJ . . . lin12] erhalt man: Jedes Zweieck wird in ein Zweieck und in ein Dreieck 2. Art zerlegt, jedes Dreieck 1. Art in ein Dreieck 1. Art und ein Dreick 2. Art, jedes Dreieck 2. Art in ein Zweieck und ein Viereck, jedes Viereck in ein Dreieck 1. Art und ein Viereck. Insgesarrit gilt hiernach noch: l3ie 2n+1 Fluchenstucke [iol.. . /in]sind j e genau 2"-' 1. Art, Dreiecke 2. Art und Vierecke.
Zweicke, Dreiecke
3
Gewinnung eines globalen
Niveaulinienbildes 3.1
Strukturbestimmende Niveaulinien
3.1.1 Verzweigung in Rasterquadraten;
Lageunterscheidung von Rasterpunkten Die bisherige Betrachtung der eirizelrieri Rasterquadrate hat ergeben: Fassen wir Zielvorstellungen uber das Niveaulinienbild speziell wie in 2.1.3 und 2.1.4 auf, graphisch verbessert durch die Methode aus 2.2.1 oder 2.3.1, so wird in1 Rasterquadrat nur danri eine Verzweigung erzwungen, wenn das Rasterquadrat von kritischem Typ ist. Die Verzweigung ist entweder VOII Kreuz-Gestalt (Typ 8) oder von T-Gestalt (Typ 7). Genauer sagen wir:
Definition 5. Unter der Kreuzkurve in einem Rasterquadrat des Typs 8 werde die folgendermaj?en definierte Kurve k verstanden: Bei Wahl der Iteration mit dem arithmetischen Mittel (2.2.1, Def. 2) sea k die aus denjenigen beiden Strecken bestehende Kurve, die als Niveaulinien z u m Parallelmittel in dem Rasterquadrat auftreten (siehe in 2.2.3 die beiden am Zusatz zu Satz 7 genannten Strecken). Bei Wahl der Iteration mit dem Parallelmittel (2.3.2, Def. 3) sei k die aus denjenigen Teilkurven bestehende Kurve, die als Niveaulinien zu dem in 2.3.2, Satz 14 genannten Grenzwert das Rasterquadrat durchqueren, jeweils zwei Punkte von Gegeriseiten miteinander verbindend und einander in dern in Satz 14 genannten Grenzpunkt schneidend. Unter den Endpunkten der so erklarten Kreuzkurue werden diejenigen vier ihrer Punkte verstanden, die auf dem Rand des Rasterquadrats liegen. Unter der T-Kurve in einem Rasterquadrat des Typs 7 werde diejenige Kurve verstanden, die aus den folgenden beiden Strecken A B und E F besteht: A und B seien die beiden Ecken des Rasterquadrats, die mit einander gleichen Werten belegt sind, E sei auf der A B gegenuberliegenden Seite des Rasterquadrats derjenige Punkt, der ebenfalls mit diesem Wert belegt ist, und E F sei das Lot von E auf A B . Unter den Endpunkten der so erklarten T-Kurve werden in dieser Bezeichnungsweise die drei Punkte A , B und E verstanden. Die global im gesamten Raster vorliegende Belegung der Rasterpunkte mit Zahlenwerten kann aber noch weitere Verzweigungen ,,erzwingen", d a nach 2.1.3 von eineni Rasterpunkt mehrere Niveaulinien in unkritische Quadrate hinein ausgehen konnen. Eine ahnliche Rolle fur das globale Niveaulinienbild spielt aufierdem auch die Umrandung des gesamten Rasterrechtecks. Die hierzu anzustellenden Uberlegungen beginnen wir mit der folgenden Unterscheidung:
3.1 Strukturbestimmende Niveaulinien
57
Definition 6. Ein Rasterpunkt heij?t (bezuglich des gesamten Rasterrechtecks) ein Eckpunkt, Randpunkt oder Innenpunkt j e nachdem, ob er zu genau einem Rasterquadrat, zu genau zwei Rasterquadraten oder zu genau vier Rasterquadraten gehort. Von diesem Unterschied hangt es namlich ab, wie viele von einem Rasterpunkt ausgehende Niveaulinien bewirken, daB zusammen mit der Umrandung des gesamten Rasterrechtecks eine Verzweigungsstruktur zustandekommen kann. 3.1.2 Wertgleiche Nachbarschaft; Startpunkte
Die ebengenannte Lageabhangigkeit erfahrt noch eine zusatzliche Komplikation dadurch, dafi eine Niveaulinie langs einer Kante eines Rasterquadrats verlaufen kann. 1st namlich ein Rasterpunkt durch ein derartiges Niveaulinienteil rnit einem anderen Rasterpunkt verbunden, so sind die Niveaulinien, die von dem zweiten Itasterpunkt ausgehen, auch bei der Untersuchung des ersten Rasterpunktes auf seinen Verzweigungscharakter mit heranzuziehen. (Freilich genugt es hierzu, nur Linienteile langs Kanten von Rasterquadraten heranzuziehen. Sind namlich gegeniiberliegende Ecken eines Rasterquadrats mit gleichen Zahlen belegt, so liegt entweder einer der Typen 1, 2 oder Typ 8 vor. Im ersten Fall hat man auch eine Verbindung der beiden Ecken langs Seiten des Rasterquadrates, im zweiten Fall gibt es in diesem Rasterquadrat uberhaupt keine Niveaulinienverbindung der beiden Ecken, vielmehr werden sie durch die kreuzformige Niveaulinie voneinander getrennt .) In den folgenden Definitionen fassen wir die bisher beschriebenen Abhangigkeiten zusammen:
Definition 7. Ein Rasterpunkt P heij3t genau dann wertgleich benachbart zu einem Rasterpunkt Q , wenn PQ eine Seite eines Rasterquadrates ist und P 7ind Q mit derselben Zahl belegt sind. Die transitive Hulle dieser Relation iuerde als Verbindbarkeit bezeichnet; d.h., P heij?t genau dann mit Q verbindbar, wenn es Rasterpunkte PO,.. . ,Pn ( n 2 0 ) gibt, so daj? PO = P, Pn = Q gilt und fur i mit 0 < i 2 n stets Pi-1 wertgleich benachbart zu P i ist. Die Verbindbarkeit ist offensichtlich eine Aquivalenzrelation; daher zerfallt die Menge der Rasterpunkte nach dieser Relation in Aquivalenzklassen. Man kann diese auch beschreiben als die Zusammenhangskomponenten desjenigen Graphen, dessen Knoten die Rasterpunkte sind und dessen Kanten die Verbindungsstrecken wertgleich benachbarter Rasterpunkte sind. (Zu graphentheoretischen Bezeichnungen siehe etwa [7].)
Definition 8. Ein Rasterpunkt P hat genau dann die Startzahl z , wenn sich unter denjenigen unkritischen Rasterquadraten, die P als eine Ecke haben,
58
3 Gewinnung eines globalen Niveaulinienbildes
genau z befinden, in deren Inneres gemap 2.1.3 eine von P ausgehende Niveaulinie hineinfuhrt. Dabei werde in Rasterquadraten vom Typ 2 die in 2.1.3 erwahnte diagonal verlaufende Niveaulinie nicht mitgezahlt. Eine Klasse verbindbarer Rasterpunkte hat als Startzahl die Summe der Startzahlen aller ihrer Punkte. Definition 9. Ein Punkt P in der Flache des gesamten Rasterrechtecks heiJ?t genau dann ein Startpunkt, wenn einer der folgenden Falle vorliegt: (1) P ist ein Endpunkt der Kreuz- oder T-Kurve in einem Rasterquadrat des Typs 8 bzw. 7 , (2) P ist ein Rasterpunkt und gehort bezuglich der Verbindbarkeit einer Klasse an, die (2.1) einen Eckpunkt des Rasterrechtecks enthalt und eine Startzahl z 2 1 hat, oder (2.2) keinen Eckpunkt, aber einen Randpunkt des Rasterrechtecks enthalt und eine Startzahl z 2 2 hat, oder (2.3) weder Eckpunkte noch Randpunkte des Rasterrechtecks enthalt und eine Startzahl z 2 3 hat. Ist P ein Startpunkt, so heipt der Beginn jeder von P ausgehenden Niveaulinie C,fur die einer der folgenden Fiille vorliegt, ein zu P gehorender NiveaulinienAnsatz: (1) P ist ein Endpunkt der Kreuz- oder T-Kurve in einem Rasterquadrat R , und C fuhrt in das Innere eines von R verschiedenen Rasterquadrats hinein. (2) P ist ein Rasterpunkt, und C fuhrt gemap Definition 8 in das Innere eines Rasterquadrats hinein. Abb. 28 zeigt fur das in Abb. 1 gezeigte Raster die Verbindungsstrecken wertgleich benachbarter Rasterpunkte (also den zu Definition 7 erlauterten Graph), ferner die Kreuz- und T-Kurven sowie die nach Definition 9 vorliegenden Startpunkte mit ihren Niveaulinien-Ansatzen. Dabei wurde in diesem Beispiel die Iteration mit dem arithmetischen Mittel gewahlt. 3.1.3 Homotopie unverzweigter Niveaulinien
Die hier angesetzten Definitionen lassen bereits erkennen, dafi die Aufgabe, in einem gegebenen Raster alle Startpunkte und zugehorigen Niveaulinien-Ansatze zu finden, algorithmisch losbar ist. Die einzige Problematik hinsichtlich der Algorithmierbarkeit tritt auf, wenn man - anders als in Abb. 28 - die Iteration mit dem Parallelmittel wahlt. Hierbei ist namlich fur jedes Rasterquadrat vom Typ 8 der in 2.3.2, Satz 14 genannte Grenzwert so genau anzunahern, daD seine Ordnungsbeziehung (Kleiner-, Gleich- oder GroDersein) zu den Belegungswerten der anderen
3.1 Strukturbestimmende Niveaulinien
59
Q 1
2
0
Abb. 28 Startpunkte gefunden werden kann. Diese numerisch-algorithmische Problematik ist fur die Praxis auf eine der bekannten, mehr oder weniger befriedigenden Arten anzugehen, etwa durch Vorgabe einer Genauigkeitsschranke und einer Vorschrift, durch die in der Menge der nur mit dieser Genauigkeit vorliegenden Belegungswerte von Startpunkten eine lineare Ordnungsrelation festgelegt wird. Zum numerischen Arbeiten mit dem Parallelmittel p ( a , b, c, d ) sei noch bemerkt: Berechnet man es direkt nach der Definition (2.1.6, nach Ubung 2), so tritt im Zahler db - ca und im Nenner d b - c - a eine Stellenausloschung auf, wenn a , b, c und d dicht beieinander liegen, wie es gerade bei iterativer Benutzung des Parallelmittels der Fall ist. Dies lafit sich dadurch vermeiden, daD man p ( a , b, c, d ) stattdessen nach 2.2.3, Satz 7 (mit ausreichender Naherung) berechnet, also durch wiederholte Bildung von arithmetischen Mitteln. Sind nun die Startpunkte und Niveaulinien-Ansatze mit der erwahnten Genauigkeit gefunden, so zeigt sich weiter: Man kann jeden dieser Ansatze vermittels der Niveaulinien-Festlegungen in den einzelnen Rasterquadraten (Abschnitt 2.1.3 und je nach Wahl des Iterationsverfahrens Abschnitt 2.2.1, Definition 2 oder Abschnitt 2.3.1) eindeutig solange fortsetzen, bis man auf einen folgendermaflen definierten Zielpunkt stoflt:
+
~
~
Definition 10. Eine Niveaulinie, die mit einem Ansatz von einem Startpunkt 1’ aus beginnt und gemaj? 2.1.3 sowie 2.2.1 oder 2.3.1 fortgesetzt wurde, hat yenau dann ihren Zielpunkt Q erreicht, wenn Q zum ersten Ma1 eine der folgenden Bedingungen erfullt: - Q ist ein Punkt auf dem Rand des gesamten Rasterquadrats, Q ist ein Startpunkt. ~
60
3 Gewinnung eines globalen Niveaulinienbildes
Die Niveaulinien, die in dieser Weise von den Start- zu den Zielpunkten fuhren, sowie die in Definition 7 erfaBten Verbindungskanten wertgleich benachbarter Rasterpunkte zerlegen nun das gesamte Rasterrechteck in Gebiete. Einer der wichtigsten Bestandteile des aufzustellenden Algorithmus wird darin bestehen, diese Zerlegung auszufuhren. Wir beschreiben zunachst allgemein, in welchem Sinn diese Gebiete strukturbestimmend sind: Unter den Gebieten konnen sich einerseits solche befinden, durch deren Inneres uberhaupt keine Niveaulinie geht. Sie werden irn weitereri Verlauf der Diskussion noch eine geriauer zu beschreibende Rolle als ,,leere" Teilflachen spielen. Sie wurden schon kurz im Zusammenhang mit den Typen 1 urid 2 und gegebenenfalls auch Typ 7 erwahnt (siehe 2.1.3, 2.2.1, 2.3.1); uber genauere Moglichkeiten ihrer Gestalt (bei ,,grober", ,,vermittelnder" oder ,,glatter" Linienfuhrung) wird noch zu diskutieren sein. Andererseits aber erhalt man Gebiete, die von Niveaulinien erfullt werden. Sie setzen sich infolge der iterativen Behandlung der Rasterquadrate zusammen aus Flachenstucken in Teilquadraten, die nach 2.2.1, Satz 6 bzw. nach 2.3.1, Satz 13 samtlich von unkritischem Typ sind und daher ihrerseits samtlich gemafl 2.1.3 ausgefullt werden. Da nun durch die Startpunkt-Festlegungen (Definition 9 mit den vorbereitenden Definitionen 5 bis 8) gesichert wurde, daB alle Verzweigungsmoglichkeiten von den nach Definition 9, 10 und 7 gebildeten Niveaulinien erfaBt werden, sind die Niveaulinien, die die jetzt genannten Gebiete ausfullen, insgesamt unverzweigt, und sie weisen wegen des Zusammengesetztseins der Gebiete aus unkritischen Quadraten eine Eigenschaft auf, die sich am besten in der Ausdrucksweise der Topologie formulieren laBt: In jedem Gebiet sind die darin auftretenden Niveaulinien zueinander homotop. Die Eigenschaft der Homotopie (siehe etwa [3],[18]) sei hier fur Kurven CO,C1 in der Ebene E allgemein formuliert, wobei die Beschreibung in drei verschiedenen Moglichkeiten gefaflt sei: Erstens kann man COund C1 als offene (jeweils von einem Anfangspunkt zu einem hiervon verschiedenen Endpunkt verlaufende) Kurven voraussetzen, genauer als homoomorphe Bilder eines abgeschlossenen Intervalls I , etwa des Intervalls aller T mit 0 5 T 5 1. Das bedeutet: Fur i = 0 und i = 1 ist jeweils Ci die Bildmenge einer Abbildung hi : I + E , von der vorausgesetzt wird, daf3 sie als Abbildung von I auf C, bijektiv ist und daB sowohl hi als auch ihre Umkehrabbildung hi' stetig sind. Zwei solche Kurven heiflen nun genau dann zueinander homotop, wenn es eine Abbildung H : I x I + E des Quadrates I x I (der Menge aller Paare ( t ,T ) mit 0 5 t 5 1 und 0 5 7 5 1) in E gibt, die ebenfalls einen Homoomorphismus vermittelt, d.h. als Abbildung auf die Bildmenge bijektiv und in beiden Richtungen stetig ist, und mit der fur alle T E I einerseits H(O,T) = hO(T), andererseits H(1,r)= h l ( r ) gilt. Zweitens kann man Co und C1 als geschlossene (zu ihrem Anfangspunkt zuruckkehrende) Kurven voraussetzen, namlich als homoomorphe Bilder eines Kreises k, etwa der Menge aller Punkte P = (cos T , sin T ) mit 0 5 T < 27r ; diesmal ist also jeweils Ci die Bildmenge einer Abbildung hi : k + E , die als Abbildung auf Ci bijektiv und in beiden Richtungen stetig ist. Zwei solche Kurven heiBen
3.1 Strukturbestimmende Niveaulinien
61
genau dann zueinander homotop, wenn es eine Abbildung H : I x k -+ E gibt, die einen Homijomorphismus vermittelt und H ( 0 , P ) = ho(P), H ( 1 , P ) = h l ( P ) fur alle Punkte P E k erfullt. Ilrittens heiilt eine offene oder geschlossene Kurve C1 (homoomorphes Bild von 1 bzw. k bei hl : I -+ E bzw. hl : k + E ) nullhomotop genau dann, wenn es eine Abbildung H : D -+ E von der Menge D aller Punkte (t,T) mit 0 5 T 5 t 5 1 bzw. aller Punkte (t . cos T,t . sin T ) mit 0 5 t 5 1, 0 5 T < 27r in E gibt, die ) h 1 ( ~fur ) alle 0 T 5 1 bzw. einen Homoomorphismus vermittelt und H ( ~ , T = H(cos T,sin T ) = hl (cos T,sin T ) fur alle 0 2 T < 2n erfullt. Anschaulich kann man sich bei homotopen Kurven CO, C1 vorstellen, dail die Kurve Co wahrend des ,,Zeit"-Intervalls 0 5 t 5 1 in die Kurve C1 ,,uberfuhrt" wird, indem sie jeweils in einem Zeitpunkt t eine Gestalt Ct erreicht, namlich die Bildmenge bei der durch ht(.r) := H ( t , T ) bzw. ht(P) := H ( t , P ) definierten Abbildung ht : I + E bzw. ht : k + E . Das dabei ,,iiberstrichene" Flachenstuck ist eben die Bildmenge von H ; es wird durch die Kurven Ct schlicht und luckenlos uberdeckt. Entsprechend wird eine nullhomotope Kurve C1 in dem Zeit-Interval1 1 2 t 2 0 zu dem Punkt H(0,O) kontrahiert, indem sie jeweils im Zeitpunkt t die Gestalt Ct erreicht, namlich die Bildmenge der durch ht(T) := H ( t , T ) (0 5 T 5 t ) bzw. ht := H ( t . C O S T , t . sinT) (0 5 T 5 27r) definierten Abbildung ht. Eben diese charakteristische Eigenschaft des schlichten und luckenlosen Uberdeckens wird in den hier zur Diskussion stehenden Gebieten von den darin befindlichen Niveaulinien nach 2.1.3 gesichert.
Ubung 11. Man bestatige, dai3 durch die Abbildung
die in 2.2.1, Abb. 12 von rechts nach oben fuhrenden Niveaulinien zu den Werten 4,O und 4 , l als einander homotop erwiesen werden, wobei jeweils Ct Niveaulinie zum Wert 4 &t ist.
+
3.1.4 Mbglichkeiten unterschiedlich feiner Linienfuhrung
An dieser Stelle kann bereits etwas genauer auf Moglichkeiten unterschiedlicher Feinheit in der Linienfuhrung eingegangen werden. Eine ,,grebe" Linienfuhrung entsteht, wenn man jede Niveaulinie innerhalb jedes R.asterquadrates geradlinig verlaufen 1aBt. Man wahlt also jeweils anstelle eines (nach 2.2.1 oder 2.3.1 iterativ gefundenen, eventuell nur stuckweise geradlinigen) Streckenzuges, der ein Rasterquadrat durchquert, einfach die Verbindungsstrecke seines Anfangs- und Endpunktes. Das bedeutet zugleich, dai3 man in Analogie zur bereits in 2.1.3, 2.2.1, 2.3.1 erwahnten Linienfuhrung in Rasterquadraten der
62
3 Gewinnung eines globalen Niveaulinienbildes
Typen 1 urid 2 aucli eine eritsprechende Vereinfachurig bei den R.asterquadraten der Typeri 7 und 8 vornimmt: Man bildet anstelle einer Kreuz-Kurve (siehe Definition 5) das konvexe Viereck aus ihreri Endpunkten; diese Vierecksflache la& man leer, so wie dies bei deri Quadratflachen vom Typ 1 und bei Dreiecksflachen in Quadrateri voni Typ 2 erfolgt. Als Niveauliriie zum Wert dieser Kreuz-Kurve wird statt ihrer der Rand der genarinteri Vierecksflache genommen. Ebenso geht man mit einer T-Kurve (Typ 7) vor; sie wird durch den Rand des Dreiecks aus ihren Endpunkten ersetzt, die Flache dieses Dreiecks bleibt leer. Als Gegenstuck hierzu entsteht eine ,,feine" Linienfuhrung durch konsequente Anwendung der Iteration mit dem arithrnetischeri Mittel in allen Quadraten der Typen 2, 7, 8. Wie in 2.2.1 erlautert, bleiben dabei nur die Quadratflachen des Typs 1 leer; alle anderen Flachen werden schlicht und luckerilos rriit Niveaulinien ausgefullt. Dies wird dadurch ,,erkauft" , dai3 gelegentlich niehr ,,enge Ruckkehrlinien" als bei ,,grober" Linienfuhrung auftreteri konnen, narnlich uni solche Rasterpunkte herum, die Endpunkte von T-Kurven oder von Verbiridungskanten wertgleich benachbarter Rasterpunkte sind, ohne Startpunkt zu seiri. Diese Kanten (bzw. bei T-Kurven Teilstrecken von Kanten) sind damit auf beiden Seiten zu demselben Gebiet homotoper Niveaulinien benachbart. Eben dies wurde bei der ,,graben" Linienfuhrung durch das Dazwischenlegen leerer Flachen vermieden. Linienfuhrung bei Iteration mit dern arithrrietischen Mittel:
,,Fein" :
,,Grob" :
Linienfuhrung bei Iteration mit den1 Parallelniittel:
,,Grob" :
,,Vermittelnd":
Abb. 29
3.1 Strukturbestimmende Niveaulinien
63
Eine Mittelstellung zwischen diesen beiden Moglichkeiten nimmt diejenige Linienfuhrung ein, die bei konsequenter Iteration mit dem Parallelmittel ensteht. Wie namlich bereits in 2.3.1 und 2.3.2 erwahnt wurde, gelten fur diese Linienfuhrung folgende Aussagen: Solange die Iteration im Typ 8c verbleibt, wird das betreffende Rasterquadrat ebenso wie bei Iteration mit dem arithmetischen Mittel vollstandig von Niveaulinien ausgefullt (nur mit einem anderen Wert und einem anderen Kreuzungspunkt der kreuzformigen Niveaulinie und auch fur die ubrigen Niveaulinien mit anderen Details des Verlaufs). Sobald aber im Verlauf der Iteration ein 'reilquadrat des Typs 2 erreicht wird (sofort oder iiber Zwischenschritte der Typen 7, 8a, 8b), ergeben sich freibleibende Flachen; in diesem Sinne kann von einem nur teilweise groberen, ,,vermittelnden" Niveauliniertbild gesprochen werden. In Abb. 29 sind die unterschiedlichen Linienfuhrungen a n einem Beispiel von vier zusammenhangenden Rasterquadraten dargestellt. 3.1.5 Schrittweise Fltichenzerlegung durch Linienfortsetzung
Nachdem in 3.1.2 die Startpunkte verzweigter Niveaulinien (Definition 9) festgelegt wurden, in 3.1.3 die grundsatzliche Zielstellung ihrer Fortsetzung bis zu den jeweiligen Zielpunkten (Definition 10) angegeben wurde, namlich die Zerlegung des gesamten Rasterrechtecks in Flachen, die von Homotopieklassen unverzweigter Niveaulinien ausgefullt werden, ist nun genauer zu erortern, wie diese Zielstellung verw irklicht wird. Ein erster schrittweise zu vollziehender Vorgang besteht darin, dal3 das Rasterrechteck durch standiges Hinzufugen von Strecken sukzessiv in Teilflachen zerlegt wird. Dabei gehen wir von einer Anfangszerlegung aus, die durch die Startpunktgewinnung in 3.1.2 vorgezeichnet ist, wobei wir aber sogleich die Vorteile der in 3.1.4 beschriebenen ,,graben" Linienfiihrung nutzen:
Definition 11. Die Anfangszerlegung des Rasterrechtecks (zur Gewinnung verzweigter Niveaulinien) enthalt folgende Zerlegungsstrecken: (1) die Seiten der einzelnen Rasterquadrate, (2) in jedem Rasterquadrut des Typs 2 die Diagonale, die zwei gleichbelegte Ecken verbindet, (3) in jedem k d i s c h e n Rasterquadrat (Typ 8 oder Typ 7) die Randstrecken der konvexen Hulle der Endpunkte (siehe 3.1.1, Def. 5) der Kreuz-Kurve bzw. T-Kurue dieses Rasterquadrats. Zur weiteren Bearbeitung empfiehlt es sich, zusammen niit den Endpunkten der genannten Zerlegungsstrecken sogleich den Zahlenwert zu vermerken, mit dem sie belegt werden:
Zusatz zu Definition 11. Als Endpunkte der Zerlegungsstrecken der Anfangszerlegung treten nur Punkte der folgenden Art auf:
64
3 Gewinnung eines globalen Niveaulinienbildes
( 4 ) Rasterpunkte des urspriinglichen Rasters, (5) die vier Endpunkte einer Kreuz-Kurve, (6) derjenige Endpunkt einer T-Kurue, der nicht auch Rasterpunkt des urspriinglichen Rasters ist. Zu diesen Punkten werden folgende Zahlenwerte tiermerkt: Zu (4): Der Belegungswert im urspriinglichen Raster, zu (5), (6): der gema8 2.1.1 dem betreffenden Punkt zugeordnete Wert. Nach 3.1.1, Def. 5 sowie riach den Grenzwertaussagen (2.2.3, Satz 8 bzw. 2.3.2, Satz 14) fur die Iteration mit dem arithmetischen Mittel bzw. niit dem Parallelniittel gilt speziell: Der Zahlenwert zu den vier in (5) genannten Punkten ist das Parallelmittel der vier Eckwerte des Rasterquadrats bzw. der Grenzwert, der bei Anwendung der Iteration mit dem Parallelmittel resultiert. Der Zahlenwert zu den1 in (6) genannten Punkt ist derselbe Wert wie der zu den beiden andereri Endpunkten der T-Kurve gehorende Wert (diese beiden Punkte gehoren bereits zu den unter (4) genannten Rasterpunkten). Zur weiteren Beschreibung des Vorgehens wird genutzt, dai3 die Teilflachen, die in der Anfangszerlegung vorliegen, bereits eine entscheidende Eigenschaft aufweisen, die sich gunstig rnit Hilfe der folgenden Bezeichnungsweise formulieren laat:
Definition 12. Eine Zerlegungsstrecke der Anfangszerlegung werde genau dann durchlassig genannt, wenn ihre beiden Endpunkte gemajl dem Zusatz zu Definition 11 mit zwei voneinander verschiedenen Zahlen belegt sand. Mit dieser Bezeichnung hat man namlich
Satz 17. Fur jede Teiljlache der Anfangszerlegung gilt: Unter denjenigen Punkten, die innere Punkte von den durchlassigen Randstrecken der Teilflache sind, gibt es zu jedem dort als Belegung vorkommenden Zahlenwert genau zwei Punkte, die mit diesem Zahlenwert belegt sind. Der Beweis dieser Aussage ergibt sich einfach aus folgenden Feststellungen: Jede Teilflache der Anfangszerlegung ist entweder eine dreieckige Teilflache eines Rasterquadrats von einem der Typen 2 , 7, 8, wobei dann genau zwei Seiten dieses Dreiecks durchlassig sind. Oder aber die Teilflache ist ein Rasterquadrat von einern der unkritischeri Typen 3, 4, 5, 6. Die in Definition 11 beschriebene Anfangszerlegung kann man sogleich noch ,,verbessern", indern man die gemafi 3.1.4 leeren Teilflachen weitgehend zusammenfafit:
Definition 13. Aus der Anfangszerlegung entsteht die vereinfachte Anfangszerlegung, indem fur j e zwei Teiljlachen, deren Rander vollstandig aus undurchlassigen Strecken bestehen und in deren Randern mindestens eine ge-
3.1 Strukturbestimmende Niveaulinien
65
meinsame Strecke vorkommt, der folgende Zusammenfassungsschritt durchgefiihrt wird: Alle Strecken, die gemeinsam in diesen Randern vorkommen, werden geloscht, -- die beiden Teilflachen werden weggelassen und durch eine (damit neu definierte) TeilJEache ersetzt. ~
Die damit zusammengefaflten Teilflachen mit vollstandig undurchlassigem Rand werden weiterhin wie in 3.1.4 als leer bezeichnet. Dieser Zusammenfassungsvorgang leerer Teilflachen wird allerdings nur bei einer gewissen Variante des gesamten Algorithmus erforderlich (prazise Homotopieklassenbildung, siehe Abschnitt 3.3); fur andere Varianten kann man auf das Zusammenfassen leerer Teilflachen verzichten. Abb. 30 zeigt die vereinfachte Anfangszerlegung, wie sie im Anschlui.3 an Abb. 28 zu gewinnen ist. Die darin auftretenden leeren Teilflachen sind durch Schraffur gekennzeichnet.
Abb. 30
Nun wird definiert, wie zu einer bereits vorliegenden Zerlegung des Rasterrechtecks ein weiterer Zerlegungsschritt erfolgt: Mit Satz 17 ist namlich eine Aussage zur eindeutigen Fortsetzbarkeit einer Niveaulinie gewonnen. Topologisch betrachtet, wird dabei dieselbe Fortsetzung vermittelt wie diejenige, die als Grundlage zu Definition 10 in 3.1.3 auftrat; dort jedoch mit anderer methodischer Fundierung, namlich als Ergebnis des Iterationsverfahrens (wahlweise mit Verwendung des arithmetischen Mittels oder des Parallelmittels). Im einzelnen l a t sich der Fortsetzungsvorgang folgendermaflen fassen:
66
3 Gewinnung eines globalen Niveaulinienbildes
Definition 14. Jeder Startpunkt mit zugehorigem Ansatz (3.1.2, Def. 9) wird auch als ein Fortsetzungspunkt mit zugehordgem Fortsetzungs-Ansatz bezeichnet. Ist P ein Fortsetzungspunkt mit zugehorigem Ansatz, so wird hierzu definiert: Die Teilflache, in deren Inneres der Ansatz hineinreicht, wird durch diejenige Strecke PQ geteilt, f u r die Q nach Satz 17 zu P zugehorig ist. Der damit realisierte Ansatz von P verliert die Eigenschaft, Ansatz zu sein. Ist (2 nicht der Zielpunkt (siehe 3.1.3, Def. 10) der mit PQ fortgesetzten Linie, so gibt es genau eine von der soeben zerlegten Teilflache verschiedene Teilflache, auf deren Rand Q laegt. I n sie hinein fuhrt ein neuer, zu Q als Fortsetzungspunkt gehorender Fortsetzungs-Ansatz. Ist Q aber der Zielpunkt der mit PQ fortgesetzten Linie, so wird kein von Q ausgehender Fortsetzungs-Ansatz neu definiert. Gemafi dieser Definition wird nach den vorbereitenderi Satzen, insbesondere Satz 17 in endlich vielen Schritten erreicht, dafi kein Fortsetzungs-Ansatz mehr vorliegt. Die damit gewonnene endgultige Zerlegung hat insbesondere die Eigenschaft, da!3 alle nach Definition 14 eingefuhrten Zerlegungsstrecken PQ irn Sinne von Definition 12 undurchlassig sind, da P und Q nach ihrer Definition rnit gleichern Zahlenwert belegt sind. Infolgedessen bleibt die in Satz 17 ausgesprochene Eigenschaft auch fur die durch Weiterteilurig eritstandenen Teilflachen gultig; es wurden einfach nur zwei durchlassige Strecken durch je einen Punkt ( P bzw. Q) in je zwei durchlassige Teilstrecken zerlegt. In Abb. 31 ist die endgultige Zerlegung ausgefuhrt, die sich irn Anschlufj an die Anfangszerlegung aus Abb. 30 ergibt. Undurchlassige Strecken sind ausgezogen dargestellt, durchlassige Auaenstrecken (siehe Definition 16 im folgenden Abschnitt 3.1.6) gestrichelt, die iibrigen durchlassigen Strecken punktiert (vgl. die aus Abb. 28 zu entnehmenden Zahlenbelegungen).
Abb. 31
3.1 Strukturbestimmende Niveaulinien
67
3.1.6 Datenstruktur fur das Anfugen von Teilflschen Der zweite Vorgang zur Ermittlung der Flachen, die von Homotopieklassen unverzweigter Niveaulinien ausgefullt werden, besteht darin, da%die Teilflachen, die durch die bisherige Zerlegung entstanden sind, nun wieder in anderer Weise zusammengesetzt werden. Anschaulich laat sich dieser Vorgang folgendermaaen beschreiben:
Definition 15. An eine Teilflache Fl wird eine zweite Teilflache Fz genau dann angefiigt, wenn FI und Fz langs einer durchlassigen Strecke zueinander benachbart sind. Um die anschauliche Beschreibung der Definitionen 14 und 15 algorithmisch zu fassen, sind die Teilflachen in einer Darstellungsweise vorzugeben, der sich die Relation, langs einer Strecke benachbart zu sein oder nicht, entnehmen lafit. Einem derartigen Zweck dient eine Datenstruktur, deren Teile jetzt genauer beschrieben werden sollen. Allgeniein bestehen solche Datenstrukturen, die schon haufig zu ahnlichen Zwecken gebrauchlich sind (siehe z. B. [ll]),aus Listen fur Punkte, Linien und Flachen; jeweils mit Angaben zur Berandung, d.h. (mehr oder weniger vollstandig): Zu jedem Punkt erfolgt die Angabe, welche Linien von ihm ausgehen; zu jeder Linie, welche Endpunkte sie hat und welche Flache a n sie angrenzt; zu jeder Flache, welche Linien ihren Rand bilden. Die Parenthese ,,mehr oder weniger vollstandig" deutet an, dai3 es in der detaillierten Ausgestaltung solcher Datenstrukturen Unterschiede gibt, je nach speziellen Eigenschaften des zu behandelnden Systems aus Punkten, Linien und Fliichen und je nach dem Verwendungszweck der durchzufuhrenden Operationen. Im vorliegenden Fall lassen sich mehrere derartige spezielle Eigenschaftcri nutZen. In der Anfangszerlegung (3.1.5, Def. 11) sind alle Teilflachen Vierecke oder Dreiecke. Bei jedem Schritt der Weiterzerlegung (3.1.5, Def. 14) werden sie stets durch eine Strecke zerlegt, und dabei gilt genauer: War eine Flache in einem friiheren Schritt bereits zerlegt worden, so war diese Zerlegungsstrecke zu einer undurchlassigen Randstrecke der beiden neuentstandenen Teilflachen geworden. Beachtet man insbesondere, da% in der Ausgangszerlegung nur dann mehr als zwei durchlassige Randstrecken einer Teilflache vorkommen konnten, wenn diese Teilflache ein unkritisches Quadrat war, und betrachtet die in 2.1.3 festgelegte Linienfuhrung in solchen Quadraten, so folgt Satz 18. Nach dem AbschluJ? aller an 3.1.5, Def. 14 beschriebenen Zerlegungs-
schn'tte sind alle nicht leeren Teilflachen (siehe Def. 13) Polygone mit einer Eckenzahl nicht groper als 6.
Eine weitere Besonderheit des bei dieser Zerlegung entstandenen Systems ist die in 3.1.3 festgestellte Eigenschaft, da% sich die Teilflachen zu solchen Polygonen zusammenfugen lassen, die durch zueinander homotope unverzweigte Niveaulinien
68
3 Gewinnung eines globalen Niveaulinienbildes
ausgefullt werden. Diese Niveaulinieri konnen nun nicht etwa (als geschlossene Kurven) innerhalb eirier Teilflache verbleiben; sie rriiissen sie also entweder verlassen oder auf dem Rand eriden was nur moglich ist, wenn dieses Raridstuck der Teilflache zurn Rand des gesarnten Rasterrechtecks gehort. Demgemd fuhren wir noch folgende Bezeichnurig ein: ~
Definition 16. Eine zum Rand einer nicht leeren Teiljlache gehorende Strekke, die zugleich zum Rand des gesamten Rasterrechtecks geh.od, werde eine Aujenstrecke genannt. Da die geriannten Niveauliriien nun in ilirem garizen Verlauf unverzweigt sirid, verlauferi sie entweder im gesamten Rasterrechteck von Rand zu Rand, oder aber sie fulireri als geschlossene Kurven in sich zuruck. Das besagt Satz 19. Ist das gemap Def. 15 vorgenommene Zusammensetzerc nicht leerer Teiljliichen abgeschlossen, so ist die damit gewonnene Flache F entweder topologisch aquivalent zu einer Kreisscheibe, d.h., sie besitzt genau eine Randlinie, und diese ist topologisch aquivalent t u einer Kreislinie; oder aber die Flache F besittt im folgenden Sinne genau zwei Randlinien: Eine dieser beiden Randlinien ist wieder topologisch aquivalent zu einer Kreislinie; sie spielt die Rolle eines Aupenrandes von F . Die andere, hiervon getrennte Randlinie in der Rolle eines Innenrandes von F , kann ,,wie eine Kreislinie durchlaufen" werden, wenn m a n eine Anzahl z (2 0 ) von ihren Teilkurven zweimal durchlauj?, und zwar in zueinander entgegengesetztem Durchlaufungssinn.
1st diese Anzahl z groaer als Null, so hat die Flache F , geometrisch betrachtet, die topologische Struktur einer Kreisscheibe niit. mogliclierweise mehr als einem ,,Loch" (jedes dieser ,,Locher" ist topologisch aquivalent zu einer Kreisscheibe, sein Rand topologisch aquivalent zu einer Kreislinie ist Bestandteil des in Satz 19 genannten Innenrandes von F ) . Diese Locher sind aber miteinander durch ,,Briicken" verbunden. Ferner karin sich an ein solches Loch noch ein in das Innere von F hineinragender ,,Stachel" anschlieaen; es konnen auch mehrere solche Stacheln auftreten. Eben diese Briicken und Stacheln sind die in Satz 19 genannten zweifach zu durchlaufenden Teilkurven des Innenrandes von F . Im geometrischen Sinn wiirde die Flache erst dann topologisch aquivalent zu einer Kreisscheibe mit genau einem Loch, wenn man alle diese ,,Briicken" und ,,Stacheln" zu Flachenstucken (topologisch aquivalent zu je einer Kreisscheibe) ,,aufblasen" wiirde. Andererseits kann man die topologische Struktur des ,,Innenrandes" von F auch folgenderInai3en erfassen: Man denke sich jedes der genannten ,,Lochef (begrenzt von denjenigen Teilen des ,,Innenrandes" von F , die weder ,,Brucke" noch ,,Stachel" sind) zu je einem Punkt kontrahiert, ferner fiige man zu den hiermit erklarten Punkten noch die dabei nicht auftretenden -- Endpunkte der ,,Stacheln" hinzu. Der Graph mit den so definierten Punkten und den ,,Brucken" und ,,Stacheln" als Kanten ist dann ein Baurn (ein kreisfreier zusammenhangender Graph). Abb. 32 zeigt als Beispiel ~
~
~
3.1 Strukturbestimmende Niveaulinien
69
eine Flache F , die in der beschriebenen Weise zwei durch eine ,,Brucke" verbundene ,,Lecher" und einen zusatzlichen ,Stachel" aufweist. Der dabei im Sinne von Satz 19 verstandene ,,Innenrand" ist dabei in der Reihenfolge a , b, b, d, e , g , h, f , e7c der Teilstrecken zu durchlaufen.
Abb. 32 Infolge dieser vereinfachenden Besonderheiten der zusammenzusetzenden Flachen genugt es, in der Datenstruktur die Berandungsverhaltnisse folgendermaBen zu berucksichtigen: Fur jede leere Teilflache sofern ihre genauere Beriicksichtigung in einer speziellen Variante des Algorithmus uberhaupt benotigt wird (siehe die Bemerkung nach Definition 13) - - genugt eine ungeordnete Auflistung aller derjenigen Strecken, die zum Rand der Teilflache gehoren. Das ist deswegen eine recht vorteilhafte Vereinfachung, weil die leeren Teilflachen nach ihrer in Definition 13 beschriebenen Zusamnienfassung eine durchaus kompliziert,ere topologische Struktur aufweisen konnen als die nicht leeren Teilflachen nach Definition 15, denn fur leere Flachen gelten die vereinfachenden Satze 17 und 19 nicht. Fur nicht leere Teilflachen wird dem Algorithmus dagegen die folgende Datenstruktur zugrundegelegt: Zu jeder nicht leeren Flache F gibt es entweder eine Liste der Form p2, L2, * . . 7 p h , L h (1) ~
oder zwei Listen der Form
Dabei sind die Pj bzw. Pi,j Nummern fur Punkte und die Lj bzw. L i , j Nummern fur Strecken. In weiteren Auflistungen aller Punkte und Strecken ergehen zu diesen dann noch weitere Informationen, wie dies aus den folgenden Erlauterungen
70
3 Gewinnung eines globalen Niveaulinienbildes
zum Gebrauch der Datenstruktur sogleich hervorgehen wird, insbesondere zum Zusarnmensetzen gemaB Definition 15. Zunachst soli die geometrische Interpretation einer Liste ( I ) bzw. eines Listenpaares (2), (2') erfolgen. Diese Listen sind in folgender Weise zyklisch geschlossen zu verstehen:
L, : Strecke mit den Endpunkten P,, PJ+l ( j = 1,. . . , h - l ) , Lh : Strecke mit den Endpunkten p h , Pl. La,j : Strecke rnit den Endpunkten Pz,J, Pa,,+, ( j = 1 , . . . , h, - l ) , L , , h , : Strecke mit den Endpunkten Pa,h,,P,,l
(2
= 1,2).
Nach Satz 19 und den anschlieoenden Erlauterungen treten diese zyklischen Listen in folgender Weise auf: Die Liste (1) beschreibt den Rand eines Flachenstucks, das topologisch zu einer Kreisscheibe aquivalent ist; die Listen (2) und (2') beschreiben die beiden Randbestandteile eines Flachenstucks, dessen geometrische Gestalt topologisch aquivalent zu einer Kreisscheibe mit mindestens einem ,,Loch" ist. Dabei kann also eine der beiden Listen, etwa ( 2 9 , auch zweimal durchlaufene Strecken enthalten; d.h., es konnen Teilstucke . . . P2)j L2,j P 2 , j + l . . . und . . . P 2 , k L 2 , k P 2 , k + l . . ' mit P2,j = P2,k+l, L2,j = L 2 , k , P2,j+1 = P 2 , k auftreten (k # j ; wegen des zyklischen SchlieBens ist hier P2,hz+l,wenn es vorkommt, als P2,h2+l := P2,l zu interpretieren).
3.1.7 Schrittweises Zusammensetzen der Teilflgchen Wie schon mehrfach herangezogen, bestehen fur die (unverzweigten, zueinander homotopen) Niveaulinien, die ein gemaB Def. 15 fertig zusammengesetztes Flachenstuck ausfullen, nur die beiden Moglichkeiten, entweder in sich zuriickzulaufen (topologisch aquivalent zu einer Kreislinie zu sein) oder das gesamte Rasterrechteck von Rand zu Rand zu durchqueren. Fur den jetzt zu behandelnden ProzeB des Zusammensetzens hat dies eine nochmals vereinfachende Konsequenz; es lafit sich namlich fur jeden Zusammensetzungsschritt erreichen: Das dabei neu hinzukommende Flachenstuck ist nur in einer solchen Weise anzufugen, dafi dabei keirie ,,uberflussigen" Locher zustandekommen, d.h. solche, die in spateren Anfugungsschritten noch ausgefullt werden mufiten und konnten. Erst durch diese Konsequenz ist namlich gesichert, daB auch beim Zusammensetzen keine kompliziertere Datenstruktur als (1) oder (2), (2') erforderlich wird.
Ubung 12. Man gebe (versuchsweise) eine Beschreibung fur eine Moglichkeit, dieses Ziel dadurch zu erreichen, daB man ein ,,notigenfalls einzuschaltendes Ruckwartsschreiten" zulaat, d.h.: Stellt sich bei einem Zusammenfugungsschritt das Auftreten eines ,,uberflussigen" Loches ein, so werde dieser Schritt ruckgaingig gemacht, und es werde statt seiner eine andere Zusammensetzungsmoglichkeit gewahlt.
3.1 Strukturbestimmende Niveaulinien
71
Man betrachte dabei auch unterschiedliche mogliche Strategien zu den Fragen, wie viele Schritte ruckgangig zu machen sind, wie danach wieder ,,vorwartszuschreiten" ist und welche Kompliziertheit (abgeschatzt etwa durch eine Groaenordnung fur Schrittzahl und Speicherplatz) der Algorithmus bei derartigen Strategien aufweist. Zur bequemeren Formulierung eines Vorgehens, welches anders als soeben in Ubung 12 betrachtet ohne ,,Ruckwartsschreiten" auskommt, sei folgende Bezeichnungsweise gewahlt: Die nicht leeren Teilflachen, die als Anfangssituation fur das Zusammensetzen, namlich als Ergebnis der vollstandig gem86 Def. 14 durchgefuhrten Zerlegung vorliegen, seien Elernentarflachen genannt. Jedes der aus ihnen gemafl Def. 15 und Satz 19 zusammenzusetzenden Flachenstucke sei eine Endjlache genannt und im folgenden mit F, bezeichnet ( n = 1,.. . ,N mit N als Anzahl aller Endflachen). Die Elernentarflachen, aus denen ein F, besteht, werden als durch F, (im Zusammensetzungsvorgang) verbraucht bezeichnet. Die dabei nach und nach zu bildenden Flachenstucke seien, je nach ihrem Auftreten in diesem Vorgang, entweder Einzelschrittflachen Gi,j oder Schrittfolgenflachen Hi genannt . Das Verfahren zum Bilden einer Endflache F, beginnt damit, daa unter denjenigen Elementarflachen, die noch nicht durch Endflachen F,, mit u < n verbraucht sind, eine beliebige ausgewahlt wird und damit als erste Schrittfolgenflache H I fungiert. Aus H1 werden, bis eine sogleich zu nennende Abbruchbedingung erfullt ist, cler Reihe nach weitere Schrittfolgenflachen Hi (i = 1 , 2 , .. .) gebildet. Die erste Schrittfolgenflache H1 hat einen Rand der Gestalt (1); es kann also in der Tat (als Anfang einer induktiven Argumentation) ein Anfiigen in ein Loch (2), (2') hinein gar nicht vorkommen. 1st mit einem Hi die Abbruchbedingung erfullt, so ist die angestrebte Endflache F, := Hi erreicht. Dagegen kommt man jeweils von einem Hi mit noch nicht erfullter Abbruchbedingung zu Hi+l durch eine Schrittfolge, bestehend aus einer Anzahl zi von Einzelschritten, die sukzessiv, beginnend mit cler Einzelschrittflache Gi,o := Hi, am Ende zu einer Einzelschrittflache Gi,Z, fuhren, wonach eben Hi+l := Gi,,, gesetzt wird. Als Induktionsvoraussetzung wird angenommen, daa der Rand von Hi entweder die Gestalt (1) hat oder, wenn er von der Gestalt (2), (2') ist, in (2') auch mindestens eine undurchlassige Strecke (siehe 3.1.6, Def. 12) enthalt, so daa das von (2') begrenzte Loch niemals durch spateres Anfugen weiterer Elementarflachen ,,uberflussig" werden kann. Um (entweder das Eintreten der Abbruchbedingung oder andernfalls) eine solche Schrittfolge zu gewinnen, wird zunachst als zi die Anzahl aller derjenigen irn Rand von Hi vorkommenden Strecken ermittelt, die durchlassig und keine Auaenstrecken sind (siehe 3.1.6, Def. 16). Die Abbruchbedingung ist zi = 0. Es liege nun der Fall zi # 0 vor, d.h., es gebe solche Strecken. Sie seien S 1 , .. . ,Sz* genannt, und zwar in einer durch den Rand von Hi folgendermaaen festgelegten Reihenfolge: Man beginne mit Strecken aus der Liste (1) bzw. (2) in dort vorliegender Reihenfolge; zu deren Entnahme ordne man diese Liste zyklisch so um, dafi ~
~
72
3 Gewinnung eines globalen Niveaulinienbildes
sie niit einer dieser Strecken beginnt. Erst danach fahre nian in entsprechender Reihenfolge-Festlegung mit den Strecken aus (2') fort, falls es solche gibt. Zu jeder Strecke s k ( k = 1,. . . , zi) gibt es genau eine Elementarflache, die s k in ihreni Rand enthalt und nicht in Hi liegt. Der k-te Einzelschritt der Schrittfolge besteht dann darin, diese Elementarflache bei Sk an Gi,k-l anzufugen und damit Gi,k zu erhalten. Dies kanri bei der hier gewahlten Dateristruktur folgendermakn beschrieben werden: Wir betrachten diejenige zum Rand von G Q - 1 gehorende Liste (1) bzw. ( 2 ) oder ( 2 ' ) , in der Sk vorkommt. Diese Liste sei nach geeigrieter zyklischer Uniordnung
X I ,u1,XZ, uz,. . . ,xz-l,uz-l,X,, Sk
( X t Punkte, Ut Strecken).
(*)
Die Raridliste der anzufugenden Elementarflache sei, nach zyklischer Umordnung (einschliefilich eventueller Umkehrung der Reihenfolge) ,
X I ,s k , x,,V2, Y3, v,,
,
. . , Yy, v,
(Yq Punkte,
v,
Strecken).
(**I
1st s k die einzige in (*) und (**) enthaltene Strecke, so ergibt sich die gesuchte Randliste von Gi,k, indem man (*) durch die Liste x1,u1,
xz,uz,.. . ,xz-1,uz-1, x,,vz,y3, v3,.. .
9
yy, vy
ersetzt (und eine eventuell fur Gz,k-l vorhandene Liste (2') unverandert ubernimmt). Treten auBerdem noch weitere gemeinsame Strecken auf mit den Eigenschaften, durchlassig und nicht Aufienstrecke zu sein, so lafit sich zeigen, daB hierfur nur folgende Moglichkeiteri bestehen: 1. Alle diese Strecken bilden einen zusammenhangenden Streckenzug C. Dann kann man diesen Streckenzug in analoger Weise ,,eliminierenii,wie dies oben rnit s k dargetan wird. Da alle an die gemeinsamen Strecken angefugten Elementarflachen konvexe Polygone sind, konnen bei ihrem hier vorgesehenen Anfiigen an die Strecken von S bzw. C keine Locher entstehen. 2. Die in (*) und (**) gemeinsamen Strecken sind nicht zusammenhangend, sie bestehen also aus mehreren paarweise disjunkten Streckenzugen C,. Sollte in dieserri Fall die zunachst nicht auszuschlieaende Moglichkeit eintreten, daB das Zusammenfugen mit Hilfe analogen ,,Eliminierens" zu einer Anzahl (2 1) von Lochern fuhrt, so sei folgendermaflen weiterdiskutiert: Hatte bereits Gi,k- I einen Rand ( 2 ) , (2'), so kann ein solches zusatzliches Loch nicht auftreten. Hat G i , k - 1 aber nur einen Rand ( l ) ,so kann hochstens ein Loch zustandekommen. Denn jedes derart entstehende Loch hat in seinem Rand einen zwischen zwei der C, verlaufenden Streckenzug. Dieser muB undurchlassig sein (sonst ware er ein C,), ein solches Loch enthalt daher zwangslaufig in sich zurucklaufende Niveaulinien, und mehr a.ls ein solches Loch bedeutete das Auftreten von verzweigten Niveaulinien. Die induktiv zu zeigende Eigenschaft ist damit in beiden Fallen 1, 2 VOII Gz,k-l auf Gi,k ubertragen. Das entscheidende Spezifikum des Vorgehens ist: Man lafit fur jeden Einzelschritt nicht etwa schon alle auf dem Rand von Gi,k-l vorkommenden Strecken zu ~
3.1 Strukturbestimmende Niveaulinien
73
(sofern durchlassig und nicht Aufienstrecke) , sondern arbeitet wahrend der ganZen Schrittfolge bis zu G'a,zs nur mit den schon bei Gz,O = Havorkomrnenden S1,. . . ,Sz*. Im obigen Fall 1 wird dadurch und durch die Reihenfolge-Regelung fur das Abarbeiten der S1,. . . ,Sz, die Anwendung des genannten Konvexitatsargummts moglich. Denn von jeder Ecke W des Streckenzuges C bleiben die beiden an die Nachbarstrecken dieser Ecke anzufugenden Elementarflachen standig durch ihre von W ausgehenden Kanten getrennt, wenn dies zu Anfang der Fall war. Und im Fall 2 wird durch das Verbot des Anfugens an andere als die zu Anfang der Schrittfolge vorliegenden S1,... ,Szt verhindert, durch sonstiges Anfugen zwischenzeitlich ein a priori nicht absehbares System ,,uberflussiger" Locher hervorzurufen. Hinzu kommt der Vorteil, wenigstens zu Beginn jeder (von einem H, bis zu Ha+lfuhrenden) Schrittfolge die Schrittzahl z, zu kennen. [Dagegen ist die Anzahl der bis zum Erreichen der Abbruchbedingung zu bildenden Schrittfolgenflachen H, nicht a priori bekannt. Dasselbe gilt fur die Anzahl N aller zu bildenden Endfiachen. Zwar konnte man fur beide Anzahlen eine worst-case-Schranke herleiten (siehe Ubung 13), aber diese ware wegen ihrer Grofie fur Praxisfalle kaum von Bedeutung.]
Ubung 13. Man ermittle obere Schranken fur die Anzahl N der Endflachen F, sowie jeweils fur die Anzahl s, der Schrittfolgenflachen H,, die man bis zur Gewinnung je einer Endflache F, zu bilden hat. Dabei gehe man z.B. von folgenden Sachverhalten aus: Als Verzweigungspunkt einer Niveaulinie kommt nur ein Punkt in Betracht, der entweder ein Rasterpunkt oder der (jeweils einzige) Kreuz- oder T-Punkt eines kritischen Rasterquadrats ist; damit ergibt sich eine obere Schranke fur die Anzahl aller verzweigten Niveaulinien. Jede dieser Linien kann bei ihrem Verlauf im gesamten Rasterrechteck jedes Rasterquadrat, das nicht ihren Kreuz- oder T-Anfangspunkt enthalt, hochstens zweimal durchlaufen. Daraus (und aus ihrem Verlauf bei den Kreuz- oder T-Punkten) ergibt sich eine obere Schranke fur die Anzahl aller Elementarflachen, in die je ein Rasterquadrat zerlegt sein kann. Also hat man auch eine obere Schranke fur die Anzahl aller Elementarflachen uberhaupt und damit erst recht fur die Anzahlen N und s,.
3 Gcwiririurig eines globalen Niveaulinicnbildcs
74
_-
3.2 Erste Varianten zur Gewinnung verbesserter Erscheinungs bilder 3.2.1 Ausgabe der verzweigten Niveaulinien ohne Weiterbearbeitung
Mit den sclion in Abschnitt 3.1.5 gewonnenen (rnoglicherweise) verzweigten Niveaulinien - sie wurden dort auch mit der Zielstellung einer endgultigen Zerlegung erlaiitert war ein globales Niveaulinienbild ,,eigentlich" bereits fertiggestellt. Dies ist in dem Sinne zu verstehen, daB durch das gewonnene Bild bereits der Verlauf aller uriverzweigten Niveaulinien topologisch eindeutig festgelegt wird, wenn man noch die Forderungen hinaufiigt, daB die von den verzweigten Linien begrenzten nicht leeren Teilflachen sanitlich unverzweigte Niveaulinien enthalten sollen, die jeweils in einer solchen Flache zueinander homotop sein sollen. Man betrachte als Beispiel etwa Abb. 31 ohne die punktierten Linien. So sollen beispielsweise in diesen FlAchen keine Beruhrungen oder Uberkreuxurigen von Niveaulinien auftreten; ebenso wird ausgeschlossen, daB in einer dieser Flachen ein Teilbereich von in sich zuriicklaufenden Niveaulinien durch einen anderen Teilbereich umschlossen wird, in dem sich Niveaulinien befinden, die (im letztgenannten Teilbereich) nicht in sich zurucklaufen - das wurde namlich der Homotopie widersprechen. Die Abschnitte 3.1.6, 3.1.7 dienten ,,nur" daau, nicht bei der anschaulichen Beschreibung der Flachen (,, Weglassen von punktierten Linien") zu bleiben, sondern sie daruber hinaus zum AnschlieBen weiterer Vorhaben algorithmisch (als .Endflachen" gewinnbar) in eine Datenstruktur einzubringen. Will man auf derartige Weiterverwendung oder Variantenbildung verzichten, so geniigt in der Tat das Weglassen der punktierten Linien mit nachtraglicher (Bildschirmoder Drucker-)Ausgabe der ubrigbleibenden Linien. Die wegzulassenden Linien sind natiirlich im AnschluB an die in 3.1.5 geschilderte Vorgehensweise leicht algorithmisch anhand ihrer Eigenschaften, durchlassig und nicht Auaenstrecke zu sein. auszumachen. ~
3.2-2 Abgeriistete Var iante:
Iteration unter Verzicht auf Homotopie-Information Eine noch einfachere Variante zur Gewinnung eines Niveaulinienbildes, das ,,in gunstigen Fallen" (siehe unten) die Niveaulinienstruktur veranschaulicht, die im Verfahren bis 3.1.5 urid anschlieaendem Weglassen punktierter Linien gemaa 3.2.1 erreichbar ist, besteht in Folgendem: Man arbeitet Rasterquadrat fur Rasterquadrat die Vorgehensweise ab, die in den Abschnitten 2.1.3 sowie entweder in 2.2.1 (Definition 2) oder im Absatz vor 2.3.1 definiert wurde. (Fiir Typ 2 kann man anstelle von 2.1.3 wahlweise auch auf 2.2.1, Absatz nach Ubung 4 zuriickgreifen.) Dabei legt man die Zahlenwerte, zu denen Niveaulinien gezeichnet werden sollen, willkiirlich fest, z.B. als arithmetische Folge zwischen der kleinsten und der groaten Zahl unter allen Werten, die fur die Rasterpunkte vorgegeben waren.
3.2 Erste Varianteri zur Gewinnung verbesserter Erscheinungsbilder
75
Man kann eine solche arithmetische Folge ohne nennenswerten Mehraufwand so wahlen, daB kein Glied dieser Folge mit einem Rasterpunktwert ubereinstimmt. Damit hat man bereits gesichert, daB durch die gezeichneten Niveaulinien keine derjenigen Verzweigungen erfaBt wird, die von Rasterpunkteri ausgehen. Sorgt man zusatzlich dafur, daB kein Folgenglied mit einem der Werte ubereinstimmt, die bei den Quadraten des Typs 8 entweder (falls wie in 2.2.1, Def. 2 vorgegangen wurde) als Parallelmittel auftreten oder (falls wie ini Absatz vor 2.3.1 vorgegangen wurde) als Grenzwert der sukzessiv gebildeteri Parallelmittel zustandekommen. so werden alIe gezeichneten Niveaiilinien unverzweigt, was erfahrungsgema8 zu vorteilhafteren Linienbildern fuhrt. DaB dieses Verfahren die gewunschte Niveaulinienstruktur nur ,,in gunstigen Fallen" erbringt, wie eingangs gesagt wurde, liegt an folgendem Urnstand: Man hat in keirier Weise zwingerid gesichert, jede Klasse homotoper uriverzweigter Niveaulinien uberhaupt mit mindestens einem Reprasentanten zu erfassen. Wird also gerade darauf Wert gelegt, eine derartige Vollstandigkeit beziiglich der HomotopieInformation zu erreichen, so ist diese (auf das gesamte Arbeiten gemaB 3.1 verzichtende und insofern stark vereinfachende) Variante nicht anzuwenden. ~
3.2.3 Wert-Intervalle der Teilfllichen
Wir schlieBen nun wieder an die Ergebnisse an, die mit den Verfahren bis einschlieBlich 3.1.7 erreicht wurden. Das gesamte Rasterrechteck ist hiernach durcli alle (,,erzwungenen") verzweigten Niveaulinien in N ,,Endflachen" F l , . . . , FN sowie in eine Anzahl (2 0) von ,,leerenii Teilflachen zerlegt. Jede Endflache F,, wird von zueinander homotopen unverzweigten Niveaulinien ausgefullt. Weiter folgt aus dem Vorgehen, mit dem diese Flachen gewonnen wurden: Der Rand jeder Endflache besteht aus einer Anzahl (2 1) von undurchlassigen Strecken, die keine AuBenstrecken sind, und einer Anzahl (2 0) von AuBenstrecken (untw diesen konnen sich sowohl durchlassige als auch undurchlassige befinden). Genauer gehort jede Endflache zu genau einer der folgenden Sorten:
Sorte (a): Endflachen, ausgefullt mit in sich zurucklaufenden Niveaulinien. Diese Sorte ist dadurch gekennzeichnet, daB ihr Rand nur undurchlassige Strecken enthiilt. Darunter konnen sich auch AuBenstrecken befinden. Ferner ist es auch moglich, daB der Rand des gesamten Rasterrechtecks nur in einzelnen Punkten erreicht wird; d.h., in einer der Listen aus 3.1.6, die den Rand der betreffenden Endflache beschreiben, ist Folgendes einmal oder niehrmals moglich: Es kommt in dieser Liste ein Punkt Pj oder Pi,jvor, der dem Rand des gesamten Rasterrechtecks angehort; und dieser Punkt steht in der Liste nach geeigneter zyklischer Umordnung in der Aufzaihlung . . . Lj-1 Pj Lj . . . bzw. . . . L i f - 1 Pi,jLij . . . , wobei Lj-1 und Lj bzw. Lij-1 und Li,j keine AuBenstrecken sind.
Sorte (a,a): Der Rand besteht uus einer Liste (1). Die Endflache ist also topologisch aquivalent zu einer Kreisscheibe.
76
3 Gewiniiurig eirics globalen Niveaulinienbildes
Sorte (a,@: Der Rand hesteht aus zwri Listen ( 2 ) , (2’). Die E;ndflaclie ist also topologisch aquivalent zu einer Kreisscheibe rriit einer Anzahl (2 1) voii Lijcliern. Sorte (b): Endfliichen, ausgefiillt niit Nioea*uliriien, d i e das gesamte Rasterrechteck tion Rand zu Rand dunhqueren. Diese Sorte ist dadurch charakterisiert,, da13 iiriter den Randstreckeri eiric Anzahl (2 1) vori durchliissigen AuI.3enstrccken vorkoirimt. Falls der R.and aus zwei Listen (a),(2’) besteht,, korrirrien alle t h e durchl2ssigen AuBenstrecken in derselben dieser beiden Listen vor, etwa in ( 2 ) . Sorte ( b p ) : Die d~~~~:hliis.sigt:ri Aujlenstrecken bilden einen zusc~mmenhiiriger1den Streckt:nzug. D.11.. die List,? (1) bzw. (2). in der sie stehen, ist nach geeigneter zyklischer Urriordnung (einsclilieBlich eventiieller Urnkehrung der R.eihenfolge) von der Grtst,alt, woriri U1,. . . , U, durcliliissigti AuBenstrecken sirid, aber VI, . . . , V, nicht, ( x 2 2, y 2 0; der Spezialfall y = 0 besagt: Der Streckenzug X I , U1, . . ., X,, [ J , ist der Rand des gesarriten Rasterrechtecks. d.h., es gibt keirie verzweigte Niveauliriie; das R.asterrechteck ist selbst diese (einzige) Endflache.) Sorte (b,P): Die durchlussigen Auj3enstrecken bilden geaau zwei jeweits i71 sich, aber nicht miteinander zusammenhangende Streckenziige. D.h., die Liste (1) bzw. (2), in der sie stehen, ist nacli geeigneter zyklischer Urnortlnung (einschlie:l.3licheverit,ueller Urrikehrurig der Reilienfolge) vori der G est a1t,
worin U1. . . . . U,, R1, . . . , R, durchlassige Auoenstrecken sind, aber VI, . . . Vy, SI,. . . , S , nicht (.r. y , p , q 2 1).
.
Zu jeder Endflaiche F, k a r i r i man riiiri ein offenes Interval1 ( z 1 ,z 2 ) reeller Zalileri rriit z1 # z2 so finden, dao die Zahlen dieses Iritervalls umkehrbar eirideutig deli Niveaiiliriieri zugeordnet sirid, mit denen F,, ausgefullt ist. Diese beiden Zahleri zl. z2 sirid abstrakt als IIifirnurri u ~ i dSuprernurn derjenigeri Belegungswerte zii kennzeichnen, die bei inriereri Punkten der Fliiche F,, auftreteri konnen. Konkret gibt es fiir jede dieser beideu Zahlen, einzelri betrachtet, nur die beiden folgerideri Miiglichkeiten: Es kanri crsteris sein, daB auf derri Rand vori FTLein zusamrrienhangender Strecktmzug aus undurcliliissigen Streckeri vorkoniirit, desseri samtliche Punkte r n i t einrni solcheri Wert zi belegt sind; in diesern Fall sei zi eiri Randwoert vori F,, gcriaririt. Es kariri aweiteris sein, dal.3 zi der Belegungswert eiries einzelnen Rasterpunktes P ist, der eritweder irri Irinerri voii F,, liegt oder aber eirierri Streckeriziig C angeliort, der aus durchlassigen AuBeristrecken besteht urid woriri P eiri iririerer Piirikt (~1.11. nicht Endpurikt) vori C ist; in diesem Fall sei zi eiri
3.2 Erstc Varianten zur Gewinnung verbesserter Erscheinungsbilder
77
Innenwert von F, genannt. Mit diesen Bezeichnungen sind entweder 21 und 2 2 beides Randwerte von F,, oder eine der Zahlen 2 1 , 2 2 ist ein Randwert, die andere ein Innenwert von F,. Das Ermitteln dieser beiden Zahlen gelingt in jeder der vier Sorten von Endflachen auf folgende Weise: Sorte (a,cy): Als z1 nimmt man den Wert, mit dem alle Punkte der Liste (1) belegt sind; 2 2 findet man, indem man unter allen inneren Rasterpunkten T I ,. . . ,T, der Flache F, denjenigeri (eindeutig bestimmten) sucht, fur den 1 . ~ 1- rpl rrioglichst groa ist, wobei rp jeweils der Wert ist, rnit dem Tp belegt ist ( p = 1,. . . ,m). Es mua genau einen solchen Punkt T p geben; dies kann folgendermaoen begrundet werden: Die Endflache F, wird ausgefullt von Niveaulinien, von denen jede in sich zurucklauft (einer Kreislinie topologisdi aquivalent ist) und die samtlich zueinander homotop sind. Da F, zur Sorte (a,a) gehort, folgt genauer: F, hat keinen inneren Rand von hoherer Dimension als Null; d.h., die Niveaulinien konnen weder eiri Flachenstuck noch einen Streckenzug umschlieoen (der zu einem Flachenstuck ,,aufblasbar" ware, wie dies in 3.1.6 irn AnschluB an Satz 19 erlautert wurde). Also mussen diese zueinander homotopen Niveaulinien genau einen Punkt Tp umschlieoen. Er muB ein Rasterpunkt sein; dies folgt aus der Herstellungsweise der Niveaulinien, (nach 2.2.1 oder 2.3.1 iterativ gefunden, oder einfacher) riach der eingangs in 3.1.4 gegebenen Beschreibung gefunden. Urn die (somit auf ihre Belegung rp zu prufenden) inneren Rasterpunkte Tp von F, ( p = 1,. . . ,m) zu finden, kann man die beim Zusamniensetzen von F, gemafj 3.1.7 verwendeten Elementarflachen betrachten: Aus der Randliste jeder solcheri Elementarflache behalt man nur diejenigen Punkte bei, die Rasterpunkte sind und nicht im Rand von F, vorkommen. Sorte (a,@):Als .z1 wird der Wert genommen, mit dem alle Punkte der Liste ( 2 ) belegt sind; als 2 2 der Wert, mit dem alle Punkte der Liste (2') belegt sind. Sorte (b,a): Als 21 wird der Wert genommen, mit dern der Punkt X 1 belegt ist (mit diesem Wert ist auch Y1 belegt); .z2 findet man, indem man unter allen inneren Rasterpunkten 7'1,. . . , T, ( m 2 0 ) der Flache F, sowie unter den Punkten X 2 , . . . , X , denjenigen sucht, fur den ( 2 1 - ~ 1 moglichst groB ist ( p = 1,. . . , m .c - l ) ,wobei rp fur p = 1,. . . ,m jeweils der Wert ist, mit dem Tp belegt ist, und fur p = m 1,. . . ,m 2 - 1 jeweils der Wert, mit dem X P + 1 - , belegt ist. Wie in (a,a) kann man begrunden, da8 es genau einen solchen Purikt geben mufi (siehe auch die unten folgende Bemerkung); und wie in (a,a) kann man die inneren Rasterpunkte Tp unter Verwendung der Elenientarflachen finden, aus denen F , zusarnmengesetzt ist. Sorte (b,P): Als z1 wird der Wert genommen, mit dem X1 belegt ist (mit diesern Wert ist auch Q1 belegt); als 2 2 der Wert, mit dem Y1 belegt ist (mit diesem Wert, ist auch PI belegt).
+
+
+
Bemerkung: Das hier bei den Sorten (b,a)und (b,@)angegebene Vorgehen fur durchlassige Auaenstrecken entspricht der Vorstellung, daB Niveaulinien, deren beide Endpunkte auf dem Rand des gesamten Rasterrecht.ecks liegen, ,,eigentlich"
78
3 G(~win~iung eines globalen Niveauliriicmbi1dc.s
uber diese bcitleri Eiidpurikte hiriaus iii das Auf3enget)iet des R.asterrec1itecks fortzusetxeri sirid: Iiur ist i i h r ( h i Verlauf dieser Fortsetxungeri keirie Iriforniation aus dcr vorgegebeneri R.asterbelegurig xu eritriehrnen. .Jedoch ist es fur den Fall ( h a )m i ,,Iiali(:liegeIidst,eri", sich folgeride Fortsetzurig vorzustellen: .Jede auf dern Streckerizug XI,U1. . . . , X,, (J,, Y, transversal enderide Niveauliriie wird so bis zur cberifalls dort erideIiden, rriit gleicheni Wert belegten Niveaulinie weitergefulirt, daB die so ergarlzteri Niveauliriicri dassclbe Bild wie (a,a) bzw. (a$) hieten. Daher k a r i r i marl ;Inch die Beweisfiihrung von (a,cr) auf ( b , ( ~ubertragen, ) ini Fall eiries Minirriums voii 1x1 - T , I~fur eirieri irincreri Rasterpurikt T, sogar in uriveranderter Weise. Irri Fall ciries Minirnurtis fiir eiri X,, ist fur deri Eirideutigkeitsbcweis zusatzlich herarizusiehen, daj3 die Bclegungswerte beirri Durchlaufen des St,reckenzuges XI,U1. . . . ,X , bis zu cirieni X,,, rriit 1 < p < x streng rrionotori zu- odcr abnehrnen u r i d voii diescIri X , an sich entgegerigesetzt streng niorioton verhalten.
Ubung 14. 111 Abb. 33 seien die angegeberien Purikte, soweit sie nicht, R.astcrpurikt,c sind, jeweils der Mittelpunkt einer Rasterquadratseite. Es seieri folgeride Belegungen vorgegeben:
I
I
I
I
F-G-H-
I
N-PI
I
I
I
I
I
I
,I-K-L
M
IQ-R-S I
I I
Abb. 33
Punkt. A B C D F H cJ L N P Q S V W X Y Belegung 1 2 2 2 2 4 3 1 1 2 3 1 0 0 1 0 Marl beweise: Die Ariweridurig des bisher besclirieberieri Verfahrens ergibt Fliichen niit Raridern der unteri arigegebenen Sorteri urid zugehijrigen Intervallen. Dabei verwende rriari folgende Streckeni~ezeichnuiigeri:
Strecke J Q K R LS M Q N T N V PU RU SX SY T X V W W X X Y t u v w x y z a p y 6 Bezeichnung q r s
3.2 Erstc Varianten zur Gewinnung verbesserter Erscheinungsbildcr
durchlassig .. . .. . . . . .
/
79
Sorte Intervall undurchlassig _ _ _
~
leer
I
3.2.4 Gewinnung der Niveaulinie zu gegebenem Wert in gegebener FlBche
Alle weiteren Varianten der Gewinnung eines Niveaulinienbildes gehen von der Losung der grundlegenden Aufgabe aus, die folgende Forderung zu erfullen:
Forderung 3 (Gewinnung einer einzelnen Niveaulinie). Gegeben seien cine (nach 3.1.7 gewonnene) Endjlache F, und eine Zahl z aus dem zu F, gehorenden (nach 3.2.3 gewonnenen) Interval1 ( z l , z 2 ) . Gesucht ist die in F, iierlaufende Niveuulinie zum Wert z . Eine erste zu nennende Moglichkeit zur Losung dieser Aufgabe kann folgendermaflen beginnen: Unter den Elementarflachen, aus denen F, zusammengesetzt ist, wahlt man eine beliebige E aus. Unter den durchlassigen Randstrecken von E gibt es nach 3.1.5, Satz 17 auch Strecken mit der Eigenschaft, dafl die Belegungen c1, <2 der Endpunkte der betreffenden Randstrecke die Bedingung z E [
80
3 Gewiririung eines globalcii NivcauliriicIibildcs
erfullt. so gibt es geriau eirie vori E verschiedene Elemeritarflaiche, auf deren Rarid Q liegt; dies folgt aus der Unverzweigtheit aller zu (zl, z 2 ) gehorenden Niveauliniwi iri F,. Man fiihrt tlann r r iit dieser neiien Elenient,arflaclie ip der R.olle von E und rriit, Q in der R.olle von P den nachst,en Scliritt (lurch. Fur den Abbruch gibt es zwei Miiglichkeiten (siehe auch 3.1.3, Def. 10): Als Abbruchbedingung gilt erstens der Fall, dai3 der bei eirierri Schritt erreichte Punkt Q rriit dem gariz zuerst gewahlt,eri Punkt P iibereiristirrinit. Die Niveauliriie ist beeridet; sie hat sich als eirie in sicli zurucklaufende Kurve herausgestellt. Eine andere Abbruchbedingung bestelit darin, daO der bei eiriari Schritt erreiclite Purikt Q auf derri Rand des gesarriteri R.asterrechtecks liegt. D a m ist zu prufeii, ob der gariz zuerst gewahlte Purikt aucli auf derri Rand des gesarriteri Rasterrechtecks liegt, worriit sich die Niveaulinie als eine von Rand zu Rand (voni ersten P ZUIII letzteri &) verlaufende Kurve herausgestellt, hat. (Dabei muf3 P # (2 seiri; deriri nacli der Regelung in 3.1.2, Def. 9, ware ini Fall P = C) dieser Piirikt Startpunkt von folglich nndurclilassigeri Streckeri, also niit, 2 = 21 oder 2 = 2 2 belegt; siehe auch die Berrierkung zu 3.2.3, Sorte (a). Mit arideren Worten: Teilstucke vori Niveaulinien, die den R.and des gesamtcn Rasterrechtecks in geriau eirierri Purikt ,,erreichen und sofort wieder verlasseri" , konimen riicht in hier zu findenden Niveaulinien vor. Diese Festlegung in Defiriitiori 9, die solche Teilstucke als undurclilassig definierte, war notwendig, weil eine solche Niveaulinie irri weiteren Verlauf ,,erxwungene" Verxweigurigeri aufweiseri kann.) Liegt aber der gariz zuerst gewahltx Punkt nicht auf derri Rand des gesariit,en Rasterrechtecks, so gibt es geriau eine Elernentarflache, die vori der ganx zuerst, gewalilten Elementarflache E verschieden ist und den Purikt P eberifalls auf ihrern Rand enthalt; auch dies folgt aus der Unverzweigtheit. Mit, dieser neuen Elernentarflache in der Rolle von E urid rriit P ist, d a m eine zweite Sclirittfolge anzuschlieOen; sie rriui3 zu dem Abbruch fuhren, daO sich bei einerri Schritt ein Punkt Q auf deni Rand des gesaniten Rasterrechtecks eiristellt (auch hier rriit tler Eigerischaft, voii den1 Endpunkt (2 der vorangehenderi Schrittfolge verschieden zu seiri.) Die einzelneri Schritte in den hier beschrieberien Schrittfolgen werderi in der nun zu nennenden Weise durchgefuhrt: Nach 3.1.5, Sate 17, gibt es auf den1 Rarid von E zwei Streckerizuge 3 und G aus durchlassigen Strecken, so daB fur jede Zahl E (21, 2 2 ) riiit geriau einer, sogleich zu nennenden, Ausnahrrie die rriit belegte Niveauliriie, die E durchquert, dies in einer Weise tut, daS sie von einerri Punkt in 3 bis z u einerri Piirikt, in 6 verlauft. Die Ausnahrne liegt genau in dem Fall vor, daB die Flache F, von der Sorte (b,a) mit y > 0 ist urid auf ihreiri Rand geriau eirien niit belegten Punkt enthalt; das ist d a m narnlich derjeriige Punkt, der die ganz arii Ende von 3.2.3 fiir X , beschriebenen Eigenschaften hat. Die Niveauliriie zii in F,, ist damit zuni Punkt X, entartet. 1st z gerade diese Zahl C,so wird die Forderung nur vori dieser entartcteri Linie erfiillt, iind das gesainte Verfahren kann ent,fallen. Aridernfalls aber hat man zu Beginn des Sclirittes den Punkt P etwa auf 3 vorliegeri. und der zu erreichende Punkt Q # E ist auf G zu sucheri. Dieser Streckerizug G sei geriauer der Streckerizug Y1,R.1, . . . ,Y s - l , R,,-1, Y, (Y1,. . . , Y, Punkte. R1, . . . RSp1 Strecken). Fur die Belegurigen C J ~ ., . . ,u s - l ,CJ~,der Purikte
<
<
<
<
.
3.2 Erste Varianten zur Gewinnung verbesserter Erscheinungsbilder
81
YI,. . . ,Ys-l,Y, gibt es unter den Intervallen [ O I , O Z ) , . . . , [gs-z, u s - l ) ,[(T,-I, a,] genau eines, das den Wert z enthalt. 1st dies etwa das Intervall mit den Randzahlen gt-l. g t , so findet man Q durch lineare Interpolation auf der Strecke Yt-lyt, die Niveaulinie wird von P aus mit der Strecke PQ weitergefuhrt. 3.2.5 Zweite GewinnungsmiSglichkeit dieser Niveaulinie
Eine zweite Losung der Aufgabe gliedert sich nicht in Schritte, die auf Elementarflachen (als Teile der vorgegebenen Endflache F,) bezogen sind, sonderri in Schrittfolgen, wobei je eine Schrittfolge auf ein Rasterquadrat bezogen ist. Man kann sogar feststellen, daB die eigentlichen Durchfuhrungsschritte dieses zweiten Losungsweges gar nicht explizit von Informationen aus der Flache F, Gebrauch machen, sondern stattdessen implizit zu derselben Losung fuhren, indem namlich das hier angewandte Konstruktionsprinzip die in kritischen Rasterquadraten auftretenderi Verzweigungen vermeidet und indem bereits durch die Wahl von z im offenen Intervall ( z 1 , z 2 ) die Verzweigurigen in Rasterpunkten verrnieden werden (vgl. 3.1.2, Def. 9). (Allerdings benotigt man die Flache F,, um die in Forderung 3 zugrundegelegte Voraussetzung z E ( ~ 1 , 2 7 2 )erfullen zu konnen, und falls speziell F, von einer der Sorten (a,a), (b,a) ist, spielt zur Ermittlung dieses Intervalls (zl,2 2 ) auch das Aufsuchen innerer Rasterpunkte eine Rolle, wofur sogar die Zusammensetzung von F, aus Elementarflachen heranzuziehen war. Ferner braucht man ganz zu Anfang des Verfahrens einen Rasterquadrat-Randpunkt, der zu F,, gehort und mit z belegt ist.) Ein weiterer Vorteil des zweiten Losungsweges wird darin bestehen, daB sogleich die ,,feine" bzw. ,,vermittelnde" Linienfuhrung (siehe 3.1.4) garantiert ist, wahrend es bei dem Losungsweg in 3.2.4 vorkommen kann, daB eine dort konstruierte Strecke PQ von der ,,feinen" bzw. ,,vermittelnden" Linienfuhrung abweicht, falls diese namlich P niit Q uber einen mehrteiligen Streckenzug verbindet. (Man konnte also auch sagen, daD in 3.2.4 eine ,,gem%@ vergrijberte" Linienfuhrung hergestellt wird.) Diesen Vorteilen steht freilich der Nachteil gegenuber, daB hier irri zweiteri Losungsweg die Schrittzahl der fur je ein Rasterquadrat durchzufuhrenden Schritte theoretisch unbeschrankt ist; praktisch hangt sie in gelegentlich ungunstiger Weise von der Genauigkeit ab, mit der gerechnet und gezeichnet werden sol1 oder kann (siehe das spater folgende Kapitel 5): 1st eine hierfur wirksame Genauigkeitsschranke nach unten durch 2-9 abschatzbar (mit positivem ganzem g), so weiB man zunachst mit Sicherheit, daB die Schrittzahl je Rasterquadrat eine GroDenordnung von 2'9 nicht uberschreiten kann. (Nutzt man die in 2.2.1, Ubung 4 genannten Eigenschaften 1 und 2, so kann man diese obere Schranke wenigstens auf 29+' herabdrucken.) In 3.2.4 hatte dagegen die Schrittzahl des gesamten Vorgangs (sogar einschlieBlich der Ermittlung von 2 1 , 22 zur Erfiillung der Voraussetzung z E (21,z 2 ) ) nur die GroBenordnung der Anzahl der Elementarflachen in F,. Die Grobstruktur des zweiten Losungsweges ist analog wie die des ersten Losungsweges gestaltet, nur unter Ersetzung des Begriffes ,,Elementarflache" durch den Begriff ,,Rasterquadrat": Man wahlt zu Beginn, wie bereits erwahnt, einen zu F,&
3 Gewinriiiiig eiries globaleri Niveauliriiciibildes
82
gehorenden, niit, z belegten Punkt auf derri Rand eiries Rasterquadrats. Anschlieflend erfolgt so lange das Durchqueren voii Rasterquadraten, bis eine Abbrnchbedingung erfiillt wird. Die Abbruchbedirigungeri sowie die Entsclieidung, ob nochrrials z u ~ nDurchqueren weiterer Rasterquadrate iiberzugehen ist, karin genauso wie in 3.2.4 forIriuliert werden. Ebenso wie dort kann auch niit Berufung auf die durch z E ( 2 1 , z 2 ) gesicherte Unverzweigtheit argunientiert, werden, uni der jeweiligen Eirideutigkeit bei der Fortsetzung zuni naichsten Scbritt sicher z u sein. Zu schildern ist nun, durch welche Schrittfolge nian, ausgehend von eineiri Purikt, P auf deIri Rand eiries Rasterquadrates, die Fortsetzung der Niveaiilinie firidet, die das Rasterquadrat bis zu einetn Purikt I ' J # P durchquert. Das Itasterquadrat sei 520 genannt. Wir sagen, es sei ein (das einzige) Quadrat der Stufe 0. 1st fur cine game Zahl s 2 0 schon erklart, was uriter eitiem Quadrat der Stufe ein Quadrat der Stufe s, so s zu verstehcn ist, so werde weiter definiert: 1st wird es durdi seine zwei Mittelparalleleri in vier Quadrate der Stufe s 1 zerlegt. Nu11 kann, UIII je eineri Schritt der auszufuhreriden Schrittfolge zu definieren, ailgenorrirrien werden, daB die Niveaulinie bereits bis zu einerri Purikt X gelarigt ist, cler dern Quadrat $20 (als Randpunkt oder inrierer Punkt) angehort, d.h., daB entweder noch die Anfangsposition X = I' vorliegt oder daB X erreicht wurde, inderri zuvor ein in 520 erithaltenes Quadrat einer Stufe s 2 0 durchyuert wurde. Wir unterscheiden weiter die folgenderi Falle: Es gilt X # P , urid der Punkt X liegt bereits wieder auf dern Rand von 00. In dieserri Fall ist die Durchquerung von $20 mit Q := X beeridet. Es gibt eine moglichst kleirie Stufenzahl t derart, dafl X auf dern Rand eines in I20 liegeriden Quadrates der Stufe t liegt, das mit einer Strecke X Y durchquert werden kann ( X # Y , und Init z belegt), aber seinerseits nicht dasjenige Quadrat eirier Stufe s enthalt, rnit dessen Durchquerung der Punkt X erreicht wurde. (Die Anfangssituation X = P ordne nian niit s := -1, t := 0 formal hier ein.) Aus der durch z E (z1,zZ) erreichten Unverzweigtheit folgt, daB diese Beschreibung des Quadrates der Stufe t unter Beachtung von deren Minimalitat dieses Quadrat eirideutig festlegt; es sei S2t genannt. Ferner folgt, dai3 hierrnit riur noch folgende Moglichkeiten vorliegen konnen: 2.1) Das Quadrat f 2 t ist unkritisch. Danri kanri nian es mit einer Strecke X Y durchqueren urid nach Unibenerinung von Y in X und von t in s zu der Unterscheidung zwischen den Fallen 1 ) und 2) zuriickkehren. 2.2) Das Quadrat ist kritisch. D a m teile man es in vier Quadrate der Stufe t 1 ein. Fur genau eines vori ihnen kann man rriit diesern Quadrat in der Rolle des darnit neu erklarten z u der Unterscheidung zwischen 2.1) urid 2.2) xuruckkehren. Nochriials uriter Berufurig auf die Unverzweigtheit folgt, daB nach endlich vielen Schritten 2.2) der Fall 2.1) eintreteri muB. Freilich hangt, wie oben erwahnt, die theoretisdi unbeschrankte Schrittzahl praktisch von der Groflenordnung ab, mit der die Differenz zwischen z und der Iterations-Grenzzahl (siehe 2.2.3, Satz 7 bzw. 2.3.2, Satz 14) abgeschatzt werden kann.
+
+
3.2 Erste Varianten zur Gewinnung verbesserter Erscheinungsbilder
83
Bemerkung: Der global wesentliche Unterschied zwischen der hier beschriebenen Niveauliniengewinnung und dem abgeriisteten Verfahren 3.2.2 besteht darin, da8 jede hier gefundene Niveaulinie eines Wertes z zugehorig zu einer jeweils fest vorgegebenen Endflache F, ermittelt wird, fur die der Wert z im zugehorigen Intervall ( z 1 , z z ) liegt. Dagegen wird in 3.2.2 das Ermitteln von Niveaulinien nur in Abhangigkeit von den vorgegebenen Werten t ausgefiihrt. Daher kann es vorkomrnen (und wird auch in praktischen Fallen recht haufig sein), da8 bei dem Verfahren aus 3.2.2 in gewissen Gebieten keine und in anderen Gebieten mehrere Niveitulinien gebildet werden. Ubung 15. Im AnschluB an Ubung 14 (Abb. 33) bestatige man die folgenden Moglichkeiten, fur die dort genannte Flache der Sorte (a,@)eine Niveaulinie zurn Wert w = 2 , 5 zu bilden: I. Nach dern Verfahren aus 3.2.4, etwa bei anfanglicher Auswahl der Elementarflache BEGF und dariri der durchlassigen Randstrecke B E : (1) Vom Mittelpunkt der Strecke B E durch BEGF fuhrende Strecke zum Mittelpunkt der Strecke FG; (2) Strecke von dort durch FGPM zurn Mittelpunkt der Strecke M P ; 7, ,, 1, ” MPQ ” ” PQ; (3) ” ,, 7, 7, 1, ” PQU ” ” QU; (4) ” 1, 57 ” QRU ” ” QR; (5) ” ,, ,, ” J K RQ ” ” JK; (6) ,’ ,, ,, 11 ” C J K ” ” C J; (7) ” >, >> ” B C J E ” ” B E . (8) ’) 11. Nach dem Verfahren aus 3.2.5, etwa bei anfanglicher Wahl des Rasterquadrats ABHE und auf dessen Randstrecke BH des Mittelpunktes der Strecke BE: (1) Das Quadrat A B H E ist unkritisch; Strecke bis Mittelpunkt von FG; (2) das Quadrat FHPN ist unkritisch; Strecke bis Mittelpunkt von MP; (3) das Quadrat HJQP ist kritisch, sein Mittelpunkt sei 2, der Mittelpunkt von PQ sei r, das Teilquadrat M Z r P ist unkritisch; Strecke bis I’; der Rand von HJQP ist erreicht; (4),(5), (6) die Quadrate PQXW, Q S Y X , JLSQ sind unkritisch; Strecken wie in I.; (7) das Quadrat CDLJ ist kritisch, sein Mittelpunkt sei A, der Mittelpunkt von CJ sei 0, das Teilquadrat JKAO ist unkritisch; Strecke bis 0; der Rand von CDLJ ist erreicht; (8) das Quadrat BCJH ist unkritisch; Strecke bis zum Mittelpunkt von B E . 7,
$7
7,
17
1,
,7
7,
77
84
3 Gcwinriurig eiries globalem Nivcauliriienbildes
3.2.6 Wahl eines Wertes pro Flache
Mit den in 3.2.3. 3.2.4, 3.2.5 beschriebeneri Vorgehensweiseri ist die folgende Moglichkeit zur Gewiririurig eiries Niveauliriieribildes gegeben, das derri Ziel bereits naherkornmt, in optisch gunstiger Weise die optirriierte globale topologische Struktur deutlich zu rriachen. Zu einerri vollstandigeri Erreichen dieses Zieles kommt niari, weriri man das irisgesarrit irri Abschnitt 3.2 geschilderte Vorgehen noch durch eirieri Zwischenschritt erganzt. Wir tragen die Beschreihung dieses Zwischenschrittes erst in Abschnitt 3.3 nach, und zwar aus folgenden Gruriden: Erstens wolleri wir die Detailbeschreibungen zur Niveaulinienermittlurig, wie sie irri Anschlufi an 3.2.5 nioglich werden, nicht nochrnals voneiriander trerinen. Zweiteris aber ist das gemafi 3.2 (ohrie den Zwischerischritt 3.3) zustaridekorririiende Vorgehen in vieleri Fallen fur praktische oder praxisgerechte Nutzung ausreichend, so daB die Verweridung vori 3.3 eher zu den Moglichkeiteri gehort, wie sie uriter der Uberschrift ,,weitergehende Spezialvarianten" auszubilden sind. Fur jede Eridflache F, ermittelt man das (nach 3.2.3) zugehorige Iritervall ( z I , z ~urid ) setzt dann 1 w := - ( 2 1 Z2). 2
+
Mit dieserri Wert erniittelt man d a m die in F, verlaufende Niveauliriie. Irn Sinne eirier verfeinerriden Betrachtung sei bemerkt, daB es fur diese einfache Wahl auch Anlasse zur Anderurig geberi kann. Ein solcher Anlafi konnte ersteris in Fallen gesehen werden, bei derieri Niveaulinieri sich in dicht nebeneinantlerliegeriden schmalen Flachenstiicken so eng drangeri, daB die grafische Verwerturig darunter leidet. Jedoch wiirde die Bereitstellurig eines (Teil-)Algorithmus, der genau derartige Regionen ermittelt, niit relativ hohern Aufwand verbunden sein. Urid nach dem Auffinden der Niveaulinien, die sich iri solchen Regionen zusanimendrangen, konnte man irri bisher geschilderteri Rahmen auch nur einen relativ unbedeuterideri Verbesserurigseffekt erzielen, indem marl etwa die auBersten dieser Niveauliriien vori den ubrigen ,,wegschiebt". (Ein etwas einfacheres Vorgehen, das nur mit den in (*) geriannten Werteri arbeitet und nicht auf die von den Niveaulinien durchlaufenen Regiorieri selbst Bezug nimmt, wird in Ubung 16 angeregt. Jedoch wurde die hierrriit erreichbare Verbesserurig erst recht kaurn ins Gewicht fallen. Man mufite schori auf ganz andere Variariten zuruckgreifen, die von radikalerern Einflufi auf die globale Struktur sind und spater in Abschnitt 5.3 dargestellt werden.) Ein ariderer Anlafi, einer solchen anderen Wahl den Vorzug zu geberi, tritt d a m auf, wenri Regiorien des Niveaulinienbildes, die dreidimensiorial anschaulich forniuliert eirieri ,,Gipfel" oder eirie ,,Senkel' bilden, durch eine ungiinstig kleine ,,innerste" Niveaulinie gekennzeichriet werden, die zur benachbarten Niveaulinie eineri optisch ungunstig groBen Abstand haben. In derartigen Situationen kann die folgende Variante einer Wahl v o ~ iz als gunstiger gelten: Fur alle diejenigen Endflachen Fn, die von einer der Sorten ~
3.2 Erste Varianten zur Gewinnung verbesserter Erscheinungsbilder
(a,cr), (b,cr) sind, wahlt man ein Teilverhaltnis
7 1 : 72
85
reeller Zahlen, fur die
gilt, und wahlt d a m w so, da5 das Intervall (21 : 22) in diesem Verhaltnis geteilt wird, also w := 7221 + 7122 71
+ 72
Dabei ist die Reihenfolge von z1 und 22 so zugrundezulegen, wie dies in 3.2.3 angegeben wurde; d.h. , z2 ist diejenige Intervallgrenze, die dem inneren Rasterpunkt der Flache F, oder deren durchlassiger Auaenstrecke entnommen wurde. Auf diese Weise wird eben die Niveaulinie, die einen ,,Gipfel" oder eine ,,SenkeLL als ,,innerste" Niveaulinie umschliefit, weiter nach aui3en geruckt. Das von ihr umschlossene Gebiet kann dadurch in seiner global bedeutsamen Lage deutlicher hervortreten. Insbesondere kann dieser Effekt vorteilhaft sein, wenn man, wie in 4.1 ausgefuhrt werden soll, eine Farbung zu weiterer Deutlichkeit anbringen will. Gleichgultig, ob man ausnahmslos fur jedes F, den jeweils zugehorigen Wert (*) gewahlt hat oder fur gewisse F, zu (**) mit zuvor gewahltem 71 : 72 ubergegangen war, sei noch einmal prazisierend auf die Bemerkung am Ende von 3.2.5 zuriickgekommen: Dort war zum Verfahren 3.2.2 als moglicherweise vorkommend festgestellt worden, da5 in einer Flache F, mehrere Niveaulinien gebildet werden konnen. Das wurde insbesondere dann zu erwarten sein, wenn man zwar, wie hier geschildert, jeder Endflache F, einen Wert w zuordnet (eben (*) oder [(*), (**)I), dann aber mit diesen Werten gemai3 3.2.2 vorgehen wurde. Ware beispielsweise zu ) z1 = 0, 22 = 4 zugehorig, fur eine andere einer Endflache das Intervall ( z I , z ~mit Endflache mit z1 = 1, 22 = 6,und hatte man mit (*) jeweils fur w die Werte 2 bzw. 3,5 erhalten, so wurde man nach dem Verfahren 3.2.2 im gesamten Rasterrechteck die Niveaulinien fur beide Werte erhalten, insbesondere also in jeder der beiden genannten Endflachen. Ferner konnte es sein, da5 an noch einer weiteren Stelle des Rasterrechtecks sogar eine verzweigte Niveaulinie etwa zu dem Wert w = 2 gehort. Derartige Beispiele machen deutlich, welcherart die fur global optimierte Niveaulinien vorgesehenen Zielstellungen sind, die in 3.2.2 verfehlt werden konnen, aber in 3.2.3 bis 3.2.6 erreicht werden.
Ubung 16. Es seien w1,.. . ,W N die gema5 (*) zu den Endflachen F1,.. . , FN ermittelten Werte. Man bilde ein algorithmisches Verfahren, mit dem ,,eng beieinanderliegende" unter den wi ermittelt werden und fur jedes ,,ClusterLL solcher Werte, der Groi3e nach geordnet etwa w1 2 w 2 5 . . . 5 w,, der kleinste w1 etwas nach links und der gro5te w v etwas nach rechts geruckt wird, jeweils so weit, dai3 alle wi, die damit verandert wurden, dennoch in dem fur sie zugehorigen Intervall (21,22)bleiben.
86
3 Gewiiinung cines globalell Nivcaulinienbildes
3.2.7 Wahl einer arithmetischen Wertfolge Uriter eirierri andereri. in praktisclien Anwendungen recht haufig auftretenden Gesickitspiinkt steht die Kerintriis der globaleri topologischeri Strukt ur des Niveaulinienbildes rnehr irri Hintergrund; vordergriiridig wurischt niari oft vor allem ebenso wie es in derii abgerusteten Verfahren aus 3.2.2 miiglich war , dafi die Werte, zu derien Niveauliriien gezeichnet werden, eine arithmetische Folge bilden. Daneben aber soll doch die Beachtung der t,opologischen St,ruktur nicht vcrnaclilassigt, werden. Uritl zwar soll riicht, riur wie eberifalls bereits in 3.2.2 keine verzweigte Niveaulinie auftreten, sondern zusatzlich wird der Existeriz-Teil der Zielstellurig ails 3.2.6 ubernornmen: Es soll in jeder Endflache F,, mindestens eine gezeichnete Niveauliriie vorkorrirrien. Der Eindeutigkeits-Teil kariri d a m riaturlich irri allgerrieirieri nicht erfullt werden. Einer der hauptsachlichsten Eiriwaride gegeii das Verfahren 3.2.2 entfallt damit; es wird zugelasseii (und in der Regel unverrneidlieh), daJ3 in Endfliichen jeweils Niveaulinieri in grofierer Anzahl als 1 auftreten. Uberhaupt verbleibt bei dieser jetzt zu beschreibenden Variarite eigentlich ,,nur" noch die Aufgabe, eine arithmetische Folge von Werten zu firiden, die den ebengenannten Bedingungen genugt. Wir korinen dabei gleich voraussetzeri, dafl riach 3.2.3 bereits xu jeder Endflache F,, ein zugehoriges Interval1 gefunden wurde, das wir ab ,jetzt init (u,, 6,,) bezeichnen (71 = 1, , , . ,N ) . Die zu loseride Aufgabe lautet daniit:
.
Forderung 4 (,,Einpassen" einer arithmetischen Folge) Gegeben sei eine A n z a h l N v o n oflenen Intervallen (u,,b,,) (a,, < 6 7 1 ) ( n = I , . . . , N ) . Gesucht ist eine arithmetische Folge W k = w0-tk.d (k = 0 , . . . , K-1) ( d > 0 ) , die folgende Bedingungen erfullt: (1) Fur jedes k und jedes 71 gilt Wk # u,, sowae W k # b, (2) ZU jede7n ~i gibt es ei71 k niit U n < W k < 6,. Zusatzlich wird man wurischen, K nicht zii grofi zu erlialten. Dafl die Bedingungeri durch Folgeri mit genugend grofieni K erfullbar sind, ist leicht einzusehen. (Auf Betrachtungen dieser Art wurde schon in Bemerkungen zur abgeriisteten Veriante 3.2.2 sowie in Ubung 16 eingestimmt). So konrite man etwa folgendermaBen vorgehen: Marl ordnet die 2N Zahlen u,, b,, der Grofie nach; d a m ersetzt Inan sie durch Natherungswerte. die ihrerseits garizzahlige Vielfache g,, . 6 bzw. h, . 6 eirier positiven Zahl 6 sind, die man so kleiri wahlt, dafl stets g, < g, 6, < b, h, < h, sowie a, < b, u g, < h, gilt. (Auf deru, < a, artige Miiglichkeiten des ,,Approxirnierens durch korrimerisurable Zahlen" war z.B. bereits in Bernerkurigen zii Beginn von 2.1.5 und zu Beginn vori 3.1.3 verwieseri worden.) Man firidet ein solches 6 etwa, indem man die Dezimalbruchdarstellungen der Zahlen a,, 6,, derart auf eine einheitliche Stellenzahl riach dem Komma rundet, dafi je zwei voneiriander verschiedene dieser Zahlen auch voneinander verschiederie gerundete Werte haben. 1st dann p := min(g,,) und q := max(h,), so erfullt die Folge wk := ( p $ ) . 6 k . 6 (k = 0 , . . . , K - 1) mit K := q - p die
.
+
+
3.2 Erste Varianten zur Gewinnung verbesserter Erscheinungsbilder
87
Bedingungen (1) und ( 2 ) . Naturlich ware ein solcher Wert K in den meisten Anwendungsfallen viel zu grofl. Wurde man weiter ein Verfahren, etwa schrittweise probierend, zur Verkleinerung von K ansetzen, so ware auch wegen der dabei in gleicher Groflenordnung auftretenden Schrittzahl der Zeitaufwand viel zu hoch. Fur jeden K-Wert, den man dabei durchzuprobieren hatte, ware zudem zu testen, ob vielleicht durch Verschieben der ganzen (probeweise angesetzten) Folge (Wk) oder einzelner ihrer Glieder (mit konsequenterweise anschlieflender Neuberechnung ihrer anderen Glieder) ein zunachst wegen Nichterfullung von ( 2 ) auszuschlieflender Wert K doch noch wieder zur Erfullung von ((1) und) (2) gebracht werden kann . Es sollte daher ein einigermaflen handliches Verfahren gebildet werden, mit dem Forderung 4 befriedigend zu bearbeiten ist. Dabei erscheint es nicht sehr aussichtsreich, eine Ermittlungsmoglichkeit fur K so weit auszubauen, dafl eine Folge gefunden wird, deren Gliederzahl K im strengen Sinne des Wortes minimal ist (und auch schliissig als minimal nachweisbar wird). Haufig geniigt es bereits, wenn sich nur untunlich grofle K vermeiden lassen; es kann sogar sein, dafl ein etwas groflerer Wert wieder zu optisch gunstigeren Bildern fuhrt, indem er allzu grofle Streifenbreite zwischen Niveaulinien vermeiden kann. Schliefllich sei bereits an dieser Stelle darauf hingewiesen, dafl die Wahl der Folgendifferenz 6 auch wegen moglicherweise zu dicht benachbarter Niveaulinien beachtliche Konsequenzen fur das optische Erscheinungsbild haben kann. Hierzu wird spater, im Abschnitt 5.1.2 eine Empfehlung (Forderung 8) gegeben. Zur Erfullung von Forderung 4 selbst sollte nun uber die gegenseitige Lage der Intervalle (u,, b,) nichts an Voraussetzungen benotigt werden; jede der drei Moglichkeiten fur je zwei dieser Intervalle sol1 zugelassen sein: Enthaltensein des einen Intervalls im anderen, Disjunktheit und Uberlappung (nichtleerer, in beiden Intervallen echt enthaltener Durchschnitt). Eine Ausgestaltung derartiger Vorgehensweisen find& sich in der Staatsexamensarbeit [19], deren wesentliche Verfahrenselemente hier also in sinngemaiij zitierender Abkurzung wiedergegeben seien. Dort ist allerdings die Bedingung (1) nicht berucksichtigt; dies kann jedoch noch leicht nachtraglich eingearbeitet werden. In der Frage, zu solch kleinen Werten K zu kommen, die nicht allzu weit vom streng minimalen Wert K entfernt sind, hat dieses Verfahren in zahlreichen Probefallen sehr befriedigende Ergebnisse erbracht, andererseits war der Zeitaufwand sehr haufig vollig ausreichend klein; zudem h mn ein ganz wesentlich zeitwirksamer Parameter ohne allzu grofle ,,Nebenwirkung" (Vergrofierung des gefundenen K) geandert werden, um auch den Zeitaufwand genugend herabzusetzen. Die Arbeit [19] sorgt zunachst fur eine teilweise Erfullung von (l),indem die Wngleichung ( 2 ) verscharft wird zu uk 5 Wk 5 b k , wo uk := u, 6, bk := b, - b mit geeignet gewahltem S > 0 ist. Sodann werden drei Ermittlungsvarianten vorgestellt, die als ,,Intervallverfahren", ,,Gleitpunktverfahren" und ,,Fixpunktverfahren" bezeichnet werden. ~
+
Das Intervallverfahren arbeitet nach dem Prinzip, eine eingangs ermittelte
88
3 Gewiiinurig eiiies globaleii Niveauliiiienbildes
und rrioglicherweise zu kleine Gliederzahl K erst dann schrittweise zu vergrofiern, wenn eine Verschiebung des Anfarigspunktes W O in ,,seinern" Iritervall rnit gekoppelter AnderuIig von (1, so daI3 auch W K - l in ,,seinein" Iritervall bleibt keine Moglichkeit aufAeigt, die Forderurig (2) mit dieserri K zu erfullen. Dabei wird diese Verschiebung v o ~ iW O in Probierschritten eirier Schrittweite E > 0 durchgefiihrt. Daher mu6 E einerseits relativ zu den Iritervallbreiteri b i - a; so kleiri sein, dafi ein Durchsuchen vori Intcrvalleri in genugend grof3er Schrittxahl rnoglich ist; aridererseits ist E eberi der oberigenaririte zeitwirksarrie Parameter: Walilt niari E zu klein, so riskiert man? dafi das vergebliche Iritervalldurchsuchen (bei rioch zu kleirieri K - Werten) cine unturilich grofk Schrittzahl erfordert. Die eingarigs des Iritervallverfahrens durchzufuhreride Gewinriung eines zunachst noch moglicherweise zu kleinen K (in [19] als ,,Startwert" bezeiclinet) erbringt ein solches K als die Gliederzahl einer Zahlenfolge, die die Bedirigung (2) erfullt, aber nicht, notwendig eirie arithmetisclie Folge sein muf3. Das Auffirideri einer solcheri Folge ist schori deswegeri riicht gartz trivial, weil dabei der uneingeschrankten Zulassung vori gegeriseitiger Lage je zweier Intervalle [a:,, bi] Rechnung zu tragen ist. Jedocli benijtigt diese Startwert-Ermittlung weriigsteris noch keine E-Probierschritte, soriderri riur das Durchrriusterri der Iritervalle daraufliin, ob sie bereits in vorangehenden Prufschritten festgelegte Werte W k enthalten. Da dieser Teilvorgarig erfahrungsgemaf3 niir weriig Zeit erfordert, kann inan auch noch eine ,,Startwertverbesserung" anfugen. Diese geht davon a m , dafi schori aus bisher gewonnenen Schranken fur ein erstes und ein letztes Folgenglied WO, W K - 1 (untere Schranke fur W O , obere Schranke fur W K - 1 jeweils eirie der vorgegeberien Intervallgrenzen) fur jedes Glied W k einer arithrnetischen Folge rriit festgehaltener Gliederzahl K eine untere Schranke Uk und eine obere Schranke v k resultiert. Daher kanri marl irrirrier noch ohne in E-Schritten suchen zu rnussen die Intervalle [a:,,b:,] daraufhin uberprufen, ob jedes von ihnen rriit miridestens eineni der Intervalle [ U k ,v k ] nichtleeren Durchschnitt hat. 1st das nicht der Fall, so wird K urn 1 erhoht und die Prufung rnit dernzufolge rieuen Werten Uk, V k wiederholt. 1st auf diese Weise ein ,,verbesserter Startwert" K gefuriden, so wird das eingarigs geschilderte eigentliche Iritervallverfahren mit seinen E-Suchschritten angeschlossen. ~
Beirn Gleitpunktverfahren wahlt man eiri Interval1 [ a i o ,bLo] rninirnaler bezeichnet) urid betrachtet nur solche Folgeri (Wk),bei Lange (in [19] als Irnin~rlt derieri eiri Glied Wk rnit noch nicht festgelegtem Index in dern genarinten Intervall ,,gleiten" kann. Diesrnal kann zunachst fur die Differenz d einer zu bildenden arithrnetischeri Folge (Wk)ein ,,Startwert" gebildet werden: Man erniittelt d als den fur alle Paare disjunkter Iritervalle [a:,b : ] , [a;,bl] (b: < a;) kleinstmoglichen Wert b(7 - (1:. Mit den1 so zu erhaltenderi Startwert d beginnt dann das eigentliche Gleitpuriktverfahreri. 1st etwa 7b0 > 0, so versucht man, vori dern zunachst gewahlten Wert W k := uLo aus durch (eoerituell mehrfache, etwa h-fache) Subtraktion von d zu einerri Wert W k - h = W k - h . d zu kornmen, der in [aio-l,bio-l] liegt. Gelingt das, so sct,zt man eritsprecherid durch weiteres Subtrahieren vori d die Versuche
3.2 Erste Varianten zur Gewinnung verbesserter Erscheinungsbilder
89
fort, in die Intervalle b;0-2], [a;,-3, b;,-3], . . . zii gelangen. Wird dagegen eines dieser Intervalle, etwa [a;, b;], ,,verpaBt", etwa mit W k - h < ah, wahrend noch 'Wk-h+l > b; war, so versucht man, ob sich w k um a; - W k - h nach rechts verschieben lafit, d.h., ob W k ah - W k - h 5 b;, bleibt. Dabei ist (weil derartige Schritte, wie sogleich ersichtlich wird, mehrfach vorkommen konnen und die Endlichkeit der Gesamtschrittzahl gesichert werden muB) statt der ebengenannten VerschiebungsgroBe a; - W k - h das kleinste nicht kleinere ganzzahlige Vielfache eirier Schrittweite E zu nehmen. Diese Schrittweite ist vor Beginn des Verfahrens festzulegen, zum Einflu8 auf die Laufzeit gilt das oben Gesagte. 1st eine solche Verschiebung nicht moglich, so wird ,,zuruckgesetzt", d.h. mit dem ursprunglichen w k untl mit d - E statt d von vorn begonnen. Kommt man andererseits ohne diese Zurucksetzurig bis in das Intervall [a:, b;], so wird ein zweiter Verfahrensteil vom Intervall [ah,, b;,] aus nach rechts bis zum Erreichen des Intervalls [a&, I)&] begonnen. Wurde in diesem Verfahrensteil eine Verschiebung von w k oder eine Verkleinerung von d erforderlich, so mu8 der erste Verfahrensteil nochmals durclilaufen werden. In entsprechender Weise kann ein alternatives Durchlaufen der beiden Teile mehrmals notig werden, bis (wegen der gegebenenfalls standigen Verkleinerung von d ) das Verfahren mit dem AuEnden einer gesuchten Folge enden muB; man vergleiche die Betrachtungen unmittelbar nach Forderung 4. Das Fixpunktverfahren unterscheidet sich vom Gleitpunktverfahren nur dadurch, da13 der zu Anfang festgelegte Punkt W k wahrend des ganzen Verfahrens fest bleibt, die oben ini Gleitpunktverfahren vorkommenden Verschiebungsschritte also unterbleiben. Eine Motivation fur die Wahl dieses Verfahrens liegt also z.B. dann vor, wenn erreicht werden soll, daB in einem besonders kleinen Interval1 [ano,hn,] ein Wert w k nicht etwa noch nahe an den Rand dieses Intervalls gerat, sondern in seiner Mitt8efestgehalten werden soll. In der Arbeit [19] werden weitere Hinweise zu diesen drei Verfahren gegeben. Zunachst kann man die ,,Startwerte" ( K beirn Intervallverfahren, d beim Gleitpunkt- und Fixpunktverfahren) ebenso wie die Rand-AbstandsgroBe 6 und die Schrittweite E auch interaktiv festlegen. Ferner sei zu Besonderheiten der drei Verfahren aus [19] zitiert: Zum Intervallverfahren wird bemerkt, daB ,,in vielen Testbeispielen . . . andere Verfahren kaum einen anderen Wert . . . '' fur die Gliederzahl K (in I191 als N bezeichnet) fanden. Es sei ,, . . . gunstig, das Verfahren zunachst fur nicht allzu bis & kleine E starten zu lassen. Bewahrt hatten sich . . . Werte zwischen der kleinsten gegebenen Intervallange. . . . Wurde eine . . . Folge niit N Gliedern gefunden, so konnte man nun versuchen, durch Verkleinern von E einen kleineren Wert fur N zu finden. Dabei ist es gunstig, um lange Rechenzeiten zu umgehen, N mit einem Startwert zu belegen, der 1 2 GroBenordnungen unter dem zuletzt gefundenen liegt. Diese Vorgehensweise kann man je nach Bedarf, sooft wie notig, wiederholen". Jedoch seien ,, . . . bei E in der GroBenordnung der kleinsten Intervallange kaum Verbesserungen . . . '' erzielt worden; und selbst wenn dies vor-
+
~
90
3 Gewiririung eines globalen Niveaulinienbildes
kani, seien ,, . . . die Ergebriisse fur praktische Bezuge . . . (Zeichengenauigkeit, . . . Handhabung der Nachkonirriastellen in weiteren Berechnungen . . . '' riicht imrrier brauchbar. Es liege also ,, . . . beim Benutzer des Prograrrirris, auszuwalilen, auf welche Punkte (rrioglichst kleines N , sinnvolle Nachkorrimastellen gegeriiiber den Intervallgrenzen, usw.) er besonderen Wert legt" . Als spezieller Hiriweis habe sich noch herausgestellt, daB das Iritervallverfahren besonders dann ,,giinstig in1 Hinblick auf die Schnelligkeit und Genauigkeit . . . " sei, wenn uriter den Intervalleri (u,,b,) diejenigen beiden, bei deneri a, den kleinsteri bzw. b, den grofiten Wert hat, ,, . . . klein gegeniiber den anderen (gegebenen) Iritervallen sind". Das Gleitpuriktverfahren und das Fixpunktverfahreri seieri beide ,, . . . schneller im Suchen einer arithrnetischen Zahlenfolge gegeriiiber dern Intervallverfahren" . Der Geschwindigkeitsvorteil werde ,,zum eirien durch den giinstigen Startwert von d (durch Prograrrirri erniittelt), zurn anderen durch . . . Verririgern von d erreicht. (Im Gegensatz zurn Iritervallverfalireri . . . )". Auch hier koririe, um eventuell die Gliederzahl rioch zu verringern, ,, . . . E entsprecherid verkleinert werden. In den Testbeispieleri haben sich Werte fur E in der GroBenordnung der bis kleinsteri Intervallarige als hinreichend erwiesen. Man konrie jedoch sogar auch ,, . . . kleiriere Werte fur E testen, da das Verfahren relativ schnell eine arithmetische Z u beachten ist auch hier, analog Zuni Intervallverfahren, Zahlenfolge findet daB zu kleine Werte fur E das Ergebnis wieder verschlechterri konnen." Interessant ist noch folgeride Bemerkung: ,,Fur dieses Verfahren wurde stets die gleiche verwendet. Es Schrittweite E zurri Verkleinern von d und Durchlauferi von Irr,ir,Int ware jedoch durchaus denkbar, zwei verschiedene Schrittweiten einzufiihren, urn das Verfahren noch effizienter zu niachen." Weiterhin wird festgestellt: ,,Beziiglich der Lage und GroBe der gegebenen Intervalle im Hinblick auf die Geschwindigkeit, rriit der eine Zahlenfolge gefunden wird, . . . " wirke es sich giinstig aus, wenn ,, . . . kleine und grofie Intervalle gegeben" seien, d a dann das Durchlaufen eines kleineri Intervalls I m i n I n t eiri zeitaufwendiges Durchlaufen der groBeren Intervalle uberflussig macht. Zum Fixpunktverfahren wird in [19] folgerider Hinweis gegeben: , , h i allgemeinen kann marl sagen, daB das Fixpunktverfahren ein N ermittelt, das vergleichsweise groBer ist als eins, was mit einem der beiden anderen genannten Verfahren gefunderi wurde. Das liegt zweifelsohne an der festen Vorgabe der Lage ) . das eines Folgengliedes der zu findenden Zahlenfolge (dern Fixpurikt s ~ i ~Fur rieu entstandene Problerri irri Fixpuriktverfahren, d.h. die gegebenen 7~ Intervalle und die Vorgabe der Lage eines Zahlenfolgegliedes, wird selbstverstaridlich eiri rnoglichst kleines N errnittelt. Es ist durchaus denkbar, daB dieses Verfahren fur eiriige Anwendungsfalle interessarit seiri konnte. Mit diesern Verfahren wird irrinierhiri eine Moglichkeit, geschaffen, ein Zahlenfolgeglied der zu erniittelnden Zahlenfolge a n einer beliebigeri Stelle zu plaxieren. Das erreicht man wie folgt: Wie bei deri Ausfuhrurigen zum Losurigsalgorithrrius des Fixpunktverfahrens bereits dargestellt. sucht sich das Programm zunachst das kleiriste Interval1 ImiI,~I,t. Es karin nun einerseits durch den Benutzer die Lage des Fixpunktes in diesem Iritervall festgelegt werden, oder das Prograrrirri selbst legt ihri dort fest. Mochte
3.3 Bijektive Zuordnung zwischen Homotopieklassen und Teilflachen
91
man nun aber den festen Punkt SF^^ nicht in diesem kleinsten gegebenen InterVal1 haben, sondern an einer anderen (beliebigen) Stelle z mit z € R festlegen, so fugt man einfach zu den gegebenen n Intervallen ein weiteres Intervall In+l hinzii (was nach dem Finden einer Zahlenfolge wieder geloscht werden kann) , fur das an+l 6 5 2 5 b,+l - 6 gilt und dessen Intervallange kleiner ist als alle ursprunglich gegebenen n Intervallangen. Das Programm wahlt folglich nun dieses zusaitzliche Intervall als kleinstes aus und legt es fur SF^^ fest. Somit wird eine beliebige Vorgabe fur die Lage eines Folgengliedes der zu findenden arithmetischen Zahlenfolge moglich. (Analoge Schritte konnte man auch fur das Gleitpunktverfahren ausfuhren und folglich ein Intervall vorgeben, in dem unbedingt ein Glied der Zahlenfolge liegen soll.) Auch fur das Fixpunktverfahren ware es durchaus denkbar, ein analoges Vorgehen zu entwickeln und in das Programm aufzunehmen, bei dem nicht nur ein Zahlenfolgeglied, sondern zwei Folgenglieder vorgegeben werden (beispielsweise ware ein Startwert fur d der Abstand beider gegebener Glieder, und man konnte d durch eine naturliche Zahl (grof3er als 1) teilen und so entsprechend systematisch verkleinern). Die Vorgabe von mehr als zwei Gliedern konnte sich hingegen schwieriger gestalten, insbesondere durch die vorgegebene Rechnergenauigkeit ."
+
3.3 Bijektive Zuordnung zwischen Homotopieklassen
und Teilflachen 3.3.1 Ragestellung, Motiv, Ursachen
Im Ruckblick auf das in 3.1.1 - 3.1.3 und 3.1.5 bis 3.2.6 geschilderte Vorgehen kann man die Zielsetzung, durch einen Algorithmus ein ,,global optimiertes" Niveaulinienbild zu erreichen, nun zu folgender Ergebniszusammenfassung fuhren: Es werden nur ,,unvermeidliche" Verzweigungen von Niveaulinien eingebracht, auBer ihnen treten nur noch unverzweigte Niveaulinien auf. Ferner sind mit den Endflachen F, ( n = 1, . . . ,N ) Teilflachen mit folgender Eigenschaft gefunden: Jede dieser Flachen ist ausgefullt mit Niveaulinien, die samtlich untereinander homotop sind. Es fehlt noch die Antwort auf die F'rage, ob die Teilflachen so beschaffen sind, daf3 auch umgekehrt je zwei zueinander homotope (unverzweigte) Niveaulinien derselben Teilflache angehoren. Anders formuliert: Sind die Teilflachen bereits bajektiv den Homotopieklassen unverzweigter Niveaulinien zugeordnet? Wegen der bereits erreichten Eigenschaft der Endflachen F, lautet diese F'rage nun einfacher so: Kann es vorkommen, daf3 erst nach Zusammenfugen gewisser F, Teilflachen entstehen, von denen jede eine vollstandige Homotopieklasse enthalt? Iliese Ra ge ist unter anderem dann von Interesse, wenn man (mit dem Vorgehen aus 3.2.4 - 3.2.6) zu jeder derart gewonnenen Teilflache eine unverzweigte Niveaulinie bilden mochte, die in dieser Teilflache verlauft, und wenn auf diese Weist: ein Reprasentantensystem fur die Homotopieklassen unverzweigter Niveaulinien entstehen soll. Dieses Vorhaben wird - aufier der theoretischen Zielstellung,
92
3 Gewiriiiuiig eines globalen Nivcauliniciibildes
die darriit gegeberie globale topologische Strukt,ur des Niveaulinienbildes i r i ein derartiges R.epraserit,aritensysterrizu fasseri auch vori praktischer Bedeutung sein, werin niari ari dieses Niveauliriienbild weitere Bearbeitungsschritte ansclilieBen will, wie etwa den im Abschnitt 4 zu beharidelnden Farburigsvorgang. DaB in der Tat die bisher gewonnerieri Endflacheri F,, rioch nicht stets den Horriotopieklassen bijektiv entsprecheri rriussen, hat, folgende Ursache: Zu den Startpurikteri waren in 3.1.2, Def. 9 gernaB cler dortigeri Festlegurig (2.1) urid (2.2) auch Punkte zu rechnen, die auf dem Rand des gesarriteri Rasterrechtecks liegen. Ferner koririten a u d i gemaI3 3.1.2, Def. 9, Festlegurig ( 1 ) undurchlassige Niveaulinieri auftreten, die vorn Rand des gesamten Rasterrechtecks ausgehend in das Innere hincinfiihren. Fur alle diese Liriieri besteht zwar die Moglichkeit, daB sie irri weitereri Verlauf Verzweigungen aufweisen, aber es ist auch rnoglich, daB dies nicht eiritritt und daf3 folglich diese Linien zwei Endflachen so voneiriarider trennen, daB die in beiden Endflachen verlaufenden Niveauliriien zueiriarider hornotop sind. Zusatzlich kommt zu diesen Uberlegungen der folgende Unistand hirizu: Eine Niveaulinie, die zwei Endflachen in der gerianriteri Weise trennt, karin auch no& durch eirie ,,leere" Teilflache in ihreni Verlauf unterbrochen sein, urid dennoch wird man sich dafur entscheiden, daB die beiden Endflachen auch ,,uber diese leere Teilflache hinweg" zueiriander benachbart sind. Das entspricht namlich der Vorstellung, daB Inan beirn Verscliieben eirier Niveaulinie in eirie andere (die eben dadurch zur ersten als hornotop ersichtlich wird) auch uber eirie solche leere Teilflache hinwegschieben darf. In dreidimensionaler Vorstellung ist das darriit zu motivieren, daB sich uber eirier leereri Flache ein ebenes, waagerechtes Flachenstuck befinden kann. Entsprecherid der Zielstellung, nur ,,erzwungene" Komplikationen im Funktionsverlauf zuzulassen, wird man diese ebenen Flachenstucke nicht durch ,,uberflussige" Abweichurigeri vori ihrern ebenen Verlauf abandern, und d a m entspricht das beschriebene Verschieben einer Niveaulinie in der Tat der Moglichkeit, ein solches gleichbleibendes Niveau uber diese ebene Flache hinweg beizubehalten. Naturlich rriuB gesichert sein, dafi nicht durch eirie zusatzlich an das leere Flachenstuck angrerizeride dritte Endflache eirie Verzweigung zustaridekorrirrit, die die Homotopie uriverzweigter Niveaulinien stijren wurde. Nach diesen Voruberlegurigen 1aBt sich nun darstellen, in welchen algorithmischen Teilschritten die Moglichkeit eiries Zusamrrienfugeris von Endflachen erniittelt werderi kariri und wie sich das Zusarrirnenfugeri dann gestaltet. 3.3.2 Globale Nachbarschaftsermittlung
Zunachst k a r i r i niari fur jede Endflache F, die Darstellurig 3.1.6 ( 1 ) oder (2),(2') ihres Randes d a m verwenden, urn fur jede der Randkurveri (1) bzw. (2) bzw. (2') die samtlichen Strecken festzustellen, aus derien diese Randkurve besteht. Das sind also fur eirie Kurve ( 1 ) die Strecken L1,. . . ,Lh, fur eine Kurve (2) die Strecken L I , ~. .,. , L l , l L Ibzw. fur eine Kurve (2') die Strecken L 2 , 1 , .. . ,L 2 , h z . Von diesen Streeken lasseri wir alle AuBenstrecken weg (siehe 3.1.6, Def. 16). Jede dann
3.3 Bijektive Zuordnung zwischen Homotopieklassen und Teilflachen
93
verbleibende Strecke ist eine Teilstrecke des Randes einer derjenigen Elementarflachen, aus denen die Endflache F, besteht. Da die betreffende Strecke aber keine AuBenstrecke ist, gehort sie auch zum Rand einer weiteren Flache, und zwar ist diese zweite Flache entweder eine Endflache F, # F, oder eine leere Flache F' (siehe 3.1.5, Def. 13). 1st das Letztgenannte der Fall, so kann man die samtlichen Randstrecken von F' betrachten. Wie aus Definition 13 und aus der in 3.1.6 gegeberien Beschreibung der Randliste einer leeren Flache hervorgeht, liegen die Randstrecken von F' nur in einer ungeordneten Auflistung vor, was aber fur das Folgende ausreicht: Jede Randstrecke von F', die nicht AuBenstrecke ist, gehort namlich wiederurn zum Rand einer Endflache F,. Dies wurde eben durch das in Definition 13 beschriebene Zusammenfugen von ursprunglich verschiedenen benachbarten leeren Flachen zu der einen Flache F' erreicht. Von den so ermittelten an F' angrenzenden Endflachen F, behalten wir nur solche bei, fur die F, # F, gilt. Auf diese Weise kann man zu der betreffenden Randkurve (1) oder (2) oder (2') von F, die Feststellung erhalten, ob Folgendes zutrifft: Die in der beschriebenen Weise zu allen Strecken der Randkurve (sofern sie nicht AuiJenstrecken sind) ermittelten F, # F,, sind samtlich ein und dieselbe Endflache. Wenn dies der Fall ist, so ist also diese eine Endflache langs des gesamten Verlaufs der Randkurve durch das Innere des Rasterrechtecks zu F, benachbart, einschlieBlich der in 3.3.1 beschriebenen Moglichkeit, daB die Nachbarschaft auch ,,uber leere Flachen hinweg" vorliegen kann. Trifft dies zu, so ist zu testen, ob die untersuchte Randkurve (1) oder (2) oder (2') von F, dieselbe Aussage zulaBt, wenn man sie in ihrer Rolle fur die Flache F, bezuglich deren Nachbarschaft zu F, betrachtet; d.h., man hat folgenderniaBen vorzugehen: Man ersetzt solche Teile dieser Randkurve, die zum Rand leerer F l khe n gehoren (sofern es solche gibt) durch andere Randteile dieser leeren Flachen, bis man einen Streckenzug erhalt, dessen samtliche Teilstrecken zum Rand von F, gehoren. Dann pruft man, ob dieser Streckenzug fur F, in der Gestalt einer vollstuindigen Liste (1)oder (2) oder (2') vorliegt. Die Notwendigkeit dieses weiteren Tests liegt, abstrakt gesprochen, an folgendem Umstand: Zwar ist die Relation fur Flachen F,, F,, benachbart zu sein, eine symmetrische Relation, nicht, aber die Relation, daiJ eine Flache F, zu F, langs eines Streckenzuges benachbart ist, der bezuglich F, die Gestalt einer vollstandigen Liste (1) oder (2) oder (2') hat. Genau dann, wenn auch dieser Test positiv verlauft, sind die Endflachen F, und F, in einer nun zu beschreibenden Weise zusammenzufugen. Es folgt namlich aus den Testergebnissen, dafi die in F, und F, je fur sich homotopen unverzweigten Niveaulinien auch untereinander homotop sein mussen. Man erkennt dies, indem man die Falle diskutiert, zu welchen Sorten (a) oder (b) aus 3.2.3 (in sich zurucklaufende oder das Rasterrechteck von Rand zu Rand durchquerende unverzweigt,e Niveaulinien enthaltend) die Flachen F, und F, gehoren. Bemerkung: Das hier formulierte Kriterium fur Zusammengehorigkeit zu einer Homotopieklasse gilt allerdings bei Vorliegen einer Flache der Sorte (b) nur in
94
3 Gewinnung eines globalen Niveaulinienbildcs
dern Sinrie, dafl man eirie ,,naturgemafl naheliegende" Ergarizung vorriimmt. Fur Flachen der Sorte (b) trifft narnlich die hier behauptete Honiotopie erst d a m zu, wenn man ,wie an dcr ,,Bemerkung" aus 3.2.3 vorgeht, d.h. die auf dem Rand des Rasterreclitecks transversal eridenden Niveaulinien so fortgesetzt derikt, dafl sie sich zu Niveaulinieri wie in Flachen der Sorte (a) zusamrnenschlieflen. 3.3.3 Zusammensetzen von Fliichen gleicher Homotopieklasse
Urn das genannte Zusarrimensetzen auszufuhren, durchniustert man zunachst die geriarinte Randkurve. Zu dieserri Zweck wahlt man fur sie durch geeignete zyklische Uniordnung eirie Reihenfolge der Gestalt pl, L1, p 2 ,
L2, . . . ,Ph, Lhr
in der L1 eine derjeriigen Strecken ist, die zum Rand sowohl von F, als auch von F, gehiirt, die also weder eine Auflenstrecke ist noch zurn Rand einer leeren Flache gehort. Durch diese Wahl der Reihenfolge ist erreicht: Falls Streckeri Lj vorkommen, die zurri Rand einer leeren Flache gehoren, so gruppiereri sich solche Strecken stets in Teilkurven der Gestalt pjr,L,? . ' ' , pjp+s,, Ljr+s, 1
7
Pj,+S?+l
niit s , 2 0, und dabei kann man diese Teilkurven so weit wie moglich vorwarts und ruckwarts fortsetzen, d.h. erreichen, dafl weder Ljr-l noch Lj,+s,+l zum Rand einer leeren Flache gehort (also jeweils entweder eine Auflenstrecke ist oder zum Rand von F, gehort). Danri gelten fur den Rand von F, folgende Feststellungen: 1st weder Lj7-1 noch Lj,+a,+l eine AuDenstrecke, so enthalt der Rand von F, ein Teilstuck der Gestalt 4 - 1 3 PjF, L;r,. . . q , + t , > q T + t T , Pj,+s,+l,LjT+S7+l! worin die (nicht im R.and vori F, vorkonimenden) Strecken L i p , .. . ,Lip+tr zum Rand derselben leeren Flache gehoren wie die oben erwahriten Ljp, . . . , Ljv+sr; genauer: Diese Strecken Lj,+i ( i = 0 , . . . , s,.) und L>l+k ( I c = 0 , . . . , t p ) sind zusammeri die samtlichen Randstrecken dieser leeren Flache. 1st ferner LJP-1 eine AuBenstrecke, nicht aber Ljp+a,+l, so enthalt der Rand von F, ein Teilstuck der Gestalt 1
P X p , " .7P,'p+t,,L:p+tr,PJ7-+SI-+1,L3T+B,+1 , worin (auBer den Strecken L;?, . . . , L;T+tTdiesmal auch) P;r nicht irn Rand von F,, vorkommt. Zum Rand derselben leeren Flache gehoren in diesem Fall au&r den genannten Strecken LJ,., . . , ,Llp+sp und L;?, . , . , L:T+tr noch weitere Auflenstrecken, die man in geeigneter Reihenfolge zu einem Streckenzug
PJr L;? . . . p;[.+u, > L;T+Ur,p;T 7
7
7
3.3 Bijektive Zuordnung zwischen Homotopieklassen und Teilflachen
95
zusammenschlieaen kann: Lyy ist die von LJT- 1 verschiedene AuBenstrecke mit ist auch Endpunkt einer A d e n dem Endpunkt PJP.Ihr zweiter Endpunkt strecke Lyr+, # LyF,usw. Entsprechende Verfalirensschritte ergeben sich, wenn LJr+s,+l eine AuBenstrecke ist, nicht aber LJr- 1. Schliefilich sind, falls sowohl LJP-1 als auch Llr+sr+1 AuBenstrecken sind, Schritte der Art durchzufuhren wie in beiden vorangehenden Fallen. Dieser letzte Fall entspricht in der obigen Beschreibung dem Sonderfall, da%das Verfahren aus 3.3.2 fur alle Strecken L:? . . .L:r+t, auf die dort geschilderte Moglichkeit fuhrt, eine zu F, benachbarte Flache F, # F, erst ,,auf dem Umweg" uber eine leere Flache F' zu erreichen. Als Ergebnis dieser Durchmusterung einer Randkurve, zu der gema%3.3.2 die Feststellung vorlag, daB langs dieser Randkurve zwei Endflachen F,, F, benachbart sind, hat man somit genauer erhalten, uber welche leeren Flachen hinweg diese Nachbarschaft zu verstehen ist. Die samtlichen Randstrecken solcher leeren Flachen sind ermittelt; zu jeder von ihnen liegt die Feststellung vor, ob sie zum Rand von F, oder zum Rand von F, gehort oder eine AuGenstrecke ist. Damit hat man die Moglichkeit erhalten, eine Darstellung des Randes fur diejenige Flache zu finden, die aus F,, F, und den eventuell zusatzlich aufzunehmenden leeren Flachen besteht: Man hat sowohl in F, als auch in F, alle Teilstrecken der ,,in diesem Sinne gemeinsamen" Randkurve wegzulassen. Dabei werden insbesondere also alle Randstrecken der betrachteten leeren Flachen weggelassen, sofern sie nicht AuBenstrecken sind. Eben diese eventuell vorhandenen AuGenstrecken aus Clem Rand leerer Teilflachen sind also beizubehalten sowie alle diejenigen Bestandteile der Rander von F, und F,, die nicht zu den soeben weggelassenen Teilstucken gehoren. Die Frage, in welcher Weise sich schlieBlich die nun verbleibenden Randstucke von F, und F, zur Berandung einer - damit ermittelten zusainmengesetzten Flache zusammenschlieijen, kann ebenso beantwortet werden, wie dies oben fur zunachst einzeln vorliegende Randstrecken einer leeren Flache beschrieben wurde. Aus Grunden der Zusammengehorigkeit der Niveaulinien in F, und F, zu einer Homotopieklasse mu%sich dabei ergeben, daB auch fur die zusammengesetzte Flache eine Randdarstellung resultiert, die entweder die Gestalt eines geschlossenen Streckenzuges (1) oder zweier geschlossener Streckenzuge (2), (2') hat. ~
~
3.3.4 Z wei t e Zusammensetzungsmiiglichkeit
Das eben beschriebene Verfahren, den Rand einer Flache zii finden, die aus Flachen F,, F, und eventuell leeren Flachen der genannten Art zusammengesetzt ist, erbringt diesen Rand in relativ gunstigem Ablauf. Die Anzahl der Suchschritte ist nur von der Groflenordnung der Streckenzahl der beteiligten Randstucke von F, , F, und leerer Flachen. Dies wird jedoch durch einen hoheren ,,Programmieraufwand" erkauft. Die komplette Zusammenstellung eines Algorithmus, der das Verfahren in allen ein-
96
3 Gewirinung ciiicx globalen Niveaulinienbildw
zelrien Fallen erbringt, erfordert eben die Berucksichtigung der koniplizierteren Struktur der Falliiriterscheidung. Ferner konnte der Einwand erhoben werden, daB nur der Rand der zusarrirrierigesetzten Flache, Iiicht aber ihre Flaclienbestandteile ermittelt wurden. Will man aber ansclilieaerid auch auf zusarrirrierigesetxt,e Flachen etwa das Verfahreri aus 3.2.3 anweriden, so sirid moglicherweise auch Inforniatiorien aus dern Irineren der Flache erforderlich; siehe die dort zu den Sorten (a,cu) und ( b p ) geriannteri Irineriwerte 2 2 . Dieseni Einwand kann jedoch entgegengehalten werden, daB die gesarnte Linie, langs deren F, und F, benachbart sind, undurchlassig ist, d.h.: Diese Liriie ist einschliefllich eventuell in ihrem Verlauf eingeschlosserier leerer Flachen mit einern einheitlichen Wert belegt. Falls also durcli das Zusarrimerifugen vori F, und F, eine Flache der Sorte (a,cy) oder (b,a)entstanden ist. so hat man die hierzu beschriebenen Verfahren in 3.2.3 riur dadurch zu erganzen, daB man zu den dort genannten Werten rp ( p = 1,. . . .m bzw. p = 1, . . . ,rn+z - 1) rioch diesen Belegungswert hinzufugt. Danach kann die Vorschrift, mit der zu der zusanimengesetzten Flache ein Interval1 (21, z2) gefunden wird, ,,fast unverandert" ubernommen werden. Genauer gesagt, gibt es nur eirie zusatzliche Vorschrift: Der hier zusatzlich zu den Werten rp aufgenommene Belegungswert wg der Grenzlinie zwischen F, und FTrList nicht geeigriet als Wert w gemafl (*) oder (**) in 3.2.6 oder als einer der Werte wk in 3.2.7, falls diese Grenzliriie rnindestens eirie leere Teilflache in ihrem Verlauf enthalt. Es sei bemerkt, daB eine Anwendung dieser zusatzlichen Vorschrift nur selteri irn Ablauf des Algorithmus eintreteri wird, da nur das Vermeiden einer Gleichheit von Werten gefordert ist. Freilich bleibt die Vorschrift, einen solchen Belegungswert einer Grenzliriie zu verrneiden, auch d a m fur diesen Wert gultig, wenn a n eine zusammengesetzte Flache nach gleicher Vorschrift nochmals eine weitere Endflache anzufugen ist (was naturlich erst recht sehr selten eiritreten wird). Man rnufl also solche zu vermeidenden Werte so lange speichern, bis entschieden ist, daB zu der betreffenden Flache keine anzufiigende Endflache mehr existiert. Ferner ist zu der Vorschrift zu bemerken, daO an die Stelle der genannten Urigleichheitsforderung w # wg bzw. Wk # wg besser eine Forderurig der Gestalt w $ [wg - E , W O E] bzw. wk $ [wg- E , wg E ] tritt, worin E eine Genauigkeitsschrarike ist, die sowohl der angestrebten Rechengenauigkeit als auch vor allern der rnoglicheri Zeichengenauigkeit angepaflt, wird, in ahnliclier Weise, wie dies schori bei verschiedeneri Anlassen angedeutet wurde, z.B. zu den Verfahren in 3.2.7. Obwohl also das Verfahren aus 3.3.3 auch bei geriauerer Diskussion zu ernpfehlen ist (ungeachtet der komplizierteren Fallunterscheidung) , sei dennoch bemerkt, daB dasselbe Ergebnis grundsatzlich auch niit einer einfachereri Beschreibung erfaflt werden kann. Nachdem man narnlich wie in 3.3.2 festgestellt hat, daB zwei Flachen F, und F,,, zusamrnenzusetzen sirid, unter Eiribeziehung everituell auftretender leerer Flachen Fi, . . . , F,& kann man dieses Zusamrriensetzen folgendermaflen realisieren: Sowohl die Endflachen F,&und F,, als auch die leeren Flachen F;, . . . , FL (falls vorhanden) sind ihrerseits entstanden durch Zusanimerifugen von Elementarflachen,
+
+
3.3 Bijektive Zuordnung zwischen Homotopieklassen und Teilflachen
97
namlich gemaf3 3.1.7 bzw. gems 3.1.5, Def. 13. Man erhalt die gesuchte zusammengesetzte Flache, indem man die fur F, und F, gemeinsamen undurchlassigen Randstrecken und die - ebenfalls undurchlassigen - Randstrecken der F:, . . . , FL als durchlassig deklariert und dann das Verfahren von 3.1.7 auf die samtlichen ebengenannten Elementarflachen anwendet. Offensichtlich ist diese Beschreibung in einem formal vie1 einfacheren Algorithrnus zu realisieren, als es nach 3.3.3 der Fall ist. Dennoch wird das Anwenden eines so geschriebenen Algorithmus nur bei insgesamt kleinen Rastervorgaben zu ernpfehlen sein, da das ,,einfach" nochmals auhurufende Verfahren 3.1.7 bei umfangreicheren Vorgaben im allgemeinen mit wesentlich hoheren Schrittzahleri ablaufen durfte als das Verfahren 3.3.3. 3.3.5 Repriisentierende Niveaulinien
Das Zusammenfugen benachbarter Flachen, die mit zueinander homotopen Niveaulinien ausgefullt sind, ist so oft durchzufuhren, bis keine derart benachbarten Flachen mehr auftreten. Man hat also stets dann, wenn eine Prufung gemafl 3.3.2 die Moglichkeit (und in diesem Sinne die Notwendigkeit) eines solchen Zusammenfugens ergeben hat und dann die betreffenden Flachen gemaf3 3.3.3 oder 3.3.4 zusarnmengesetzt wurden, fur das damit erhaltene Gesamtsystem neuer Flachen (die hier wieder als ,,Endflachen" F, bezeichnet seien) zum Prufungsvorgang 3.3.2 zuruckzukehren. Wie bereits in 3.3.4 bei der Diskussion uber Vor- und Nachteile des Verfahrens aus 3.3.3 vorausschauend bemerkt wurde, sind Belegungswerte dabei auftretender Grenzlinien mit eingelagerten leeren Flachen bis zum Ende aller Zusammenfugungsschritte zu speichern. 1st dieses Ende erreicht, d.h., ergibt die Prufung 3.3.2 insgesamt keine Zusammenfugungsmoglichkeit mehr, so wende man auf das nun vorliegende System von Flachen F, das Verfahren aus 3.2.3 (Ermittlung von Wert-Intervallen zu den F,), 3.2.6 (zu jeder Flache F, Wahl eines Wertes) und 3.2.4 oder 3.2.5 an, uni zu jeder Flache F, eine Niveaulinie zu gewinnen, die mit dem zu F, gewahlten Wert, belegt ist. Mit dem so erhaltenen System von Niveaulinien ist die in 3.3.1 genannte und motivierte Zielstellung erreicht, die Homotopieklassen unverzweigter Niveaulinien anschaulich zu machen: Diese Niveaulinien bilden ein Reprasentantensystem der Homotopieklassen und bieten damit ein anschauliches Bild der in globaler Optimierung erreichbaren Interpolationsmoglichkeit. Man kann freilich auch an die Errnittlung der endgultig erreichten Flachen F, eines der Verfahren 3.2.7 anschlief3en (mit Vorbereitung gemafl 3.2.3 und Niveaulinienkonstruktion zu den in 3.2.7 ermittelten Werten gemafl 3.2.4 oder 3.2.5). Durch die damit getroffene Wahl von Niveaulinien zu einer arithmetischen Folge von Werten wird die Anschaulichkeit in dem Sinne erhoht, daB aus der Abstandsverteilung dieser Niveaulinien nun auch Steilheits- oder Flachheitsinformationen uber das Interpolationsergebnis erkennbar werden. Naturlich wird dann nicht> mehr notwendig jede Homotopieklasse durch genau eine Niveaulinie reprasentiert, was man als Abschwachung der globalen Strukturveranschaulichung ansehen kann.
98
3 Gewinnung cines globalen Niveaulinienbildes
Es geht aber weriigstens niit Sicherheit keirie Homotopieklasse ,,verloren", wie es bei derri abgeriisteten Verfahren 3.2.2 urivermeidlich war (jedenfalls nicht rriit Sicherheit vermeidbar oder auch nur mit Sicherheit erkennbar). Z u beachten ist bei dieser Ariwendurig der Verfahren aus 3.2.7, dafi man die dort in Forderung 4 verlarigten Bedingurigen (1) und ( 2 ) noch zu erganzen hat durch das oben genannte und in 3.3.4 geriauer erlauterte Ausschliefien der Belegungswerte von Grenzliriien niit eirigelagerten leeren Flachen.
4 Varianten globaler optischer Verbesserung 4.1 Gebietsfgrbung nach ,,Steigen" und ,,Fallen" 4.1.1 Grundsgtzliches Vorgehen
Als cine weitere Moglichkeit, die Anschaulichkeit und den Iriformatiorisgehalt des herziistellenden Bildes zu erhohen, hat es sich erwiesen, I'lachenstucke zu farben. Es seien zwei verschiedene Prinzipien genannt; sie seien hier kurz als ,,absolutes" und ,,relatives" Farbiingsprinzip bezeichnet. Das Farben nach dem absoluten Prinzip ist seit langem gebrauchlich z.B. in der Kartographie. Es ist zudern leichter algorithmisch umsetzbar als das relative Farbungsprinzip. Daher wird es hier nur gewissermaBen kurz rekapitulierend eingeordnet. Grob gesagt besteht es in Folgendem: Man legt fur Intervalle von Niveau-Werten, wie sie (beispielsweise) durch eine in 3.2.7 ermittelte arithmetische Folge eingeteilt werden, eine Skala von Farben fest, etwa aufsteigend geordnet von hellgrun bis dunkelbraun. Mit diesen Farben belegt man dann die entsprechenden Teilflachen. (Auf die Notwendigkeit, entweder die Intervalle einer schon vorliegenden Flacheneinteilung anzupassen oder aber zu gewahlten Intervallen erst passende Flachen zu bilden, wird noch eingegangen.) Da bei diesem prinzipielleri Vorgehen die Farben den Niveauwerten selbst entsprechen, wurde die Bezeichnung ,,absolutes" Prinzip gewahlt. Das Farben nach relativem Prinzip dagegen, das hier als andersartige Veranschaulichungsmoglichkeit ausfuhrlicher vorgeschlagen werden soll, kennzeichnet Teilflachen danach, ob sie ,,von uupen nach innen" steigend oder fuklend sind. Die Bezeichnung ,,relativ" deutet also darauf hin, daB Niveauwerte nur im Vergleich zu benachbarten Werten (niedriger oder hoher zu sein als diese) gekennzeichnet werden, nicht ihrer absoluten GroBe nach. Mit Begriffen, die man aus der Differentialgeometrie glatter Flachen auf die hier vorkommenden (nur stuckweise glatten) Flachen ubertragen kann, ist eine solche Kennzeichnung als steigende oder fallende Region (Gipfel oder Tal) nur fur Regionen mit positiver Gauhcher Krummung moglich. Jedoch kann man sich in einer Art schrittweisen Verfeinerns vorstellen, dafi moglicherweise z.B. in Regionen, die ,,grob betrachtet" eine Gipfelstruktur aufweisen, auch ,,feinere" Tal-Regionen eingelagert sind. Es bleiben zwischen den insgesamt so zustandekommenden ,,groberen" und ,,feineren" Gipfel- und TalRegionen als ,,unscharfe Grenzen" (d.h. mehr oder weniger schmal gewahlte zwischengelagerte Flachen) Regionen mit negativer GauBscher Krummung. Anders gekennzeichnet sind cierartige Regionen urn die Verzweigungen von Niveaulinien herurn gelagert, d.h. in dreidimensionaler Betrachtung um Sattelpunkte herum. Diese Uberlegung erhellt nochmals, inwiefern gerade in der Zielstellung, die Zahl und den Komplikationsgrad von Verzweigungen niedrig zu halten, die Optimalitat des Niveaulinienbildes besteht.
100
4 Varianten globalcr optischer Verbesserurig
Als hernerkenswert hat sich in vieleri Beispielen gezeigt, daf3 eirie solche Relativ-Fiirbung eberifalls einen sehr iibersichtlich klarenden Eindruck der interpoliererideri Flachenstrukt,ur vermittelt, obwohl sie im Gegerisatz zur absoluten Farbung riur zwei Farben benotigt. etwa Rot fur steigende, Griiri fur fallende Regionen. Gelegentlich hat sich freilich als optisch guristig erwiesen, gewisse Regiorieri ungefarbt zu lassen, sozusageri also Weif3 als dritte Farbe zuzulassen. (In welchen Fallen dies praktikabel sein kann, wird sich bei genauerer Beschreibung des Algorithmus ergeben. Jederifalls ist keineswegs einfacli eine pauschale WeiBfarbung aller obengeriaririten Gebiete negativer Gaufischer Krunirriurig vorgesehen; diese wurde sich sogar nachteilig auf die optische Iriforrriationsverrriittlurig aiiswirkeri.) Marl kann zu den beiden Farbungspririzipien (absolut/relativ) auch Mischoder Ubergangsverfalireri bilden. So kariri Inan z.B. verschiedene ,,Al)stufiirigen" des Steigens oder Falleris einfiihren und eine solche Skala, et,wa verschieden kraftige Rot- oder Grun-Nuancen, unterschiedlicli fein arisetzeri, bis hin zu eirier (darin nur noch anders interpretierten) Absolut-Skala. Oder man karin umgekehrt versuchen. die Iriforrriationeri eirier absoluteri Farbung rein rechnerisch in Angaben des Steigeris und Fallens umzusetzen. Dies Iauft auf Vorschriften hinaus, die jeweils unmittelbare Nachbarschafts-Situatiorien betreffen, also Vorgehensweisen ,,lokaler" Natur. Ob dabei ,,globale" Probleme auftreten und wie sie zu uberwiriden waren, bleibt offen. Die irn Folgenden stattdessen algorithmisch zu erbririgende Relativ-Farbung ist denigegeriiiber wieder vori Anfang an auf globales Bearbeiteri angelegt . 4.1.2 Neue Aufteilung des Rasterrechtecks Das Farben nach relativerri Pririzip ist prinzipiell in der Weise vorstellbar, daB die Entlflachen F, (gegebenerifalls nach vorangestelltem Zusammerifugeri gernaB 3.3 verstanden) gefarbt werden. Man wiirde die Entscheidung, welche Farben den Flachen F, zu erteileri sind, etwa so treffen, dafi man aus jeder Flache F,, eine dariri verlaufende Niveaulinie auswalilt, den1 System dieser Niveaulinien nach dem irri Folgeriden darzustellenden Algorithmus Farben zuordnet und jede dieser Farberi d a m jeweils der gesamteri Flache F, zuschreibt, der die betreffende Niveaulinie eritriomxneri war. Jedoch hat sich eiii solches Farben der gesarnten Flachen F,, aus zwei Griiriden als nachteilig erwiesen: Erstens werderi dadurch die sairntlicheri verzweigten Niveauliriien hervorgehoben. Wie aber bereits in 3.2.2 bemerkt wurde, ist im Gegeriteil gerade erst ein vollig vori verzweigten Liriien befreites Niveaulinienbild optisch vorteilhaft. Zweitens ergeben sich fur die leeren, also nicht zu den F, gehorenden Flacheri Probleme. Sie sirid zu gewissen Flachen F, benachbart (falls vorher 3.3 angewandt worden war, zu rnehr als zwei solchen F,). Da sie aber, dreidirrierisional geseheri, waagerecliten Teilflachen der Interpolat ionsflache entsprechen, ware eigeritlich eiri Verschieberi von Teilstuckeri der Niveaulinien aus den beriachbarten F,, in die leere Flache hinein besoriders gut motiviert; d.h., man hatte eigentlich besoriders naheliegenden AnlaB, die Farbung
4.1 Gebietsfarbung nach ,,Steigen" und ,,Fallen"
101
in leere Flachen hinein fortzusetzen. (Das war j a auch der Grund, weshalb sie beim Zusammenfugen von genau zwei zueinander benachbarten F, kein Hindernis darst.ellten, siehe 3.3.2.) Aber wenn nun mehrere Nachbarfarben in dieselbe leere Flache hineiri fortzusetzen waren, so bliebe unklar, wo sie einander zu begegnen hatten. Diesen Nachteilen kann man auS folgende Weise ausweichen, die zunachst in groben Zugen beschrieben sei: Man bildet gemafi (3.2.6 sowie) 3.2.4 oder 3.2.5 in jeder Endflache F, eine unverzweigte Niveaulinie. Diese Linien, fur sich allein betrachtet, zerlegen das gesamte Rasterrechteck auf eine neue Weise in Teilflachen. Unter solchen Teilflachen sucht man diejenigen, die ,,am weitesteri innen" liegen, und Sarbt sie. Dann denkt man sie ,,zum Verschwinden gebracht" , etwa indem man sie zu einem Punkt kontrahiert, was eberi wegen ihres Charakters als ,,am weitesten innen" gelagerte Flachen moglich ist. Damit erhalten neue Teilflachen ihrerseits den Charakter, ,,am weitesten innen" zu liegen, und die Schritte des Farbens und Kontrahierens konnen fortgesetzt werden. Am Ende konnen Flachen ubrigbleiben; sie werden im Anfangsbild, vor den ersten Kontraktionen, um gewisse verzweigte Niveaulinien herum angeordnet sein, diese lafit man ungefarbt. Die soeben angesprochene neuerliche Zerlegung des Rasterrechtecks wird nicht etwa insgesamt in nochmaligem Vorgehen nach 3.1.5 (Zerlegung von Rasterquadraten) und 3.1.7 (Zusammensetzen) durchgefuhrt, indem man nun lediglich die dort zugrundegelegten verzweigten Niveaulinien zu ersetzen hatte durch die hier zu verwendenden, aus 3.2.4 oder 3.2.5 gewonnenen unverzweigten Niveaulinien. Ein solches nochmaliges global durchzufuhrendes Zerlegen und Zusammensetzen wird namlich aus folgenden Grunden nicht angesetzt: Erstens wurde es einen nochmaligen erheblichen Aufwand an Komplexitat (Rechenschritte und Speicherkapazitat) mit sich bringen. Zweitens und vor allem aber ginge nun der Vorteil verloren, in der Datenstruktur fur die Berandung der entstehenden Fllichen mit maximal zwei Listen wie in 3.1.6, (1) oder (2),(2') auszukommen. Vielmehr soll nun folgendermafien vorgegangen werden: Es werden zwar die unverzweigten Niveaulinien in geeigneter Reihenfolge als Randlinien von (zu farbenden) Flachen herangezogen, aber die Informationen, mit deren Hilfe der Algorithmus diese Reihenfolge festlegt, werden den urspriinglichen Endflachen entnommen, also der Zerlegung des Rasterrechtecks durch die verzweigten Niveaulinien. Dieser Algorithmus, der nun beschrieben werden soll, gliedert sich in Schrittfolgen 61,.. . , 6 z ; jede dieser Schrittfolgen 6 c (C = 1,. . . , Z ) besteht zunachst in einer Anzahl Nc von Suchschritten 5 ~ ( n, =~1 , .. . , Nc), sodann in einer Anzahl Me von E'arbungsschritten fc,k und Kontraktionsschritten t c , k (jeweils k = 1,. . . ,Me). Dabei ist jeweils Nc die Anzahl derjenigen in den vorangegangenen Schrittfolgen 61,. . . , Bc-1 entstandenen modifizierten EndfEachen Gc,, ( n = 1,. . . , Nc); jeweils ein Suchschritt q,, stellt fest, ob in Gc,, eine Farbung durchzufuhren ist oder nicht. Damit ist nach Durchfuhrung der Suchschritte S C , ~ , .. . , S C , N < gefunden, in wie vielen der Gc,, eine Farbung durchzufuhren ist; diese Anzahl ist Me.
102
4 Variariteri globaler opt ischer Verbcsserung
<
Als Abbruchbedingung, also als Bedingung fur = 2,dient Mc = 0, d.h. die Feststellung, dafi in keirier der Flachen Gc,, mehr eine Farbung durchzufuhren ist; zugleich gibt es dann also iri der damit letzten Schrittfolge GZ riach den N z Suchscliritten keirie ( M z = 0) Farbungs- und Kontraktionsschritte mehr. 4.1.3 Suchschritte
Die Suchschritte 5 ~ in, der ~ $-ten Schrittfolge 6~ betreffen, wie gesagt, die rnodifizierten Endflachen Gc,,. Zu Beginn (< = 1) sind die GI,,, die Eridflacheri F,, selbst; N1 ist also die bisher niit N bezeichnete Anzahl aller Endflachen. Dabei ist es grundsatzlich freigestellt. ob auf die Endflachen noch das Verfahren aus 3.3 angewaridt worden war, ob also die gemafl 3.2.3, 3.2.6 urid 3.2.4 in den F,, gebildeten Niveauliriieri Il,,, ein Reprasentantensystern der Horriotopieklassen unverzweigter Niveauliriien bilderi oder nicht. Zur vereinfachenden Erhohung der Anschaulichkeit empfiehlt es sich freilich, diese Eigenschaft erreicht zu haberi. Zu jeder Flache GI,,, = F,, gehort nach 3.2.3 eiri Wert-Interval1 Il,,, = ( z l ;2 2 ) ; der Wert wl,,, fur Il,, gehort dieseni Interval1 an. Naturlich ist es fur > 1 erforderlich, dal.3 die in den Schrittfolgeri ( 5 1 , . . . ,( 5 - 1 gebildeteri Flachen Gc,,, eberifalls je eiri Wert-Interval1 Zc,,und eine Niveauliriie I c ,zu~eiriern Wert we,, E Zc,,,zugeordriet erhalteri haben. DenigemaB wird in 4.1.5 (im ArischluB an die Kontraktionsschritte t < , k der Schrittfolge Gc) zu defiriiereri sein, welche Z<+l,n,[<+I,, und W < + l , n jeweils einer dort gebildeteri Flache G C + I ,zuzuordrieri ~& sind ( n = 1,. . . ,Nc+l).
<
Definition 17. Der Suchschritt 5c,,, erbringt genuu dann fur die Flache Gc,,, die Aussage, dajl i n ih7. eane Farbung vorzunehineri ist, w e m der Rand dieser Flache - in den Bezeichnungen aus 3.2.3 - entweder von der Sorte (a,u) ist oder die beiden Bedingungen erfiillt, sowohl won der Sorte (b,cy) zu sein als auch aus nur einer Liste der Gestalt (1) zu bestehen. Irri Fall der Sorte ( a p ) ist die Linie eirie in sich zurucklaufende Linie. Irn Fall der Sorte ( b p ) . wo die eberi genannte Liste (1) die in 3.2.3 angegebene Gestalt X I ,U I . .. . X,. [J,. Y I .V I ,. . . . Y,, V, hat ( U I . .. . , U, durchlassige Aufienstrecken, Vl, . . . , Vy nicht). verlauft von eineni Punkt P des Randes des Rasterrechtecks zu einern Piinkt Q dieses Randes. Es liege etwa P auf der Strecke U p und Q auf der Strecke U,, wobei 1 5 p 5 q 5 z gelte. D a m entsteht aucli im vorliegender1 Fall eirie in sich zurucklaufende Linie, wenn Inan I<,,urn den Streckenzug PX,+l . . . X,Q erganzt. Zu den hier geriannten Purikten P und Q sei noch bernerkt: Da der Wert we,,, irri Iririern des Intervalls Zc,,, liegt, sind P urid Q vori X1 urid Yl verschieden, urid sie sind auch verschieden vori derri gernaB 3.2.3, ( b p ) rriit 2 2 belegteri Rasterpurikt Falls dies einer der dort genarinteri Punkte XCL+l-nL ist, sind sorriit P und Q auch vori diesem Purikt Xp+l-rn verschieden. Wegen der Monotonieaussage, die in der Berrierkurig am Ende vori 3.2.3 gemacht wurde, liegt dariri also P irri Innerri des
.
4.1 Gebietsfarbung nach ,,Steigen" und ,,Fallen"
103
Streckenzuges X I . . . XP+l-, und Q im Innern des Streckenzuges XP+l-, . . . Y I , woraus auch P # Q folgt. 1st dagegen der mit .t2 belegte Rasterpunkt einer der in 3.2.3, (b,a) genannten innereri Rasterpunkte T I , .. . , T,, so kann (mufi aber nicht) auch der Fall P = Q vorliegen. Dies ist folgendermaflen einzuordnen: Der Punkt P = Q mufi . . ,X,;denn andernfalls lage er ein Rasterpunkt sein, also einer der Punkte X2,. im Innern einer Randstrecke eines Rasterquadrats, und dies ware ein unkritisches Rasterquadrat. Gabe es namlich - als kritisches Rasterquadrat Anlafi zu einer verzweigten Niveaulinie (siehe 3.1.2, Def. 9; 3.1.5, Def. 11, Def. 14), so konrite die Ehdflache, die hier zur Diskussion steht, nicht topologisch aquivalent zu einer Kreisflache sein. Wenn aber nun der Punkt P = Q ein Rasterpunkt ist, so war er gernlifi 3.1.2, Def. 9 ein Startpunkt, riamlich ein Eckpunkt oder Randpunkt des Rasterrechtecks mit einer Startzahl 2 2. ,,Eigentlich" durfte also ebenfalls diese Konfiguration nicht vorkommen, da ,,zusammen mit dem Rand des Rasterrechtecks" wiederum eine Verzweigungsstruktur auftrat und daher die hier als unverzweigt betrachtete Niveaulinie, die in P = Q aus zwei verschiedenen Richtungen einmundet, eben deshalb zwei verschiedene Endflachen voneinander trennen miifite. (Auf diese Konsequenz wurde bereits einige Male hingewiesen, siehe die Ausfiihrungen in 3.1.1 nach Def. 5, ferner in 3.2.3 die einleitenden Erlauterungen zur Sorte (a) sowie in 3.2.4 im vorletzten Absatz die Diskussion der dortigen Abbruchbedingung.) Die einzige Moglichkeit dafiir, dafi dieser ,,eigentlich" nach Def. 9 auszuschliefiende Fall P = Q = Rasterpunkt dennoch auftreten kann, liegt in dem Verfahren 3.2.2 3.2.4, durch das eben die Moglichkeit entstand, zwei voneinander verschiedene Endflachen, deren gemeinsamer Rand langs seines gesaniten Verlaufs im Innern des Itasterrechtecks rnit einem konstanten Wert belegt ist, nachtraglich zu einer neuen Endflache zusammenzuschlieflen. Und zwar lag hier gerade der in 3.3.2 am Ende (unter Verweis auf die ,,Bemerkung" in 3.2.3) betrachtete Fall vor, dafi das Niveaulinienbild einer Endflache der Sorte (b,a) so durch Fortsetzung aufierhalb des Rasterrechtecks erganzt werden kann, dafi dasselbe Bild wie (a,a) entsteht. Man kann freilich auch eine andere Variante bevorzugen, namlich die in 3.3 beschriebene Homotopieklassenbildung dadurch modifizieren, dafl man in dern hier beschriebenen Fall (Auftreten eines Startpunkts auf dem Rand des Rasterrechtecks; dort Beginn einer Niveaulinie, die von diesem Startpunkt aus beginnend sich wieder in ihn zuriickkehrend schliefit und die durchgehend dieselben zwei Endflachen F,, F, voneinander trennt) auf das Zusammenfiigen dieser beiden Flachen F,, €7, verzichtet. Man fafit dann eben die unverzweigten Niveaulinien in F, und F, rdcht als homotop zueinander auf, da sie dies ja erst werden, wenn man die in der Sorte (b,a) auftretenden Niveaulinien in (zwar ,,natiirlicherweise naheliegender", aber doch) willkiirlicher Festlegung erganzt. ~
4.1.4 Flirbungsschritte
In den Suchschritten sind nun nach Def. 17 genau diejenigen Flachen GC,, ermittelt worden, in denen eine Farbung vorzunehmen ist. Zugleich mit diesen Flachen
104
4 Variantcri globaler optischer Vert~csscrung
liegen auch Iritervalle I<,,urid Niveaulinien IC,~, vor, wie dies in 4.1.3 vor Def. 17 erlautert wurde. Dabei ist fur die Grenzen z l , z z des Iritervalls I,,,, jeweils eine Reihenfolge festgelegt. I m Fall ( = 1 ist diese Reiherifolge aus 3.2.3 (insbesondere ) entriehmen, fur > 1 11iui3, eberiso wie dies in fur die Sorter1 (a,(?)und ( b , ~ )zu 4.1.3 fur I<,,, iind I<,, erlautert wurde, durch Festlegurig in 4.1.5 auch zugleicli rnit , , Reiherifolge ihrer Greruen z1,z2 definiert werden. den Intervallen I c + ~die Die Anzahl der rriit Farburig zu versehenderi Gc,,* werde, wie schon in 4.1.2 erlautert wurde, rriit Mc bezeichriet. Wir nunieriereri demgemafi die aufgefundenen
<
Gc,, urid die zugehorigen I<,,,, KC,,^ urn und bezeichnen sie mit G ; , k ,I t , k , (Ic = 1 , . . . , Me). Fur jedes k = 1,. . . ,Mi wird nun eiri Farbungsschritt fc,k folgenderrriai3en erklart:
Definition 18. Im Farbungsschritt fc,k ward die v o n eingeschlossene Flache L t I k yefarbt, und zwar als ,,nach i n n e n steigend" (rot), w e n n z1 < 2 2 fur die Grenzen des h t e r v a l l s &!k = ( z l , z 2 ) in der festgelegten Reihenfolge gilt; dagegen ,,nach i n n e n fallend" (grun), wenn z1 > z2 gilt. Diese Vorschrift bedarf deswegeri einer Erganzung, weil die zu farbende Flache LL,k durch die Formulierung, ,,vori lL,k eingeschlossen" zu sein, nicht vollstandig beschrieberi ist. Diese Formulierung bezieht sich riamlich nicht auf ein real zu , auf ein symbolisch gedachtes Flachenstuck farbendes Flachenstuck L c , ~sondern L i , k ,das als Ergebnis von Kontraktionsschritten erklart wurde. Aus diesem symbolischen Flachenstuck geht das real zu farbende hervor, inderri niari fur jeden solchen Koritraktionsschritt die rriit ihm zu einerri Purikt kontrahierte, vori einer Linie ( j E (1,. . . , Me-1)) begrenzte Flache L i - l , j in Wirklichkeit nicht koritrahiert, soriderri von L;,k subtrahiert. Man farbt also real die Flache
Ii-l,2
Bemerkung: Diese formelrnafiige Angabe berucksichtigt zwar alle Ll(j = 1 , . . . , Mc-l), bei der Differerizbildung sind aber naturlich nur die L;-l,j C L;,k zu subtraliiereri. Wichtig ist rioch folgeride Ergaruung der Farbungsvorschrift: Weriri zum Eride des gesaniteri Verfahrens (genauer: in der vorletzten Schrittfolge 6~mit = 2-1) nur noch eiri Gebiet Gi,l existiert ( N c = l ) , desseri Rand der gesarrite Rand des Rasterrechtecks ist, und wenn die darin befindliche unverzweigte Niveaulinie I c ,von ~ einern Purikt P des Rarides des Rasterrechtecks zu einem Punkt Q # P dieses Rarides verlauft, so ist die ,,von li,l eirigeschlossene", also zu farbende Flache Li,l nicht eindeutig bestirrimt. Denn das Umlaufen des Randes in einem beliebig (aber dann fest) gewahlten Umlaufsinn erbringt einen Streckenzug C1 von
<
4.1 Gebietsfarbung nach ,,Steigen" und ,,Fallen"
105
P nach Q und einen Streckenzug C2 von Q nach P , und sowohl I c U ,~ C1 als auch KC,^ I J C2 schlieijen je eine Flache ein. Man hat fur diesen Fall eine im Grunde willkurliche Vorschrift hinzuzufugen, welche dieser beiden Flachen als L;,l gelten soll. Empfehlenswert ist etwa die Vorschrift, diejenige Flache zu wahlen, fur die der kurzere der beiden Streckenzuge C1, C2 verwendet wurde. Nur falls diese beiden Streckenzuge einander gleichlang sind, ist immer noch Zweideutigkeit vorhanden. In diesem (seltenen) Fall kann man weitere Vorschriften wahlen; diese konnteri aber sehr aufwendig werderi (z.B. Flacheninhaltsvergleich), so dail es genugen wird, eine zufallige Entscheidung zu treffen. Anstelle der oben genannten Subtraktionsvorschrift (S), die hier als Standardvariante des relativen Farbens fungiert, sei als Modifikation folgende Variante benannt: Wenn sich unter den Flachen Lt-l,J solche befinden, die mit derselben Farbe (rot oder grun) wie L;,h zu farben sind, so werden diese Li - l , J nicht von dem Farben der Flache L;,h ausgenommen, sondern darin einbezogen und auf ctiese Weise verstarkt gefarbt. Diese Vorschrift laat sich von Anfang an fur = 1 , 2 , . . . anwenden, d.h. bei den eben betrachteten L;-l,J auf die darin befindlichen L;-:9J ausdehnen usw., so dafi schlieillich die im letzten Absatz von 4.1.1 angekundigte ,,abgestufte" Rot/Grun-Skala entsteht,. Insbesondere ist diese Variante anwendbar, falls man die unverzweigten Niveaulinien z.B. mit Hilfe von 3.2.7 zu einer arithmetischen Folge von Werten Wk (k = 0 , . . . ,K ) gebildet hat. Man erhalt dann eine differenzierter abgestufte Skala. Sie wird sogar zur absoluteri Skala, wenn man Definition 17 dadurch abandert, dail aui3er den dort genarinten Bedingungen noch die Reihenfolge der Werte zu beachten ist: Mit dem ,,intensivsten" Grun sind unter den gemail Def. 17 ,,am weitesten innen" liegenden Flachen diejenigen zu farben, die dem Anfangs-Interval1 (der Werte < w g ) zugehoren usw. Zum programmiertechnisch-praktischen Durchfiihren des Farbens (sowohl nach Standardvariante als auch nach der Modifikation) sei Folgendes bemerkt: Fur ein solches Farben von Flachen, deren Rand in vorgegebenen Kurven vorliegt, gibt es die bekannten fill-Routinen. Diese kann man beispielsweise a m Ende der gesarnten Bildgewinnung als vorhandenen Programmierschritt abrufen; zu diesem Zweck hat man hier Definition 18 nur so zu realisieren, dail man zusatzlich zum Rand der zu farbenden Flache einen ihrer inneren Punkte speichert. Das kann beispielsweise der in 3.2.3 genannte Punkt sein, der dort zur Definition des Wertes 22 diente.
<
4.1.5 Kontraktionsschritte
Die Flachen L;,k, die in den Farbungsschritten f ~ , kgefarbt wurden, sind nun durch Kontraktion zum Verschwinden zu bringen, damit in der nachsten Schrittfolge Bc+1 wieder nach Flachen gesucht werden kann, die nun die Eigenschaft, aufweisen, ,,am weitesten innen zu liegen". Nach dem Prinzip, dail zwar die zu farbenden Gebiete durch unverzweigte Niveaulinien zu begrenzen sind, dail aber die hierzu herangezogenen Informationen den verzweigten Niveaulinien zu entneh-
106
4 Variaritcri globalcr optischer Vcrbcsscrung
nieii siiid, enipfiehlt, es sich, sogleich anstelle der L;,k die entsprechenden Flachen
G;,k geloscht zii denken. Uiri dies auszufuhreri, hetrachten wir xunachst den Rand eitier solchen Flache G ; , k . Er besteht, aus eirierri Streckenzug der Gestalt
Jede der Streckeri L, ( p = 1 , . . . ,h ) treririt Gi,k v o ~ ieiner andereri Flache. Diese ist eritweder eine der Flacheti G c , (~n = 1,. . . , N c ) oder die Auflenflache des gesarriten Rasterrechtecks oder eine leere Flache. 1st sie eirie leere Flache, so kann diese ihrerseits ari eine oder rnehrere der vori G;,k verschiedenen Flachen Gc,,, angrenzen. Es seien hier kurz alle soeberi zu den Strecken L, ( p = 1 , . . . , h ) aiifgexahlten Flachen G c , die ~ Nachbarfluchen zu G;,k genannt. Ferrier seieri die hier ziir Beschreiburig von Nachbarflachen herangezogenen leeren Flachen kurz als Z.ciiischenfl6chen bezeichnet. Mit Hilfe dieser Bezeichnungen wird ~ i u r iein Kotitraktionsschritt beschrieben:
Definition 19. Genau dann wird f u r eine Flache G;,k der Kontraktionsschritt e c , k durchgefuhrt, wenn alle Nachbarflachen zu G;,k ein und dieselbe Flache G,?,,,, sind. Dieser Kontraktionsschritt erfolgt dadurch, dafl die Flache G;,k nus der Liste der Flachen G c , ~ ( n = 1,. . . , Nc) gestrichen ward. Ihr Rand wird aus der Randliste der Nachbarflache Gc,,, gestrichen oder in sogleich zu erlaut ernd er Weise ,,zur St reichung vorg emerkt ('. Dieses ,,Vormerkeii" ist folgeridermaflen durchzufuhren: Es karin sein, daB in der Raridliste von Gc,,,, die von der Gestalt (a), (2') aus 3.1.6 ist, der Rand VOII G;,k komplett als Liste (2') auftritt. In diesem Fall braucht nichts vorgemerkt xu werden; diese Teilliste (2') wird gestrichen, und die damit neu definierte Flache Gc,,, behalt nur noch die Teilliste (2), die darnit naturlich zu einer Liste der Gestalt (1) geworden ist. Es kann weiterhin sein, daB die Liste (2') zwar nicht kornplett aus dem Rand von G;,k besteht, dafl sie aber auBer diesern Rand nur noch solche Teilstiicke enthalt, die entweder ihrerseits Rand leerer Flacheri sind oder aber Stacheln oder Brucken zwischen solchen leeren Flachen utitereinander oder mit G ; , k . (Solche Teilstucke erkennt man, wie in 3.1.6 ausgefiihrt wurde, daran, dai3 sie entweder in der (ungeordneten) Liste der betreffenden leeren Flache auftreten oder in der (geordneten) Liste (2') hin und zuruck durchlaufen werden.) In dieseni Fall braucht ebenfalls nichts vorgemerkt zu werden; die ganze Teilliste (2') wird gestrichen. Es kann aber sclilief3lichsein, da!3 die Liste (2') aufler deni Rand von G;,k und auBer Randstucken leerer Flachen, Stacheln und Brucken noch andere Teilstucke enthalt. Das sind dann Rander weiterer Flachen Gc,,. Darunter konnen sich einerseits noch Flachen G;,!, mit k' # k befinden, d.h. solche Flachen, die (in der <-ten Schrittfolge 6 c mit demselben C wie bisher) in einem anderen Kontraktionsschritt,
4.1 Gebietsfarbung nach ,,Steigen" und ,,Fallen"
107
eben P < , k l , zu kontrahieren sind. Es konnen aber auch Rander von solchen Flachen F c , in ~ (2') auftreten, die in der <-ten Schrittfolge 6~nicht zu kontrahieren sind. 1st das Letztgenannte der Fall, so bleibt die Flache G C , , mit ~ ihrem gesamten Rand (2), (2') zunachst noch unverandert bestehen (sie wird insbesondere in der nachsten Sclirittfolgr 6 c + 1 im Suchschritt S C + l , , , gemafi Def. 17 nicht die Aussage einer Farbung erbringen); es erfolgt nur gemafi Def. 19 die Streichung der Flache G;,k und die Vormerkung ihres Randes. Auf diese Weise kann es geschehen, dafi fur eine Flache G c , in ~ mehreren ~ aufeinanderfolgenden Schrittfolgen Bc, G c + ~6 <, + 2 , . . . stets rioch Gi,,o = G C + I , ,= ~ G c + ~=, .~. . ~bleibt und dariri nur nach und nach imnier mehr Teile ihrer Liste (2') vorgemerkt werden. 1st dann jedoch schliefilich die Situation erreicht, dafi die gesamte Liste (2') nur noch aus vorgemerkten Teilstucken und eventuellen Randstucken leerer Flachen, Stacheln und Brucken besteht, so wird diese gesamte Liste (2') gestrichen, und es verbleibt wieder nur (2), damit sur Gestalt (1) geworden. Wie in 4.1.3 und 4.1.4 angekundigt, sind nun noch einige Definitionen anzugeben, die im Anschlufi an einen Kontraktionsschritt t < , k auszufuhren sind. Zunachst ist festzustellen, dafi in diesem Kontraktionsschritt genau eine der Flachen Gc,, Veranderungen erfahren hat, namlich Gc,,". Fur diese Flache sollen nun neu definiert werden: ein Werte-Interval1 = ( z 1 ,z 2 ) . mit der so angegebenen Reihenfolge der Werte ~ 1 ~ verstanden, 2 2 ein Wert wc,,,in diesem Intervall und ~ eine Niveaulinie I<,,,,die zu diesem Wert w ~ , ,gehort. Standardmafiig sei diese Definition so festgelegt, dafi nur der Wert z2 (moglicherweise) geandert wird, wobei I<,no in ein (echt oder unecht) umfassenderes Intervall ubergeht, wahrend UJC,,, und unverandert iibernomrnen werden. Zu dieser Neu-Festlegung von z2 werden folgende Informationen herangezogen: Das Intervall I i , k , das der soeben beseitigten Flache G;,k zugeordnet war, ferner die Intervalle I t , k ! , It,,!,, . . . , die denjenigen Flachen G ; , k ,G;,,,,, , . . . (k', k", . . . < k) zugeordnet waren, deren Kontraktion nach Def. 19 hinsichtlich derselben Nachbarflache Gi,,, erfolgt war und deren Randlisten demnach bei diesen Kontraktionen zur Streichung vorgemerkt worden waren. Diese Intervalle haben alle als ihren ersten Wert den zweiten Wert z2 des Intervalls I<,,, = ( z 1 , z z ) ;sie seien etwa
2 ) Relation z1 < z2 galt, so Falls nun fur das bisherige Intervall I<,,, = ( ~ 1 ~ 2 die wird als neuer Wert z2 die Zahl max(a2, uo, u l , u 2 , . . . ) definiert, falls aber z1 > 2 2 gilt, so min(z2, u g , u1, u2,. . . ). Diese Standard-Festlegung entspricht dem Vorhaben, dafi die Farbung nur Gebiete betreffen soll, die von einmal festgelegten unverzweigten Niveaulinien begrenzt werden, und clai.3 nicht etwa wahrend des Farbens an dieser Gebietsaufteilung etwas geandert werden soll. Die Vorstellung des Kontrahierens soll ja nur eine symbolische sein; mit ihrer Hilfe lafit sich leichter algorithmisch erfassen, welche
108
4 Varianten glol,alcr optischer Vcrbcsscrung
Gcbiett. in den jcwcils nb(:listen Schritten zii farben sirid, nariilich die jeweils nacli (sy1nbolisc:h irnaginierten) Kontraktionen ,,a111weitesteri innen liegenden". Man konrite a h auch durch Ncu-Festlegiing von Niveauliriien I,, , , von dieser Praxis abgehen. ctwa iIidern rriaii in Fallen wie 21 < z2 < u()riach dcrii Vorbild von 3.2.6 den Wert wc,,,durch +(21+ u g ) oder durch eirieri Wert ( 7 2 2 1 T ~ ' u O ) / ( T ~ 7 2 ) ersetzt,, wobei nach deni Vorbild von 3.3.4 noch der Wert, t 2 oder besser eiri Interval1 [ 2 2 - E. 2 2 E ] z u vernieideri ist. Jedoch sirid zur Frage, wann derart,ige Varianten enipfohlen werderi koriiieii, alirilich einschriinkende Bernerkungen wie in 3.2.6 zu niacheri. Zririi AbschluO der i n eirier Schrittfolgt? (3, durchgefuhrten Kontraktionsscliritte dcnke riiari sich die F16chen G,,,,, unter Weglassfin dcr kontrahierten G; k. ( k = 1,. . . , M e ) , neii riuineriert iind bezeichriet als G ~ + I ( 7,1 ~= 1 , .. . ,Nc+l). Fiir jede dieser Fliichen wurde. soweit sie als Gc,,, i n Kontraktionsschritteri t c , k betroffeii war, jeweils einc iieue Festlegurig von Ic,lLo(und eventuell in standardabweichenden Varianten I I I , , ~ , ~ I,,,,,,) , vorgenorrinien, fur die anderen Gc,,, gibt es kcine neuen Festlcgungen von I,,,,, W C , urid ~ [,!7L. Darriit hat iiiaii z i i tieri G C + ~ , , , entspreclicnd neu bezeichnete 1 ~ + 1 , ,W ~ ,C + ~ , und ,~ [,+I,, urid kann die nachste Schrittfolge C3c+1 iznschlieBen.
+
+
+
Abb. 34
Abb. 34 aeigt eiri Niveaulinienbild, das aus Abb. 31 eritsteht, indein inan die Verfahren aus 3.1.7 (ausanirnerisetzerides Bilden tlcr Endflachen), 3.2.3 (WertIntervalle), 3.2.6 (Wahl eiiizelner Werte), 3.2.4 (Niveaulinieri zu diesen Werten) sowie 4.1.3 4.1.4 durchfiihrt. Auf das Zusarnmenfiigen von Endflachen gleicher
4.2 Linienglattung
109
Homotopieklasse (3.3) wurde verzichtet; es sind lediglich die Niveaulinien gestrichelt wiedergegeben, die bei einem solchen Zusammenfugen uberflussig werden. Es wurde also nicht berucksichtigt, dali gemali 3.3.5 die jeweils allein ubrigbleibende Niveaulinie durch eine andere ersetzt werden konnte. Es sei darauf hingewiesen, dafi das in 3.3.2 beschriebene Priifungsverfahren zum Auffinden zusammenfugbarer Homotopiegebiete nicht etwa auf ein Niveaulinieribild iius unverzweigteri Linien wie hier in Abb. 34 anwendbar ist. Ahnlich wie oben zur Frage der Farbungsermittlung wirkt sich namlich aus, dafi zur Erfassung des Randes vori Flacheri, die durch unverzweigte Niveaulinien begrenzt werden, die eirifachen Listenstrukturen (1) oder (2) (2') nicht ausreichen. Anstelle der Farben wurde unterschiedliche Schraffurrichtung gewahlt: ,,Nach innen steigend": links oben nach rechts unten, ,,nach innen fallend": rechts oben nach links unten.
4.2
Linienglattung
4.2.l Bekannte Verfahren
Fur rnanche Zwecke ist es gunstig, wenn ein Niveaulinienbild nicht aus stuckweise geradlinigen Kurven gebildet wird. Daher kann man Verfahren suchen, das bisher erhaltene Bild so zu andern, daD einerseits die topologischen Eigenschaften erhalten bleiben, andererseits das Auftreten von Ecken vermieden wird. Prinzipiell sind hierzu bereits zahlreiche Verfahren bekannt. An erster Stelle wird man etwa an Bkzier-Verfahren denken (siehe [I] sowie die dort ersichtliche weitere Literatur). Bei der Herstellung einer Be'zier-Kurve wird j a unmittelbar zu einem Streckenzug, dem Kontrollstreckenzug, eine Kurve gefunden. Diese hat auch bereits die im jetzigeri Zusammenhang interessante Eigenschaft der ,,beschrankten Schwankung", namlich von keiner Geraden ofter getroffen zu werden als der Kontrollstreckenzug. Dennoch ware die einfache Ersetzung der gefundenen Streckenziige durch die zugehorigen BCzier-Kurven problematisch. Es ist nanilich nicht gesichert, dafi die Eigenschaft der Niveaulinien-Streckenzuge erhalten bleibt, einander nicht zu schneiden. Naturlich ware es moglich, dies dadurch zu erreichen, daD man durch Einfiigen genugend vieler neuer Kontrollpunkte die BCzier-Kurven genugend nahe an den Streckenzug heranfuhrt. Jedoch wurde es sehr aufwendig, die Eigenschaft des gegenseitigen Vermeidens zweier BCzier-Kurven zu sichern, ja auch nur zu kontrollieren. Als nachsten Ausweg aus dieser Problematik konnte man daran denken, durch Gewinnung einer Be'zier-Flache zunachst die dreidimensionale Flache zu bearbeiten, die j a (theoretisch) in Gestalt aller Niveaulinien vorliegt, nicht nur derjenigen, die gerade in ihrer hier algorithmisch getroffenen Auswahl, etwa in der Gestalt der Listen (l),(2), (2') usw. (zusammen mit Koordinaten von Punkten und Werten von Niveaulinien) vorliegen. Diese Flache setzt sich - wie hier kurz angemerkt, sei -
110
4 Varianten globalcr optischer Vc,rt)csserung
zusanirririii aus Fliicherist,iicken, die entwecler Ebenenstiickc sirid oder Teilstucke von cinschaligen Hyperboloid- ocler hyperbolischeri Paraboloidflacheii. Es treteri Kanten auf. an deneri jcweils solche Flachenstucke aneinanderstohi: diese Kanten sind irifolge der iterativen Gewinnurig des Niveauliriicribildes stets Streckeri parallel z i i den Seiteri des R.ast,erquadrats, ihre Larigen sind Prodiikte r . 2 3 der R.asterquadrat-S~iteIilai~ge r , wobei iintersrliiedliche ganze Zahlen 2 0 auftreten konnen. Urn hierzu eirie approxirnierende Bkzier-Flache zu bilden, konnte man etwa damn denkeri, durdi Aufteilung aller R.asterquadrat,e in Quadrate einheitli(:her Seit,eiilange r . 2-g uncl Berechnen der (hisherigen) Niveaulinieri-Werte an den Eckeri dieser Teilquadrate ein CJuadratrietz VOII Kontrollpunkten zii bilden iind hierau eirie BCzier-Flache herzustellen. Vori dieser Flache miifiten danri wieder Niveaulinien gebildet wt?rden. Offensichtlich wird auch eiri solches Vorgehcn bei einigerniaBen anspruchsvollen Griij~enordnurigen als deutlich zu aufwendig anmsehen seiri. W(tsent,lich vorteilhafter kiirinte es sein, auf folgende Weise zu einer EckrnAbruridmg der vorliegenden Niveaulinien zu konmien, d.11. in gcriiigend kleinern Abstand jeweils von eiricr Ecke Pi, an der zwei Teilstrecken Li-1, L, eiricr Niveaulinie zusairirrientreff~~n, auf Li-1 eirieri Punkt Y,-l und auf Li einen Purikt, Xi anzugeben und dann jeweils nur die so abgegreruten Teilstreckenzuge Y,- 1P,X, durch glat,t,e Kurven zu ersetzen, die auch in Yi-1 und Xi glatt an Li-1 bzw. Li a r d i l i e l k n : Man konnte z u diesem Zweck die Niveaulinieri durch B-Splines crsetzen. Als Kontrollpunkte fiir eirie Niveaulinie riirrirrit man dabei folgende Punkte: fur jede Strecke Li zwei Punkte Xi und Y,, wie eben erlautert, sowie noch einen weitereri Punkt Qi,so daf3 auf jeder Strecke L, die Punkte Pi,Xi,&i, Yi,Pi+1 in dieser Reihenfolge angeordnet sind (nur falls die Niveauliiiie etwa in PI anfangt urid in P,,, # PI endet, ohne X1 urid ohne Y,). Dann wird nanilich infolge der Eigenschaft voii B-Splines, bei kolliriearen aufeinanderfolgeiiden Koritrollpurikten Geradenstiicke zu lieferri, eberi die gewunschte Ecken-Abrundung erreicht. Die Punkte Qi kiirineri einfach als Mittelpunkte der Li gewahlt werden; durch geeigriete Wahl der Purikte Xi:V , ist wieder zu erreichen, daB sich die entstehenden B-Splines nicht gegenseitig schnciden. Das kann einfacher als fur Bkzier-Kurven erreicht werden, da der Verlauf der B-Splines j a riur in den kleinen Dreiecksflachen yi- 1PiXi von den urspriinglicheri Streckeriziigeri abweicht. Auf genauere Ausfiihrungsrriiiglichkeiteti zu eiiier solchen Wahl von X i , Yi wird in anderein Zusanirnenhang in 4.2.2 noch eingegangen. Insgesarnt wird ein Ecken-Abrunden durch B-Splines aber eberifalls noch zu aufwendig werden, gerade wieder bei urnfangreicheren Bildern. Vor allerri ersclieint hier uberflussig, daO man jeweils die gesariite xu andernde Niveaiilinie in eine B-Spline-Kurve umarbeitet, walirend dabei doch Iiiir lokale Anderungen, eberi die Eckeri-Abrundungeri herauskornmen. Wahlt rnan deiirioch dieses Verfahren, so hat man freilich die Moglichkeit, durch die Wahl der Krioterivektoren (die ja fur B-Splines zusatzlich zur Wahl der Kontrollpunkte variiert werderi h n n ) noch die Differenzierbarkeitsstufe zu beeinflussen. In vielen Fallen wird das nicht besonders wichtig seiri, so dalJ statt der hier kurz vorgestell-
4.2 Linienglatt ung
111
ten hekannten Verfahren ein anderes, elementargeometrisches Arbeiten Beachtung verdienen diirfte. 4.2.2 SSItze uber Korbbtigen
Dieses nun vorzustellende Verfahren knupft an den Begriff des Korbbogens an, der schon in verschiedenen historischen Epochen und Kulturen immer wieder zii koristruktiven und zeichnerischen Zweckeri Aufmerksamkeit gefunden hat. Die hier benotigten Aussagen uber Korbbogen sind der Arbeit [14] entnomrnen, die naturlich ebenfalls auf fruher vorkorriniende Aussagen zuruckkomint, wie eiriige dort genannte Erorterungen zu weiterer Literatur zeigen. Es wird dort zunachst eine ,,allgenieinere Aufgabenstellung" betrachtet:
Forderung 5. Gegeben seien zwei Linienelemente ( g 1 , P I ) ,(gz, Pz); gesucht sind Paare von Kreisen kl, kz mit folgenden Eigenschaften: (I) Der Kreis kl besittt das Linienelement (91, PI), d.h., er beriihrt g1 in P I . (11) Der Kreis k2 beruhrt g2 in P2. (111) Die Kreise kl und k 2 beruhren einander.
_ _ - - - - - - -- - -
Abb. 35
112
4 Variaiitcri globaler optischcr Verbesseruiig
Zusatzlich werden nodi weitere einschrankende Bedingungen genaririt, von deneii hier riur diejmigen zitiert seien, die irri Zusaininenharig niit der NiveaulinieiiBearbeitung gebraucht werden: Dic Geraderi g l , g2 seittri nieht parallel zueinander, ilir Schnittpunkt sei S . Die riach (111) verlarigte Beruhrung von k l , k2 soll in einerri Purikt B stattfinden, der im Iririerri des Dreiecks PlP2S liegen soll. Dabei solleri die Mittelpiirikte M I , M2 von Icl, k2 in eiri und derselberi Halbebene bezuglich der in B an kl urid k2 gelegten geirieirisanieri Tangente t liegen. Dies kanri man auch durch folgeiide Aussageri charakterisieren: Bei Durchlaufen cines Bogeris b1 auf kl von PI nach B urid anschliefientlern Durclilaufen eiries Bogens b2 auf k2 VOII B riach P2 soll sich weder der Richtungs- rioch der Krurrirriungssiriri unikehren; urid bei dieser Durchlaufung soll in PI die Orientierung der Geraden g1 von PI nach S iriduziert werden sowie in P2 die Orienticrung der Geraderi g2 vori S nach P2 (siehe Abb. 3 5 ) . Zu dieser ,,allgeIiieinen Aufgabenstellung" gilt eiri Satz, der in [14] als AusgaIigspunkt, weiterer Untersuchungeri zitiert wird, dort auch init Beriicksichtigung ariderer zusatzlieh eirischrankender Bedirigungen als die hier genannten. Bleibt niari bci diesen, so lautet er:
Satz 20. Die Beruhrungspunkte B aller derjenigen Kreispaare k1, k 2 , die der Forderung 5 unter d e n anschliejlend genunnten einschranlcenden Bedingunyen genugen, Eiegen auf dernjenigen durch PI und gehenden Kreis (:, dessen Mittelpunkt Q der uon S verschiedene Schnittpunkt der Innenuiinkelhulbierenden w uon aPlSP2 am Dreieck P1P2S mat dem Umkreis dieses Dreiecks ist. 1st IP1Sl# IP2S1, so kariri Q naturlich auch als Schnittpunkt vori w rriit der Mittelsenkrechten rri vori PI P2 defiriiert werden. Daniit hat man bereits eirieri gewisseri Uberblick uber die (l-diniensional unendliche) Losungsmenge der Forderurig 5. Fiir geriauere Aussagen, die irisbesondere auch als Grundlage zur Behandlung weiterer Forderurigeri dierieri kann, betrachte rriari etwa:
Ubung 17. Man heweise: Fur alle in Satz 20 gerianriten Losungen vori Forderung 5 gilt: Der Wirikel aMlQM2 hat die GroBe 90" + wobei 0 die GriiiSe des Iririeriwirikels aPlSP2 irri Dreieck PIP2S bezeichnet.
5,
Uriter deri unendlich vielcri Korbbijgeri ( b l , b 2 ) . die irii Siririe der Forderung 5 die Liriierielerrierite (91, PI). ( 9 2 , P2) verbinden. kanri man durch eirie zusatzliche Forderung einen ,,nioglichst gunstigen" Korbbogen kennzeichnen: Als hesoriders naheliegerid karin hierzii angesehen werden:
Forderung 6. Untcr ullen Korbbogen, mit denen Forderung 5 und die unschtiejlenden Ei7Lscfirurikitngeri erfiillt sind, merde derjenige gesucht, .fur den lMlM2l moglichst klein ist. Z u dieser Forderung ist zunachst zii unterscheiden, ob der Berulirungspunkt B , der ja aiif die Dreiecksflache PI P2 S eingeschrankt werden soll, i r r i Fall eiries niiniriialeri
4.2 Linienglattung
113
Abstandes I M1 M2Jauf dem Rand dieser Dreiecksflache, also nach Satz 20 in einem der beiden Punkte P I , P2, liegt oder nicht. Ein solches ,,Randminirnuni" erweist sich fur die hier beabsichtigte Anwendung als ungiinstig. Es hat namlich zur Folge, daB der Kreis k l bzw. k2 zu diesem Punkt PI bzw. P2 entartet, und dies bedeutet, daB der jeweils andere Kreis Icp bzw. Icl zwar diesen Punkt erreicht, aber nicht mehr in glattem Ubergang ziir Geraden g 1 bzw. g 2 . Will man aber auf jeden Fall einen solchen glatten Ubergang gesichert wissen, so muB man folglich entweder auf die Minimalitat von IMlM21 verzichten oder aber dafur sorgen, daQ die beiden Linienelemente ( g l , PI),(92,P2) von vornherein so gegeben werden, daB der Fall des ,,Randniinimums" nicht eintritt. Hierzu benotigt man ein Kriterium. das diesen Fall charakterisiert. Ein solches Kriterium bietet der in [14] bewiesene Satz 21. Das in Forderung 6 verlangte Minimum wird genau dann mit einem. Kreispaar k 1 , k2 erreicht, dessen Beruhrungspunkt B im Innern des Dreiecks I'lP2S liegt, wenn die bei PI und Pz liegenden Innenwinkel dieses Dreiecks die Bedingung erfullen, dap das Dreifache des kleineren dieser beiden Winkel groper ist als der grojlere.
Abb. 36
114
4 Variaiitcii globaler optisc1it.r Vcrbcsserurig
1st dime Bedirigiing erfullt, so wird in [14] weiter gexcigt (Abb. 36):
Satz 22. Es sea Z der Mittelpunkt der Strecke P1P2, f t m e r L der Schnittpunkt des Strahlrs aus Z durch (2 niit dem in Satz 20 gtwmntr:n K r ~ i sc. D a m schneidet die Parallele 1 d'urch L zu der Winkelhalbierenden w die in Pi auf y, err-ichteten Senkrechten ha in den Mittelpunkten Mi ( i = 1, 2 ) des g t m c h t r n Kreispciares. Der so gefundene Korbbogen hat, ferner folgende Eigenschaften: Die in B an beide Kreise gelegte gcrrieirisarne Tangente ist senkrecht auf w : sie schneidet von deni Winkel Q PI SP2 eiri Dreieck rriaxinialen Flacheninhalts ab (verglichen niit den Ubergangst,angeriteri der aridereri in Forderung 6 geriaririten Korbbogen). Die beideri Kreisbogen bl b2 haben einarider gleichgroik Zent,riwirikel. Beirri Durclilaufen von bl wird also eine ebenso groDe RicliturigsaIiderurig bewirkt wie beini Durchlauferi vori b2; die Langeri dieser Bogen sirid proport#ional zu ihren Radien. Arikniipferid an diese Satze kann man den dort gefundenen optirrialen Korbbogeri durch weitere Aussageri diskutiercri und kennzeichnen. Damit wird sich irisbesoridcre eirie konstruktiv riiitzbare Vereinfachung ergeben: Ohnc Beschrankung der Allgerneinheit sei fur die gegebenen P I , P2, S a b jetzt ISPll 2 ISP2I vorausgesetzt. Auf der Strecke SP1 sei G der Punkt rriit, lSGl = ISP2 1. In deiri gleiclischerikligeri Dreieck GP2S zeichne Irian aufier der Winkelhalbierenden 111 durch S auch die Wirikellialbiererideri GU urid P2V, die sich irn Innkreismittelpurikt, W des Dreiecks GP2S schneiden. Der Schnittpunkt von gl rriit der Parallelen durch P2 zu UG sei H (siehe Abb. 37). Setzen wir
.
(Y
:= l<SGUl =
l
=
lQSP2VI = / Q V P ~ G=JlQSHP21,
so ist. der in h u n g 17 genannte Winkel g = laGSP2I = 180" - 4tr, iind es gilt [ Q S U G= ~ l<SP2H( = 30. Darriit ergibt sich riach Satz 21: Bei fest vorgegebenen Punkteri S, P2 und fest vorgegebener Geraden yl ist die Menge aller derjenigen Piirikte P I , fur die ISPI1 2 (SP2(gilt und ein optimaler Korbbogen niit B # P2 existiert, die Strecke GH (G eingeschlossen, H ausgeschlossen). Es sei nun PI ein beliebiger Piinkt auf dieser Strecke G H . Der hierzu nach Satz 22 zu findende optirriale Korbbogen ergibt sich konstruktiv einfacher niit
Satz 23. Die Parallele durch PI zu GU schneide P2V in X. Dann liegt X souiohl auf dem Kreis c als auch auf der in Satz 22 genannten Geraden I , dahar i s t diesrr Punkt bereits der Beruhrungspunkt B des optimalen Korbbogens. Dessen Mittelpunkte M I ,M2 ergeben sich folglich durch Schnitt der Senkrechten I t l , 112 mit der Parallelen durdi X zu m ; die TeilbGgen sind bl = P I X , b2 = XP2. Beweis: Schneidet P I X die Strccke GP2 in Y , so ist, auch l<XYP2( = l
4.2 Linienglattung
115
in Satz 22 ein Sehnenviereck im Umkreis von P1P2S ist, gilt 14P1QP21 = 4a, und xu diesem Zentriwinkel im Kreis c als zugehoriger Peripheriewinkel laPlLP2)= 2a, also IGZLPI)= a. Weiter ist I4P1XP2I = /4YXP,I = 180" - 2a, also P1LP2X ein Sehnenviereck; d.h., X liegt auf c. Damit ergibt sich, dail auch der Periphe( betragt. Wegen (aZQS( = 14PlP2Gl = riewinkel ( < X L & ( = I ~ X P I P=~ P ld'2GSI - Id'2P1GI = 0 - P = l4ZLXI folgt also SQ I( X L , und Satz 23 ist, bewiesen. Q2/
Abb. 37
116
4 Variaiiten globaler optischer Verbesswurig
4.2.3 Durchfuhrung einer einzelnen Eckenabrundung
Es sei riun die Situation betrachtet, die arn Ende vori 4.2.1 geschildert wurde: Zwei Teilstreckeri Li-1 = Pi-lPi, Li = PiPi+1 eirier Niveauliriie bilden eirieri Winkel rriit 0" < laPi-lPiPi+ll < 180". Als erstes erripfiehlt es sich. eineri Bruchteil 19 mit 0 < 19 < f festzulegen, der arigibt, wie larig jeweils eine Teilstrecke von Li-l urid von Li hochstens sein darf, die bei der Abruridung der Ecke Pi durch den abrunderiden Bogeri ersetzt allenfalls 6 = Wahlt werden soll. Praktikabel erscheint etwa die Wahl 6 = man 2y noch kleiner, so wird der optische Glattungseffekt zu schwach; wahlt rrian 2y groBer, so entfernen sich irisbesondere Niveauliriien, die nahe bei Rasterpunkten liegen, zu weit vori diesen, urid der Approxirriationscharakter an die vorgegeberien Rasterpuriktwerte verschlechtert sich rnoglicherweise zu sehr. Nach einer derartigen Festlegung vori 2y findet rrian auf Li- 1 derijenigen Piinkt Ti-1, fur den lTi-lPzl = 6 . IPi-lPiI ist, und auf Li derijeriigen Punkt Ti, fur den IPiTiI = 19 . IPiPi+ll ist. In dem so gebildeten Dreieck T+1P,Ti seien nu11 wieder die Bezeichnungen des vorigen Abschriitts eingefuhrt: Der Punkt Pi werde rriit S bezeicliriet, ferrier irri Fall ITi-lSl < lTiSl der Punkt 7'-1 mit P2, aridernfalls dagegen der Punkt Ti rnit P,. Der jeweils andere der beiden Punkte Ti-1, Ti erhalt die vorlaufige Bezeichriung C. Die Satze 21 und 23 sowie die Betrachturigen vor Satz 23 fuhren nun mit einer Falluriterscheidurig zur Festlegung, welcher Punkt auf der Strecke SC die Bezeichnung PI erhalten wird, so dafl auf das darriit gefunderie Dreieck P1P2S die Koristruktion aus Satz 23 anweridbar wird (siehe Abb. 38):
a,
Abb. 3%
6:
4.2 Linienglattung
117
Man konstruiert zunachst, wie vor Satz 23 angegeben, auf dem Strahl aus S durch C den Punkt G mit lSGl = lSP2l und im Dreieck GP2S die Winkelhalbierenden GU, P2V und w, die sich in W schneiden. Ferner kann man die Parallele durch P2 zu UG zum Schnitt H mit der Geraden durch S,C bringen. (Diese Gewinnung von H kann fur die durchzufuhrende Konstruktion entbehrlich gemacht werden, sie triigt hier nur zur besseren Verdeutlichung bei.) Die Parallele durch C zu GU schneidet die Gerade durch W,P2 in einem Punkt D. Nun erfolgt eine Fallunterscheidung, die auf zwei Arten beschrieben werden kann, einerseits nach der Lage von C in bezug auf die Strecke G H , andererseits nach der Lage von D in bezug auf die Strecke WP2. (Eben weil die letztgenannte Moglichkeit genugt, ist die Betrachtung von C auf GH entbehrlich. Sie verdeutlicht die Falle aber mehr an der Anfangssituation, daher wird sie im Folgenden mitgenannt.) 1. Fall: Es gilt lGCl 5 6.JGHIbzw. gleichwertig lWDl 5 19.JWP2I.In diesem Fall setzt man PI := G. Diese Entscheidung entspricht dem optischen Eindruck, dai( es sich ,,nicht lohnt", einen aus zwei Kreisbogen zusammengesetzten Korbbogen zu verwenden, da er sich nur wenig von dem fur PI = G entstehenden Kreisbogen unterscheidet, d.h. von dem Grenzfall, in dem ein gemeinsamer Mittelpunkt M I = M2 als Schnittpunkt von h l , h2 und w vorliegt. 2. Fall: Es gilt 6 . [GHl 5 [GCl 5 (1 - 6) . IGHJ bzw. gleichwertig 6 . IWP2l 5 JWDI 5 (1- 8)* IWP2l. In diesem Fall wird die nach Satz 23 verlaufende Korbbogenkonstruktion fur PI := C praktikabel; man hat jetzt B = X := D. Die Parallele 1 zu w durch diesen Punkt wird von hl und h2 in M I bzw. M2 geschnitten.
118
4 Variantell globaler optixcher Vc:rbcsserung
3. Fall: Es gilt /GCI > (1 - 6) . lGHl bxw. gleichwcrtig IWDl > (1 - 29) . IWP2l. In diesern Fall setzt r r i a ~ iPI so auf GC, (la8 JGPIJ = (1 - 8). J G H Jgilt, d.11. so, als lage der vorige Fall rriit dieser Grerixlage lGCl = (1 - 19) . lGHl vor. Mit derri so festgelegten Punkt PI fuhrt man dariri die gleichc Koristruktiori durch. d.h., man verweridet B := X als Schnittpunkt, von P2V niit der Paralleleri durch PI z u GU. Auch hier ist die Entscheidung fur PI optisch-eindrucksmaflig rnotiviert, z.B. fur diejenige Lage, bei der C zwar noch der Strecke GH angehort, aber nalier als 29 . lGNl bei H liegt. Wurde Inan auch hier wie irri 2. Fall PI = C wahlen, so eritstunde eiri Korbbogen, dessen kleinerer, in B eirirriunderitier Bogeri eine so starke Ricliturigsariderurig brachte, dafi der Abrundungseffekt optisch nicht mehr befriedigend zur Wirkung kame. 4.2.4 Kriterium fur nicht durchzufuhrende Eckenabrundung Brvor man die eben beschriebene Koristruktion durchfuhrt, ist zu entsclieiden, ob eirie solche Eckenabrundung uberhaupt arixuwenderi ist. Diese Entscheidung sollte hier jedoch erst nachtraglich dargestellt werden, da man zu ihrer Beschreiburig urid Begrundung gunstig auf die nun vorliegenden Konfigurationeri zuruckgreifen kann. Es handelt sich urn die Entscheidung, ob der Winkel zwischen den beideri Streckeri L,-l und L , so nahe bei 180" liegt, dafi er optisch gar nicht Irielir als R ichtungshnderung wahrgenoirimen wird. Zugleich kann in solchen Fallen der Verzicht auf die Konstruktionen aus 4.2.3 auch dazu dienen, daB man vermeidet, bei Durchfiihrung der Konstruktion (Erniittlung von D ) zwei nahezu parallele Geraden zum Schnitt bringen zu mussen, was rechnerisch auf eine Division durch eirien sehr kleinen Betrag hinauslaufen wurde und damit nioglicherweise die entsprechenden Probleine im Prograrrimablauf zur Folge hatte. Die Entscheidurig kann in Anlehnurig an ein Motiv erfolgen, das in etwas anderern Zusamrrienhang (Ersetzung einer formelrriaijig in Parameterdarstellurig gegebeneri Kurve durch einen ,,optisch glatten" Streckenzug) in der Arbeit [5] auftrat. Dieses Motiv. das auch in Abschnitt 5.1.2, Forderung 8 nochmals zu anderen Betrachtungen aufgegriffen wird, geht davon aus, dafl man eine Richtungsanderung optisch nicht rnehr als solche wahrnimmt, wenn die betreffenden Strecken LzPl,L, durch Parallelstreifen einer Breite X ersetzt werden und wenn in die so eritsteheride Figur eiri Kreisbogen ganz hineinpaat; dabei ist X durch die Aussage zu fixieren, dafl Punkte, dereri Abstand kleirier als X ist, optisch-eindrucksmaflig nicht mehr unterscheidbar sind.
Ubung 18. Uriter Verwendung der Satze 20 bis 23 (Abb. 36 bis 38) fuhre man die Beweisschritte der folgenden Herleitung eiries Zusammerihangs zwischen = 180" - 4a und X genauer aus. Fur die Strecken Li-1 = PIS, Li = SP2, wieder etwa rnit a := IPlSl 2 ISP2l =: 6, seien wie bisher W,G , H , B , M I , M2 gebildet (ohne die Fallunterscheidung aus 4.2.3 zu beachten, vielmehr stets niit der Konstruktiori des dortigen Falles 2). Es sei
4.2 Linienglattung
119
auch der Mittelpunkt Q des Kreises c aus Satz 20 herangezogen. Da dieser Kreis c durch P I ,P2 und G geht, kann Q auch als Schnittpunkt der Mittelsenkrechten von GPl und ihres Bildes bei Spiegelung an SW gefunden werden (siehe in Abb. 39 die damit auftretenden E , GI, El; der Kreis c selbst ist in Abb. 39 nicht gezeichnet). Man bestatigt die in Abb. 39 angegebenen Winkel der Groile a. Fur das Lot BT von B auf S N ergibt. sich z.B. die Kongruenz der Trapeze QE’P2M2, QTBM2. Also geht der durch I3 und E’ gelegte Kreis c’ urn Q auch durch T . Die Parallelen durch eben diesen Punkt T zu SPI, SP2 definieren zusammen mit SPI, SP2 Parallelstreifen. Ihre Breite X ist in genugender Naherung im oben genannten Sinri geeignet zum Wert a ; denn der eigentlich zu betrachtende Korbbogen aus den Bogen P1B (Mittelpunkt M I ) und BP2 (Mittelpunkt M2) wird genugend genau von 8 angenahert. Fur die folgeride Naherungsrechnung sei a im BogenmaB verstanden, so dail von s i n a a , sin2a Gebrauch gemacht werden kann, ebenso von X M ISTI,
M
2 a usw.
120
4 Varianten globaler optischer Verbesscrung
ISW~
zIWN~
+
z . b . siri2cy z b . CY.
Nach deni Sinussatz ist, lSHl = b .
z 3b,
also Hieraus urid ails folgt
IGHI z 2b. IGPiI = u - b [WTl : lWNl = lWBl : JWP2lz ( U
d.h.
A = i(u+b).a.
-
6 ) : 26,
Fur die Grofienordnung der riun wieder in Grad geiriesseneri 180" - 0 = 4cy ergibt sich datriit folgendes
~
Differenz
Kriterium: Setzt rnan X etwa in der Groflenordnurig k . 0 , 01 C I I ~an urid hat f (u + b ) etwa die Grofienordnung K . 1 em, so eriibrigt sich eine Eckenabruridung, wenri die Differem 180" -0 eine Gradzahl unterhalb der Grofienordnung hat.
g
4.2.5 Benachbarte Eckenabrundungen Die Festlegungeri in der Fallutiterscheidung aus 4.2.3 sirid nun rrioglicherweise nochnials abzuandern, wenn nairnlich nach der Eckenabrundung die Bedingung nicht rnehr erfullt sein sollte, daB die entstehenden Kurven einander nicht schneiden. Auch in dieser Frage karin es zuderri zweckmaflig sein, sogar zu verlangen, dafi die Kurven einander nicht zu nahe benachbart werden, z.B. nicht naher, als es fur die urspriiriglichen Streckerizuge der Fall war. Zu dieser Frage karin rriari unterschiedliche Varianten der Entscheidung treffen. Ein Extrern solcher Varianten ist die Entscheidung, vor jeder Eckenabrundung eineri Test einzuschalteri und gegebenenfalls durch nochmaliges Andern auf positiven Testausgang zu reagiereri. (Wie eiri solcher Test und die zugehorige Anderung verlaufen, wird sogleich unten beschrieben.) Das entgegerigesetzte Extrem ist etwa die Entscheidung, zunachst bei keirier Eckeriabruridung eine Anderung vorzusehen und erst nacli Fertigstellung des gesamten Bildes interaktiv zu entscheiden, ob fur einzelne Ecken doch rioch eine Anderung vorgenommeri werden soll, da sich einzelrie Kurven schIieiden oder durch eine Abrundung einander zu nahe gekonimeri sind. Man kanri dann riach eitier solchen Entscheidung die nun zu beschreibende Anderung an den betreffenderi Stellen vornehrnen, wobei freilich die detaillierte softwarernaflige Ausgestalturig des Algorithmus einen solchen iriteraktiven Zugriff errnoglichen niufj. Ein jedenfalls mit Sicherheit ausreicliender Test besteht in folgender Uberyriifung: Wie in 4.2.3 beschrieben, ermittelt Inan zunachst fur jede Ecke, die in1 gesainteri Niveaulinieribild auftritt, das Dreieck Pi PZS, das nach Festlegung von 19 urid von Punkten Ti aus der Unterscheidung der Faille 1 - 3 hervorgeht. Marl fuhrt jedoch die Abrundung, also das Ersetzen der Strecken P I S , SP2 durch die Bogeti b l , 6 2 , noch nicht aus. Vielrnehr iiberpriift man nun erst jedes Dreieck P I P ~ Sob ,
4.2 Linienglattung
121
eine andere Niveaulinie in das Innere dieses Dreiecks hineinreiclit. Diese Uberprufung kann folgendermafien verlaufen: Die Ecke S wurde im vorangehenden Programmablauf gefunden durch lineare Interpolation auf einer Kante eines Quadrats, das als Rasterquadrat oder als Teilquadrat hiervon im Lauf der Iteration gefuiiden wurde. Dabei kann diese Kante auch mehrdeutig bestimmt sein, wenn namlich S in eine Ecke eines derartigen Quadrats fallt (einschliefilich der Moglichkeit, dafi es sich um eine gemeinsame Ecke von zwei oder vier Quadraten handelt). Auf jeder von S ausgehenden derartigen Kante (von denen es also hochstens vier gibt) kann man den nachstgelegenen Punkt suchen, der dort als Ecke einer anderen Niveaulinie auftritt, falls es auf dieser Kante uberhaupt eine solche Ecke gibt. Von jeder so gefundenen Ecke gehen wieder nur zwei Niveaulinienkanten (in Randfallen nur eine Kante) aus. Diese hochstens 8 Strecken hat man zu uberprufen, ob sie mit der Strecke PIP2 einen inneren Punkt gemeinsam haben. Verlauft ein Test im Sinne dieses Ergebnisses positiv, so fuhrt folgende Anderung zum Ziel: Jede der gefundenen ins Innere von P I P ~ Shineinreichenden Strecken mui3 eine der Strecken SPl, SP2 in einem inneren Punkt schneiden. Unter allen diesen Schnittpunkten sucht man denjenigen, der die kleinste Entfernung zu S hat. Die Parallele durch diesen Punkt zu P1P2 schneidet dann vom Dreieck P1P2S ein kleineres, zu ihm ahnliches Dreieck PiPlS ab; dieses verwendet man zur Konstruktion des Korbbogens. Auch zu dieser Anderungsvorschrift ist zu bemerken, dafi sie uberwiegend aus Grunden der optischen Erfahrung gewahlt wurde, freilich hier auch aus Grunden der rechnerischen Einfachheit. Es gibt prinzipiell noch genauere Moglichkeiten. ein Dreieck PIP2S nur soweit zu verkleinern, dafi keine andere Niveaulinie hineinreicht und dafi fur das kleinere Dreieck der Punkt Pi in dem entsprechend zu definierenden Interval1 G'H' liegt . Eine solche ,,etwas schwachere" Verkleinerung konnte sogar auch optisch den Vorteil bieten, den Abrundungseffekt wegen des etwas grofier gewonnenen Dreiecks Pi P i s noch besser sichtbar zu machen; jedoch diirfte die tatsachliche Verbesserung nur selten ins Gewicht fallen. Abb. 40 zeigt den Kurvenverlauf, der nach Eckenabrundung aus Abb. 34 ohne die dortige Farbungswiedergabe - entsteht, fur die Farbung sei auf die Titelgrafik verwiesen. Eine weitere Variante zur Eckenabrundung sei noch kurz erwahnt; sie betrifft eine Situation, in der eine Niveaulinie zum Belegungswert von (mindestens) einem Rasterpunkt gezeichnet werden soll. Dies ist j a - fur die hier zu betrachtenden unverzweigten Niveaulinien - moglich, wenn kein mit diesem Wert belegter Rasterpunkt nach Def. 9 als Startpunkt fungiert. In einer solchen Situation kann man das Ziel anstreben, dafi die betreffende Niveaulinie genau durch die genannten Rasterpunkte hindurchgeht und sie nicht infolge der nachtraglichen Eckenabrundung vermeidet. (Obwohl dieses Ziel, ebenso wie das gesamte Vorhaben der Eckenabrundung, eigentlich den Hauptaspekt der globalen Optimierung nicht beruhrt, kann es fur manche Anwendung ja sinnvoll sein.) In derartigen Fallen ist folgendes Vorgehen moglich:
122
4 Variilriten globaler optischer Verbesserurig
Abb. 40
Die Niveaulinie sei der Streckenzug 5'15'2 . . . S,. Man bilde einen schnialeri EStreifen uni diesen Streckerizug und rnarkiere auf den Raridstreckeri dieses Streifens folgende Punkte: fur z = 2, . . . , m - 1 die Schnittpunkte P, und P,' niit derjeriigen Geraden durch S,, die gleiche Wirikel rnit S2-1S, und S2S,+1 bildet, ferrier Pi auf derselben Randstrecke wie P2 und mit laS2SlPil = I Q S I S ~ Pebenso ~ ~ , P, auf = ~ 4 m S m . - 1 P ~ -Fur l~. derselben Raridstrecke wie PALplund niit (aS,,-lS,P,,I z = 1,. . . ,rrz - 1 schliefilich sei Qz der Mittelpunkt vori PLPz+l. Darin fuhre man durch, die Eckenabrundung fur den Streckenzug S1P{Q1P2Pi . ' ' P~rL-1Q7n-1PmSm wobei man insbesondere auf den Teilstrwken SIP;, P2P4,. . . , P,,-lPA-l, P,rLSm die Liriienelerrieritwatil so treffe, dafi S1, SZ, . . . , Sm-l, S , als Beruhrungspunkte gefordert werden.
4.3 Zwei Beispiele weiterfuhrender Anwendungsthemen 4.3.1 Ort hogonale Trajektorien
Aufier den Anwendurigsmtigliclikeiten, die sidi in den Nutzungsgebieten (siehe 1.4) aus dereri eigeristaridigeri Verwendungsarten ergeben, seieri nun zwei Anwendurigstlierrieri iri rnehr allgemein-geometrischer Beschreibung genannt, wobei freilich auch diese Therrien irn eirizelrien je nach derri Nutzurigsgebiet korikretisiert werderi koririen. Eiri erstes derartiges Therna bestelit in derri Vorhaben, zu deni errriittelten Niveaulinienfeld eiri Feld orthogonaler Trajektorien zu gewinneri, dreidirriensional gesehen also zu der erniittlten Flache eirie Schar von Fallinieri. Dabei liegt es riahe,
4.3 Zwei Beispiele weiterfuhrender Anwendungsthemen
123
gerade zu diesem Zweck die hier gefundene Gestalt der Niveaulinien zugrunde zu legen; denn wegen des Verlaufs als stuckweise lineare Niveaulinien wird das Ermitteln von Tangentialrichtungen, auf denen die Trajektorien orthogonal sein sollen, uberflussig. Allerdings steht hier nicht eine so unmittelbar global nutzbare Einstiegsmoglichkeit zur Verfugung, wie es fur die Niveaulinien in dem grundlegenden Schritt (2.1.2) der Typeneinteilung fur Rasterquadrate der Fall war. Daher sei hier auch die Frage offengelassen, ob sich ein durchweg automatisch ablaufender Algorithmus gestalten lafit oder ob ein starker interaktives Eingreifen zu bevorzugen sei. Vielmehr seien hier nur einige Ermittlungsschritte grob skizziert. Man verwendet dabei ein Niveaulinienbild, das nach dem Verfahren aus 3.2 zu einer arithmetischen Folge von Werten gewonnen wurde, wobei es gunstig ist, die Differenz, die in dieser arithmetischen Folge vorliegt, nicht zu grofi zu halten (also nichl, unbedingt das in 3.2.7 erlauterte Streben nach besoiiders kleiner Anzahl von Niveaulinien zu verfolgen). Aufierdem sollte man beim Herstellen der Niveaulinien konsequent das Iterieren mit dem arithmetischen Mittel (2.2.1, Def. 2) einhalten, also im Sinne von 3.1.4 eine ,,feine" Linienfuhrung wahlen. Bei sehr stark interaktiv vorgesehenem Arbeiten konnte man sogar, nachdem die arithmetische Folge der Werte gewahlt wurde. das ,,abgerustete" Verfahren 3.2.2 anwenden und die sogleich benotigten ,,Gipfel" und ,,Taler" rein visuell auffinden. Man betrachtet namlich als ersten Schritt einer Herstellung von orthogonalen Trajektorien alle diejenigen Gebiete, die bei dem relativen Farbungsverfahren 4.1.2 bis 4.1.4 sich als ,,am weitesten innen liegende" Gipfel- bzw. Tal-Region ergeben haben. Sie werden entweder von je einer geschlossenen Niveaulinie begrenzt, die zudem nullhomotop ist (siehe 3.1.3), oder aber von einer Niveaulinie, die diese Eigenschaften zusammen mit einer Randstrecke hat (Gebiete der Sorten (a,a) oder (b,a); siehe 3.2.3). Von jeder Teilstrecke des Randes eines solchen Gebietes ausgehend bildet man die nach aui3en gerichtete Mittelsenkrechte und setzt sie solange fort, bis man auf die nachste Niveaulinie stofit. Von da an setzt man die so begonnene Kurve auf der anderen Seite dieser angetroffenen Niveaulinie fort, und zwar senkrecht zu dieser. Bemerkung: Diese Fortsetzungsvorschrift bedarf eines Zusatzes, falls der Treffpunkt gerade eine Ecke der angetroffenen Niveaulinie ist. In diesem Fall ersetze man die Angabe ,,senkrecht zur Niveaulinie" durch die Angabe ,,in Richtung der Winkelhalbierenden der angetroffenen Ecke" . Ferner kann die Fortsetzungsvorschrift noch verbessert werden, indem man die Richtungsanderung nicht erst beim Auftreffen auf die neue Niveaulinie vornimmt, sondern schon vorher. Dabei kann man durch eine leichte geometrische Hilfskonstruktion erreichen, dafi die beiden Teilstucke der so zu bildenden Linienfortsetzung (vor bzw. nach dem Punkt der Richtungsanderung) einander gleichlang sind. Die so beschriebenen Fortsetzungsschritte fuhrt man solange aus, bis man entweder auf der Randlinie einer anderen Gipfel- oder Tal-Region oder auf dem Rand des gesamten Rasterrechtecks angekommen ist. In gleicher Weise gewinnt man, von den Randstrecken aller Gipfel- oder Tal-Regionen ausgehend, weitere Trajek-
124
4 Variariteri globaler optischer Vertxsscrung
torieri. Ist, das gescheheri, so ist zu erwwrten, dai3 das gewonriene Trajektorien-Bild iioch verbesserungsbedurftig erscheint. Ersteris kann es seiii, dai3 sich zwei Trajektorien in ihreiii Verlauf soweit voneinander entfernen, daB man zwischen itirieri nocli weitere einfiigen rrioclite! z. B. auf derri Rand eirier Gipfel- oder Tal-Region in der Mitte zwischeri den vorgenannten Trajektorieri beginnend. Zweitens endet eine riach obiger Vorschrift hergestellte Trajektorie im allgenieirien riicht geriau in der Mitte eirier Teilstrecke des Rarides ihrer Ziel-Region; also kann sie uritunlich eng neberi c1er:jenigen Trajektorie eriden, die ihrerseits in der Mitte beginnend gezeichnet vorliegt. In solchen Fallen kanri es zweckriiaaig sein, diese beiden Trajektorien wegzulasseri und durch eine zu ersetzen, die zwischeri ilirieri verlauft, z. B. beginnend in der Mitte zwischen den beiden iirsprunglichen Ziel- bzw. Anfangspunkten. 4.3.2 Richt ungsrosen
In inanchen Anwendungsgehieteri, insbesoridere solcheri, in derieri Auswertungsmethoden vorkommeri, die unter das Sticliwort einer Richtungsstatistik fallen (konkret etwa in Zweigen der Geologie, aber auch rriehr abstrakt in vielen anderen Disziplinen, die eine irgendwie defiriierte Richturigsverteilung nutzen) werderi aus eirierri Kurvenbild sogenannte Richtungsrosen hergestellt. Sind die Kurven krumrnlinig, so erfordert dies oft betraclitlichen Aufwand: Die Kurven werderi durch ausgewahlte Punktx in kleine Teilstucke vori (naherungsweise) gleicher Bogenlange zerlegt, die Tangentialrichtiingeri in den Zerlegungspunkten werden errnittelt und anzahlmafiig in die Richtungsintervalle einsortiert, aus denen sich die Richturigsrose aufbaut. Die ublicherweise als ,,Zacken" gezeichrieten Bestandteile der Richtungsrose eritstehen dann aus den strahlenforniig vom Zentrum der Rose ausgehenden Strecken, die in die Mitten der Richtungsintervalle hineinweisen und deren Langen proportional zu den ermittelten Anzahlen sind. Diese gesamte Gewinnurig eirier Richtungsrose aus eirieni Niveaulinien-Bild vereirifacht sich nun wieder betrachtlich, weriri niari die Niveaulinien ebenso zur Hand hat wie soeben in 4.3.1 beschrieben. Man braucht nur noch die einzelrien Teilstrecken der Niveaulinien in die Richtungsintervalle der Rose einzuordneri und dort (anstelle eirier Anzahl-Proportionalitat) ihre Langen zu summieren. Natiirlich ist die ,,Realitatsnaihe" einer so gewonnenen Riclitungsrose kritisch einzuschatzen. Theoretisch ware eigeritlich folgendes Vorgehen erforderlich: Marl mui3te eirierseits die Differenz der arithmetischeri Folge der Werte, zu denen Niveaulinien gezeichnet werden, gegen 0 geheri lassen. Daniit zusammenhangend muflte man zweiteris das Iterationsverfahren anders als in 2.2.1 am Ende festgelegt auch in urikritischeri Rasterquadraten (und Teilquadraten hiervon) stets bis zu eirier Teilquadrat-Seiterilangefortfiihren, die eberifalls gegeri 0 zu gehen hatte. Dadurch wurderi d a m als Grerizwerte der oben genarinten LBngerisurrimen in den Richtungsintervallen die ,,realistischeri" Roseriwerte erscheinen. Stattdessen wird man in beiden Aspekteri genugend kleirie Werte (Differenzwerte bzw. TeilquadratSeitenlangen) aristelle gegeri 0 gehender verwenden. ~
4.3 Zwei Beispiele weiterfuhrender Anwendungsthemen
125
Insgesamt aber ist der hier geschilderte Ansatz jedenfalls unter dem Aspekt ,,realistisch", daB die Auswahl der uberhaupt herangezogenen Niveaulinien durch die arithmetische Wertfolge gesteuert wird. Will man eine ahnliche Gewinnung von Richtungsrosen fur die in 4.3.1 erhaltenen Trajektorien ,,realistisch" gestalten, so ist bereits das Problem, welche Trajektorien zu dieser Gewinnung heranzuziehen sind, merklich schwieriger (man vergleiche die beiden Verbesserungsfalle, die am Ende von 4.3.1 genannt wurden) . Hier muBte eigentlich der folgende Aufwand erforderlich sein: Man zeichnet gar keine durchgehenden Trajektorien, sondern nur die kurzen Strecken zwischen den aufeinanderfolgenden Niveaulinien. Und die Abstande zwischen je zwei solchen kurzen Strecken wahlt man so, daB im dreidimensionalen Raum die Flachenstucke, die sich zwischen den beiden Niveaulinien und zwischen diesen beiden kurzen Trajektorienstucken befinden, alle den gleichen Flacheninhalt haben. Erst dann sind die I'rajektorienstucke richtungsmaflig in die Rose einzuordnen und in deren Richtungsintervallen IangenmaBig zu summieren. Als etwas einfacheres Verfahren, bei dem sehr wohl die durchgehenden Trajektorien verwendet werden, multipliziert man die Langen ihrer Teilstrecken mit dem arithmetischen Mittel der beiden angrenzenden Flachenstucke.
5
Varianten irn Arbeiten rnit Genauigkeitsschranken
5.1 Abhangigkeit von allgemeinen Bedingungen 5.1.1 Genauigkeit der Rastervorgaben
Die Frage, wie weit eirie algorithrnische Gewititiurig von Niveaulinienbildern durch Genauigkeitsbetraclitutigen beeinflufit wird, liangt spurbar von einigen Eigenschaften des gegebenen Rasters ab, die nun zu diskutieren sind. Eirie erste Eigenschaft ist die Genauigkeit, mit der die einzelnen Werte in den Rasterpunkten bekanrit sind. Moglicherweise, 2.13. bei Meadaten, muBte sogar die Geriauigkeit einbezogen werden, rriit der die Rasterpunkte selbst in ihrer Lage, charakterisiert etwa durch garizzahlige Koordinaten, bekannt sind. Sind fur diese Koordiriaten bereits sinnvolle Fehlergrenzen anzusetzen, so wird man sie urnrechrieri in Fehlergrenzen fur die ,,Mefiwerte, sofern sie den genauen Rasterpunkten zugeordnet werden" . Sowohl fur eine solche Umrechnung als auch uberhaupt fur die weitere Berucksichtigung von Fehlergrenzen der Werte in den Rasterpunkten korrimt es vor allern auf die Relation zwischen dieseri Fehlergrenzen und den Differenzen zwischen Rasterpunktwerten an. Angesichts der vielseitigen Anwendungsmoglichkeiten in sehr verschiedenen Anwendungsgebieten konnen diese Anfangsbedirigungen sehr unterschiedlich gelagert sein, so daB hier zunachst nur eine im allgemeinen praktikable Empfehlung gegeben werden soll: Man versuche, aus den gegebenen Genauigkeitsbedingungen fur Rasterpunkt-Koordinaten und Wert-Differenzen die folgende Situation als diesen Bedingungen angepaat zu erhalten:
Forderung 7. Unter der Annahme, daj3 die Rasterpunkte als genaue Punkte mit ganzzahligen Koordinaten vorliegen, entspreche die Genauigkeit der Rasterpunkt- Werte einer Angabe dieser Werte mat einer einheitlichen Groj3enordnung der Fehlergrenze. 5.1.2 Rastergemaaer Zusammenhang zwischen Rechen- und
Zeichengenauigkeit Ein grundsatzlicher AnlaB zur Beachtung von Genauigkeitsfragen liegt darin, daB fast irrimer die Zeicherigeriauigkeit berucksichtigt werden mua, daniit ein rechnerisch gefundenes Niveaulinietibild als brauchbar gelten kann. Ein erstes notwendiges Kennzeicheri dafur, ob mit eirier sinnvollen Rechengenauigkeit gearbeitet wurde, stellt die Beobachtung dar, ob rechnerisch wohlunterschiedene Niveaulinieri auch stets niit Zeichengenauigkeit voneinander getrenrit verlaufen. Es kann zwar gelegentlich akzeptiert werden, wenn in einzelnen Regionen des Niveaulinienbildes der Eindruck des ,,Ineinanderlaufens" benachbarter Linien auftritt. Darin
5.2 Genauigkeitskritische Teilschritte des Algorithmus
127
liegt einer der Vorteile der Entscheidung, als Endresultat nur unverzweigte Niveaulinien zu gewinnen; aus einer derartigen Region des Ineinanderlaufens kommen die Linien, transversal zu ihrem Verlauf betrachtet, in derselben Reihenfolge wieder heraus, wie sie hineingekommen sind. Dennoch wird man darauf bedacht sein, solche Verdichtungen nicht uberhandnehmen zu lassen. Daher kann wiederum als allgemeine Empfehlung gegeben werden: Forderung 8. Die Zeichengenauigkeit sei durch die Aussage charakterisiert, daj? Punkte, deren Abstand kleiner als X ist, nicht mehr genugend unterscheidbar sind. Die Seitenlange eines Rasterquadrats sei a; die minimale positive Diflerenz, die zwischen Rasterpunkt- Werten auftreten. kann, sei p . Dann empfiehlt es sich, zur Rechengenauigkeit die Festlegung t'u treffen, daj? f u r Zahlen z1, z2 die naherungsweise Gleichheit als
verstanden wird. Uberlegungen und Festsetzungen dieser Art spielen auch eine Rolle, wenn Niveaulinien zu einer arithmetischen Folge von Werten gewonnen werden sollen; hierauf waren bereits die Ausfuhrungen im Anschlui3 a n Forderung 4 in 3.2.7 orientiert.
5.2 Genauigkeitskritische Teilschritte des Algorithmus 5.2.1 Ermittlung der Rasterquadrat-Typen Bereits bei der Ermittlung der Rasterquadrat-Typen (2.1.2, Def. 1) wird man mindestens wahlweise - die Empfehlung aus Forderung 8 befolgen. Nach Festlegung einer Genauigkeitsschranke E > 0 wird man somit in Def. 1 die Gleichheiten a = b, . . . usw. durch Ib - a1 < E , . . . ersetzen. Hat man dies konsequent befolgt, so ergibt sich als Folgerung, da%jeweils aus einer der Ungleichungen a < b,. . . usw. die scharfere Ungleichung a 5 5 b - 5 folgt. Die hierbei zu wiihlende Genauigkeitsschranke E wird man ungefahr in der GroBenordnung Ap/a wahlen, die in Forderung 8 genannt war. Etwas genauer ist zu empfehlen, die beiden folgenden Gesichtspunkte zu beachten: Einerseits kann man P kleiner als Xp/a wahlen, etwa um einen Faktor der Grofienordnung 1/2 bis 1/10, da es sich um Genauigkeitsfestlegungen fur einen Anfangsschritt des Verfahrens handelt. Andererseits aber sollte jedenfalls vermieden werden, da% man in die Fehler-GroBenordnung der elementaren arithmetischen Rechenoperationen hineinkommt; denn man wird j a z.B. sichern wollen, da% eine Division stets rechentechnisch ausfuhrbar bleibt, wenn der betreffende Divisor durch vorangehende Schritte des Algorithmus als von Null verschieden ausgewiesen wurde. ~
+
128
5 Varianten in1 Arbeitcii rriit Gcnauigkcitsschrankcii
Die hier fur die Typ-Errriittlung beschriebene Festlegung gilt naturlich auch bei der Durdifuhrung vori Iteratiorisverfahren (2.2.1, Def. 2; 2.2.2, Def. 3 fur Iteration mit derri arithrrietischen Mittel bzw. 2.3.2, Def. 4 fur Iteration rriit derri Parallelmittel). 5.2.2 Vergleich von Grenzwerten der Iterationen
Eirie eritscheitlende Bedeuturig fur das entstehende globale Niveauliriienbild koiiirrit der rechnerischen Behandlung der Grerizwerte zu, die nach 2.2.3, Satz 7 bzw. 2.3.2. Satz 14 auftreten. Sind niimlich zwei solche Grenzwerte, die in zwei verschiederieri Rasterquadraten erniittelt wurden, als einander gleich errechriet worden, so gehoren die beiden verzweigteri Niveaulinien, die gemafi 3.1.2, Def. 9,( 1) von den Startpunkten in dieseri beiden Rasterquadraten ausgeheri, zu demselben Belegungswert. Daher karin bei ihrer Herstellung gemafl 3.1.3. Def. 10 ein Teilstuck eirier so eritstehenden Niveauliriie diese beiden Startpunkte rriiteiriarider verbiriden. Gelten aber die beiden Grerizwerte nach ihrer rechnerischen Behandlung als voneiriander verschieden, so nieideii sich die beiden Niveaulinien; beispielsweise indern die eirie von der andereri unischlosseri wird oder iridern beide getrenrit voneiriarider verlaufende Teillinieri enthalten, die das Rasterrechteck von Rand zu Rand durchqueren. Soniit hangt von dieser Frage der Gleichheit, oder Verschiedenheit zweier Grenzwerte die globale Zerlegung des Rasterrechtecks ab, die nach Anwendung der Verfahren aus 3.1.3, 3.1.5 (Zerlegung) und 3.1.7 (Zusarrimerisetzeri) eritsteht. Dies wiederum besagt nach den Ausfuhrungen in 3.1.3, 3.2.3 bis 3.2.6 sowie 3.3.1 bis 3.3.5, dafl die globale topologische Struktur, die in den Homotopieklassen unverzweigter Niveaulinieri erfaBt wird, ebenfalls zwangslaufig vori dieser Frage der Gleichheit oder Verschiedenheit zweier Grenzwerte abhangt. Dasselbe gilt auch zur Frage nach Gleichheit oder Versehiedenheit der Belegungswerte der ubrigen riach 3.1.2, Def. 9 ermittelten Startpunkte. Allerdings gehoren diese Werte zu den vorgegeberien Rasterpunkt-Belegungswerten; ihre Verschiedenheit vorieinander stand daher sogleich zu Beginn des Verfahrens zur Diskussion. Insgesanit besagen diese Uberlegungen: Die Erripfehlungen aus Forderung 7 urid Forderurig 8 sind nicht nur wichtig, urn eine zu erige Nachbarschaft von Niveaulinieri zu vermeiden; soridern sie dienen vor allem dem Zweck, die HomotopieStruktur der Niveaulinien von einern vptisch oder anwendungsbedingt unangeniessenen Komplikationsgrad freizuhalten. Um genauer zu diskutieren, wie weit in dieserri Sinrie Forderung 8 vor allem bei der Behandlung der Belegungswerte von Kreuz- und T-Kurven (3.1.1, Def. 5) eirie Rolle spielt, sei berrierkt: Diese Werte sirid nacli den genannten Satzen (2.2.3, Satz 7 bzw. 2.3.2, Satz 14) als Grenzwerte entstanden. Wie bereits in 3.1.3 einleitend bernerkt wurde, hat man also Forderung 8 irisbesondere in dem Sinne zu befolgen, daB die Ariordriurigsstruktur solcher Grenzwerte rechentechnisch durch Einsatz sinrivoller GeriauigkeitsschrarikeIi gesichert wird. Fur die Iteration mit den1 arithmetischen Mittel (2.2.3, Satz 7) wird dies oft weniger kritisch seiri, da der Grenzwert hierbei gleich dem Parallelmittel ist, das als endlicher arithrrietischer
5.3 Entzerrung von dicht belegten Teilgebieten
129
Term p(a, b, c, d ) (siehe 2.1.6) zur Verfugung steht. Insbesondere wird zunachst bei der Belegung der Kreuz- und T-Kurven nach sinngemaljem Befolgen von Forderung 7 eine Genauigkeitsregelung wie in Forderung 8 ohne weitere Umstande moglich sein. Die zusiitzlich in 3.1.3 genannte Moglichkeit, ein Parallelmittel ohne die Gefahr fehlertrachtiger Stellenausloschung zu ermitteln, wird erst dann eine zu beachtende Rolle spielen, wenn man zur Ermittlung von (unverzweigten) Niveaulinien in ,,feiner" Linienfuhrung (siehe 3.1.4) nach dem Verfahren aus 3.2.5 vorgeht. Dieses Verfahren realisiert j a prazise die Iterationsvorschrift aus 2.2.1, Def. 2, nur sogleich gekoppelt mit einer Fortsetzungsvorschrift fur eine einzelne Linie.
5.3 Entzerrung von dicht belegten Teilgebieten 5.3.1 Zielstellung Bereits in 3.2.6 und 3.2.7 wurde bemerkt, dalj die bisher erlauterten Verfahren dazu fuhren konnen, dalj die gewonnenen Niveaulinien in gewissen Teilgebieten zu dicht beieinander liegen. Zu dieser Frage sol1 nun speziell die Situation betrachtet werden, dai.3 zwar insgesamt (etwa durch Befolgen der Empfehlungen in Forderung 7 und 8 sowie entsprechender Wahlmoglichkeiten aus 3.2.7) eine ausreichende Trennung der Niveaulinien vorliegt, aber eben in Teilgebieten nicht. Abb. 41 zeigt ein vereinfacht konstruiertes Beispiel fur ein derartiges Niveaulinienbild.
Abb. 41 Dabei sei angenommen, dalj aus anderen Griinden (z.B. Homotopie-Erfordernisse, wenn Abb. 41 selbst als Ausschnitt eines groljeren Bildes zu betrachten ist) keine
130
5 Varianten im Arbeiten mit Genauigkeitsschranken
andere Wahl der Belegurigswerte fur die zu zeichnenderi Niveaulinien zur Diskussion steht. In solchen Fallen kann man versuchen, ob eine Entzerrung von Teilgebieten angebracht ist, wie sie eberifalls in Abb. 41 angedeutet erscheirit. 5.3.2 Ausfiihrung
Zuerst fixiert man diejeriigeri Rasterquadrate, durch die eine ungunstig groBe Zahl von Niveaulinien verlauft. Bilderi die Belegungswerte der Niveauliriien eine arithmetische Folge, so geriiigt es hierzu, diejenigeri Rasterquadrate zu finden, bei denen die Differenz zwischen Maximum und Minimum der Eckenbelegungeri einen festgelegten Wert ubersteigt; gegebenenfalls unter Herariziehurig der GrijBenordnungen, die in 5.1.2, Forderung 8 zur Verfugung stehen. In Abb. 41 wurden die drei Rasterquadrate fixiert, bei denen diese Differenz grijfier als 8 ist. Liegt dagegen keine arithmetische Folge vori Belegungswerten der Niveaulinieri vor, so wird man auf ein direktes Abzahlen derjenigen Niveaulinien zuriickgreifen, die den Rand jeweils eiries Rasterquadrats durchqueren. In einern riachsten Schritt verwendet Inan fur die fixierten Rasterquadrate die Relation, langs einer gemeinsamen Quadratseite zueinander benachbart zu sein. Zu dieser Relation bildet man die transitive Hulle (so wie dies in 3.1.2, Def. 7 fur Rasterpunkte zur Relation der wertgleichen Nachbarschaft geschah); die damit gebildete Relation sei etwa als ,,Nachbarschafts-Erreichbarkeit" bezeichnet. Es sei nun {Ql, . . . , Q m }eine Aquivalenzklasse von uritereinander ,,nachbarschafts-erreichbaren" fixierten Rasterquadraten. In einem Koordinatensystem, in dem die Rasterpunkte ganzzahlige Koordinaten haben, seieri die minimale und die maximale Abszisse von Ecken der & I , . . . ,Qm etwa a bzw. b, ferner seien die minimale und die maximale Ordinate von diesen Ecken etwa c bzw. d. Zu den Zahlen xi := a i ( i = 0 , . . . , 6 - a ) bildet man dann Zahlen x: nach folgender := b + und fur i = 1 , . . . , b - a - 1 (falls Definition: Es sei xh := a - -41 , b - a > 1 ist) seien Zahlen xi so bestinirnt, dafi alle xi ( i = 0 , . . . , b - u ) eine arithmetische Folge bilden. Mit den Ordinaten verfahrt man entsprechend: Zu den y j := c j ( j = 0 , . . . , d - c) bildet man yh := c yL-c := d und dann y j ( j= 1, . . . , d - c - 1) so, daB alle y; ( j= 0, . . . , d - c) eirie arithmetische Folge bilden. Auf diese Weise hat rrian zu den Koordiriaten (<; 71) fur je einen Eckpunkt von je einerri der Quadrate ( 6 2 1 , . . . ,Q m } neu gebildete Zahleri ( I , 71' definiert. Man beachte: Es kann auch Rasterpunkte (I;71) mit u 5 5 b und c 5 71 5 d geben, die nicht Ecke von eiriem der fixierten Quadrate (Q1,. . . ,Q m } sind. Zu solcheri (<; 71) wurden zwar auch Zahlen <',71' definiert; diese werden aber fur das Folgende nicht herangezogen. Man ninirnt namlich als nachsten Schritt die folgende Anderurig vor:
+
a,
a,
+
+
<
Definition 20. Jedes fixierte Quadrat Q wird durch dasjenige Quadrat Q' ersetzt, dessen Eck-Koordinaten die zu den Eck-Koordinaten (t; 71) von Q ge6ildeten ( < I ; 71') sind. Alle anderen Rasterpunkte bleiben ungeandert. Dabei
5.3 Entzerrung von dicht belegten Teilgebieten
131
werden also sowohl fixierte als auch moylicherweise yewisse nicht fixierte Rasterguadrate durch nicht-quadratformage Vierecke ersetzt. Auf diese geanderten Vierecke kann man die Vorschriften zur Niveaulinienbildung ubertragen. Im einzelnen sind das: die Linienfuhrung in unkritischen Vierecken (2.1.3) sowie die Iterationsvorschrift bei Verwendung des arithmetischen Mittels oder des Parallelmittels (2.2.1, Def. 2 bzw. 2.3.1). Wahlweise sind auch die Vereinfachungen der ,,graben" Linienfuhrung (3.1.4) anwendbar. Als Ubertragungsprinzipien vom quadratformigen auf den nicht-quadratformigen Fall dienen dabei folgende Festlegungen: 1. Auf den Seiten eines Vierecks erfolgt die Belegung mit Werten durch lineare Jnterpolation zwischen den Belegungen der Seiten-Endpunkte. 2. An die Stelle des Zerlegens eines Quadrates in vier Teilquadrate tritt diejenige Zerlegung eines Vierecks in vier Teiivierecke, die durch die Verbindungsstrecken der Mittelpunkte gegenuberliegender Seiten zustandekommt.
6
Angaben zum Pascal-Programm
6.1 Allgemeine Angaben 6.1.1 Grafienordnung, prinzipielle Einteilung Das Turbo-Pascal-Programrri, das diesem Bucli beigegeben ist, ist so arigelegt, dafi es fur kleine Beispielraster auf iiblichen P C lauffahig ist. Eirie der hauptsackilichen Schwierigkeiten, die hierbei zu bewaltigen war, besteht darin, daiJ der irn Ablauf auftreteride Speicherplatzbedarf sehr schnell ansteigen kanri (vgl. etwa die Bernerkurigeri in 3.1.6, Ubung 13, urid in 3.2.5, 3.3.4). Aus diesem Grurid wurde einerseits nur eine grundsatzliche Variante gewalilt; auf Verzweigungsmoglichkeiten zu den zahlreiclien anderen Varianten: die im vorangehenden Text teils ausgefuhrt, teils auch riur angedeutet sind, wurde verzichtet. Andererseits wurde die Anpassurig an die Speichernioglichkeiten von Turbo-Pascal (Version 7.0) dadurch ermoglicht, daf3 das Prograrnrri in zwei getrerinte Teile zerlegt wurde: Irri ersten Teilprogramrri VERZWGwerden die verzweigten Niveaulinieri gebildet, die das Rasterrechteck in die Endflachen zerlegen (siehe 3.1.2, Def. 9; 3.1.3, Def. 10; 3.1.6 ( l ) ,(a), (2’)). Die dabei errnittelten Dateri konnen in Files gespeichert werden, auf die d a m das zweite Teilprogranirri UNVERZWG zugreift, um die Endflachen zusarnrrienzufugen und dariri je eine unverzweigte Niveaulinie zu bilden (sielie 3.1.6, Def. 15; 3.1.7; 3.2.3; 3.2.4). Diese Niveaulinien werderi auf dern Bildschirm ausgegeben, unter gleichzeitiger Moglichkeit, den Bildschirminhalt zu weiterer Verweridurig zu speichern.
6.1.2 Zusatz- und Weiterbearbeitungsrnijglichkeiten Zu dem oben genannten allgerrieirien weitgehenden Verzicht auf das Einarbeiteti von Varianten urid Zusatzen in das Prograrnm seieri noch eiriige spezielle Hiriweise auf Programm-Mogliclikeiten zu Detailfrageri gegeben: Wie bereits in 3.2.7 ausgefuhrt, wurde von ZILLERin der Staatsexarnensarbeit [19]ein Prograrrini erarbeitet und besclirieben, rriit dem man in die Wert-Intervalle, die den Endflaclien zugeordnet sind, eine arithmetische Zahlenfolge einpassen kann. Es hat sich als untunlich erwiesen, dieses Prograrntn unverandert und unkorrinientiert diesem Buch beizufugen, und eine Wiedergabe nutzbarer Korrinientare hatte den Rahmen dieses Buches gesprengt, zumal irri Gesanitrahrnen des Ariliegens eirier global optirnierteri Niveauliniengewinnurig die Aufgabenstellurig doch nur ein Randproblem darstellt: 111 vielen Anwendungsfallen wird es nicht riotig sein, diese Einpassungsaufgabe zu losen; in arideren Fallen wird sie auch ohne den in [19] erarbeiteteri Prograrrirriieraufwand ad hoc gelost werden konrien. Moglicherweise geriugt es hierzu bereits, die in 3.2.7 gegebene Beschreibung von Verfahrensmogliclikeiten im vereinfachten Vorgehen zii befolgen. Bei genaueren Wunscheri nach eirierri dennoch rriachbaren Zugang zu dern Prograrnm ails [ 191 sind die Autoren zu Auskunften uber Mogliclikeiten der Weitergabe bereit.
6.2 Kommentare zu Ein- und Ausgabemodalitaten
133
-4hnliches gilt zu einigen anderen moglichen Vorhaben, die hier nur am Rande als aiizufugende Weiterfuhrung oder Erganzung erwahnt werden konnten. So kann z.B. ituf Wunsch eine als Pascal-Programm vorliegende Ausfuhrung der Konstruktionsvorschrift zur Eckenabrundung mitgeteilt werden (siehe 4.2). Sie liegt zur Zeit nur in der Form vor, dafl die Ecken-Koordinaten einer unverzweigten Niveaulinie einzeln eingegeben werden mussen und dafl jeweils nach Eingabe einer einzelnen Ecke die abrundenden Kreisbogen (Mittelpunkt, Anfangs- und Endpunkt) koordinatenweise ausgegeben werden. Aus den oben in 6.1.1 genannten Speicherplatzgrunden wurde also auf einen Einbau (automatischer Zugriff auf die Ecken einer Niveaulinie, automatische Umsetzung in Zeichenbefehle) in das Programm UNVERZWGverzichtet.
6.2 Kommentare zu Ein- und Ausgabemodalitaten 6.2.1 Allgemeine Hinweise zur Zahleneingabe
Zunachst ein wichtiger
Allgemeiner Hinweis: Man erreiche notigenfalls durch Addition einer Konstanten zu allen Zahlenwerten, die den Rasterpunkten zugeordnet werden sollen -, dafl alle diese Zahlenwerte positiv sind. (Der Verlauf der Niveaulinien bleibt bei einer solchen Addition unverandert.) -
Ilieses Vorgehen hat folgenden Grund: Um bei der Programmierung aus den oben erwahnten Grunden moglichst sparsam mit Speicherplatz umzugehen, wurde an mehreren Stellen das Auftreten einer Null oder negativen Zahlenangabe als Kennzeichen einer ,,Nichtexistenz" genutzt, z.B. bei Erreichen des Randes (Nichtexistenz eines benachbarten Rasterquadrates, in das hinein eine Niveaulinie fortgesetzt werden konnte) oder beim Aufsuchen einer Quadratseite (negatives Interpolationsergebnis als Kennzeichen, dafl eine Niveaulinie nicht auf einer Quadratseite endet). Als weiterer Hinweis sei die Beachtung von Forderung 7 in 5.1.1 empfohlen. Auf weitergehende Berucksichtigung von Genauigkeitsaspekten, wie z.B. in 5.2.1 und 5.2.2 (und in weiteren dort angegebenen Passagen) genannt, wurde im Programm noch verzichtet, Dies wirkt sich bei den hier zugiinglichen Rasterwerten aus folgendem Grund fast stets nicht sehr gravierend atis: Es kann zwar vorkommen, daB zwei eigentlich exakt gleiche nach 2.2.3, Satz 7 oder 2.3.2, Satz 14 auftretende Grenzwerte infolge unterschiedlicher Rechenwege vom Computer als unterschiedliche Naherungswerte erfaDt werden. Wie in 5.2.2 erlautert, entstehen dann anstelle einer Niveaulinie zwei getrennte Kurvenverlaufe. Wegen der extrem kleinen Groflenordung des Werteunterschiedes liegen aber derartige Niveaulinien nicht nur in einzelnen Regionen (wie in 5.1.2 als ,,Ineinanderlaufen" beschrieben),
134
6 Angaberi zurn Pascal-Programm
soriderri wahrend ihres gesamteri Verlaufs so nahe beieinander, dafl sie optisch nirgends unterschiedlich erscheinen, also rriit zweirnal gezeichneten Kurven dennoch das ,,richtiget' Bild liefern.
6.2.2 Hinweise zu einzelnen Ein- und Ausgaben Das Programrri VERZWGbeginrit rnit der folgenden Anforderung von Eingaben: 1. Anweisung, oh die Belegungswerte von eiriem File eingelesen werden solleri (Eingabe: j ) oder die Belegungswerte am Bildschirm eingegeben werderi sollen (Eingabe: n). 2. Angabe der Zeilenzahl zed von Rasterpunkten; d.h. Angabe, wie viele Rasterpurikte sich in jeder Spalte des Rasterrechteckes befinden sollen. 3. Arigabe der Spaltenzahl spalt von Rasterpunkten; d.h. Angabe, wie viele R.asterpunkte sich in jeder Zeile des Rasterrechtecks befinden sollen. Zu beachten ist: Dies sind Anzahleri v o ~ iRasterpunkten; die Anzahl der Rasterquadrate in jeder Spalte bzw. Zeile ist jeweils urn 1 kleiner. Wurde die Bildschirmeingabe gewalilt und sirid die Zahlen zed urid spalt eingegeben, so erscheint auf dem Bildschirm ein Tableau aus zed Zeilen urid spalt Spalten. Der Cursor befindet sich an der Stelle (zeil;spalt) = (1; 1) urid kanri zurii Eingeben der Zahlenwerte, die den Rasterpunkten zugeordnet werden solleri, r r i i t den Cursor-Tasten an die gewunschteri Stelleri ( t e i l ;spalt) bewegt werden. Die Zahlenwerte sind dann einzugeben; jede einzelne Zahleneingabe ist niit
abzuschlieflen. Dabei konneri die eirizelnen Eirigaben auch durch nochrrialiges Bewegeri des Cursors und nochmaliges Eingeben eiries Zahlenwertes uberschrieben werden. Sind auf diese Weise alle Zahleriwerte zu den Rasterwerten eingegeben, so ist die gesarrite Eingabe mit <ESC> abzuschliefien. Danach ist keine Korrektur rnehr rnoglich. Wurde zu Beginn die Option , , V ~ I I I File einlesen" gewahlt. so wird nach der Eingabe der Zeilen- und Spaltenanzahl der File-Name angefordert. Diese Eirigabe uber Einleseri eines Files ist irisbesondere dann zu wahlen, wenn man die Zahlen zeil und spalt nicht beide irri Interval1 von 1 his 10 gewahlt hat. Denri h i einer solcheri Wahl laBt sich die Eingabe der eirizelneri Belegungswerte nicht rnehr iiber das oben genannte Biltischirrn-Tableau abwickeln. Zu tlieser GroBenordnung (zeil, spalt nicht groller als 10) sei folgeride Hintergrund-Uberlegung genannt: Wie etwa aus deri Betrachtungen in 3.1.7 ersichtlich ist, kariri die Zahl und die Grofle (Anzalil vori Flachen-, Strecken- urid Punktelernenten) der Entlflachen so stark anwaclisen, daf3 selbst bei relativ kleirien Rastern der Speicherplatz nicht ausreicht. Besoriders stark kann sich in dieser Hirisicht das Aiiftreteii von vielen Vemweigungeri aiiswirkeri, das gerade bei deri in 1.4 als hauptsachliches Nutzurigsfeld geriaririteii ,,groben Rastern" vorkonimen kann. Andererseits hat sich in praktischen Beispielen erwiesen, daB man bis zur Griifienordnung 10 fur zeil und spalt sehr gute Chancen hat, rnit dem vorhanderien Speicherplatz auszukornmen: und auch fur groBere Raster bestehen gute AussichtJeri
6.2 Kommentare au Ein- und Ausgabemodalitaten
135
hierzu, vor allem, wenn man einschatzen kann, daB die Zahl der Verzweigungen sich in Grenzen halt. Um zusatzlich zu einem sinnvollen Umgang mit den GroBenordnungen beizutragen, wurde das Programm so angelegt, daB bei einem Programm- Abbruch wegen Uberschreitung einer FeldgroBe diese Ursache ausgewiesen wird und daB auch angezeigt wird, welche Liste von dieser GroBenuberschreitung betroffen war.
Wichtiger Hinweis: Zum ersten Ausprobieren der Programme wurden Voreinstellungen vorgenommen, die man entweder durch Eingabe von ubernehmen oder aber uberschreiben kann. Diese Voreinstellungen beziehen sich auf das File BELO3-05.DAT. Im Falle des Uberschreibens wahle man unbedingt andere Filenamen, da anderenfalls die Vorgabe-Files uberschrieben werden. Nach der Eingabe (einzelne Eingabe oder Einlesen vom File) werden die eingegebenen Werte in ein File BELEGUNG geschrieben, das nach Ablauf des Programms VERZWGzur Verfugung steht. Es wird allerdings beim nachsten Start dieses Programms uberschrieben. Sol1 es zu spaterer Verwendung zur Verfugung stehen, so ist es nach dem Ablauf des Programms umzubenennen. Man kann empfehlen, die neue Benennung sogleich instruktiv zu wahlen, z.B. konnte etwa BEL03-05.DAT auf eine Belegung eines Rasters mit 3 Zeilen und 5 Spalten hinweisen. 4. Eingabe von Filenamen: Wahrend des Ablaufs des Progranims VERZWGwerden ferner vier Files angelegt: File der Flachen, Strecken, Punkte und der verzweigten Niveaulinien. Auch hier empfiehlt es sich, die Namen fur diese Files instruktiv zu vergeben, also z.B. FF03-05.FIL, SF03-05.FIL, PF03-05.FIL, VF03-05.FIL. Auf diese Files kann spater das Prograrnm UNVERZWG zugreifen. 5. Eingabe des Fensterbereichs. Das ist ein Bereich, der durch vier Zahleri (Pixel-Angaben) gekennzeichnet wird: kleinster und groBter Abszissenwert (Spalten-Angaben im Bildschirm) , kleinster und grof3ter Ordinatenwert (Zeilen-Angaben im Bildschirm). Man richte diese Angaben so ein, daB das Verhaltnis (Differenz der Abszissen):(Differenz der Ordinaten) dasselbe ist wie das Verhaltnis (spatt - 1) : (zed - I) des Problembereichs. Die IBngaben unter 5. konnen nach Beendigung der Eingabe korrigiert werden. Auf dem Bildschirm erscheint die Frage Eingabe korrekt? (j/n) (j=ja, n=nein). Nach Eingabe von 'n' springt der Cursor a n die erste (erlaubte) Anderungsstelle und ist innerhalb der Moglichkeiten frei beweglich. Nach Eingabe von .:ESC> ist keine Anderung mehr moglich. 7. Bildspeicherung. Vorgesehen ist die Moglichkeit, das entstehende Bild als PCX-File zu speichern. In diesem Falle ist ein Bildname einzugeben.
136
6 Angaberi zuni Pascal-Programrn
Das Programrri UNVERZWG beginrit rriit der folgenden Anforderung von Eingaben: Eingabe der Filenarrien, die in der Rolle der Files der verzweigten Niveaulinien, der FlZchenstucke, der Strecken und der Punkte aus demjenigen Ablauf des Prograrrirris VERZWGuberriorrimen werden, an deri das Prograrnm UNVERZWG arikriupfen soll. Eingabe eiries Fileriarnens fur eiri Protokollfile. Eingabe vori spalt und zeil zur Festlegung des Problembereichs, also die Spalten- und Zeilenzahl desjeriigen Rasterrechtecks, fur das durch Ablauf des Prograrrirris VERZWGverzweigte Niveaulinien gewonnen wurden. Man kann hier also wahlweise entweder die Zahlen aus eitierri gerade eben beendeteri Ablauf des Prograrrirns VERZWGuberriehmen oder aber mit der Wahl der Zahlen spalt urid zeal aus eirierri anderen Ablauf an einen solchen Ablauf anknupfen. Eirigabe des Fensterbereichs. Das ist ein Bereich der, durch vier Zahleri (Pixel-Angaben) gekennxeichnet wird: kleinster und groBter Abszissenwert (Spalten- Angaben irri Bildschirm) , kleinster und groBter Ordinatenwert (Zeilen-Angaben im Bildschirm). Man richte diese Angaben so ein, daB das Verhaltnis (Differenz der Abszissen):(Differenz der Ordinaten) dasselbe ist wie das Verhaltnis (spalt - 1) : (zeil - 1) des Problembereichs (siehe VERZWG). Fur den Fensterbereich ist wie bei derri Prograrnm VERZWGeine Korrekturmoglichkeit gegeben. Am Ende des Ablaufs von UNVERZWG wird ein Niveaulinienbild auf dem Bildschirm ausgegeben. Das Ende dieses Ausgabe-Vorgangs und damit des gesamteri Programmablaufs ist daran ersichtlich, daf3 arri linken und rechten Rand bunte Streifen bis an die Unterkante des Bildschirms gefuhrt sind. (Bei der oberi genanriten Eingabe des Fensterbereichs berucksichtige man das Auftreten dieser Randstreifen.) Das so ausgegebene Bild ist zugleich im PCX-Format in dem File BILDO.PCX gespeichert. Dort ist als Hintergruridfarbe WeiB und als Zeichenfarbe Schwarz gewahlt. Ebenso wie oben xu den anderen im Programmablauf erstellten Files empfiehlt sich riach Ablauf des Programms eine Umbenennung dieses Bild-Files, da es beim nachsten Ablauf uberschrieben wird. Beendet wird der jeweilige Programmablauf durch Eirigabe von .
6.3 Kommentare zum Ablauf der Programme
6.3 Kommentare zum Ablauf der Programme 6.3.1 Das Programm VERZWG
Ubersicht uber den Ablauf:
(START) I procedure eingabe Eingabe der RastergroBe und Eckenbelegung
Anlegen der Koordinatenliste
procedure UP2
procedure UP10 Bestimmung der Startpunkte fur verzweigte Niveaulinien
c
I
procedure special Bestimmung weiterer Startpunkte aus Ecken-, Rand- und inneren Punkten proced.ure listen
Loschen von Startpunkten, die Rasterquadrate vom Typ 1 verbinden
procedure verzweig Erzeugung der verzweigten Niveaulinien Zeichnen der verzweigten Niveaulinien
I
(ENDE)
137
138
6 Angabcri zum Pascal-Prograrnni
Arigaberi zii einxelrien Prozeduren: Betrachtet werden sol1 eiri Raster, bestehend aus lprir := zed x spalt Rasterpunkten (zeil = Anzahl der Zeilen, spalt = Anzahl der Spalten), denen Koordinateri zugewieseri werden.
(0.0)
Realisiert wild dies in der
(0,zeil-I)
(spalt-1,O)
.
(spalt-1,zeil-1 )
procedure UP1 { Anlegeri der Koordinatenliste} Dazu sind erforderlich folgeride (globale) Typvereinbarungen: pair = record spalte, zeile: real; { Koordinaten eines Rasteryunktes} end koordliste = array[l..el] of pair und (globale) Variable: ekoord koordliste; id,spalt, lpnr: integer; Die Rasterpunkte werden Init Punktnummern 1,. . . ,lprir bezeichnet. Von ekoord werden zunachst die Komponenteri 1,.. . , lpnr rriit Koordinaten belegt. Die nichtvorhandenen Komponenteri l p n r 1, . . . , e l werden mit den Koordinateri (- 1, - 1) initialisiert . Die Nurnerierung der Purikte erfolgt zeilenweise von links nach rechts.
+
Von jedem Rasterpunkt gehen hochstens 4 Strecken aus, und zwar: von jedem der 4 Eckpunkte des Gesamtrasters: genau 2 von jedem arideren Randpunkt: genau 3 von jedem inneren Punkt: genau 4 Insgesamt hat das Raster 1snr := (zeil - 1)spalt (spalt - 1)zeil Strecken. Den Rasterpunkten werden ihre AnschluBstrecken zugewiesen. Die Realisierung erfolgt in
+
procedure UP2 { Anlegen der Punkteliste) Dazu sind erforderlich folgende (globale) Typvereinbarungen: punkte = record { Belegungswerte} bel: real; astr: array[1..4] of integer; { AnschluBstrecken} end punktliste = array[l..el] of punkte
6.3 Kommentare zum Ablauf der Programme
139
und (globale) Variable: pkt: punktliste; Die Nummern der von einem Rasterpunkt ausges, henden Strecken werden in astr[l..4] abgelegt, und s 3 5, zwar in der Reihenfolge links, oben, rechts, unten, also ( ~ 1 ,S Z , 5 3 , ~ ) . 1st eirier der Anschlusse nicht vorhanden, so erhalt die Komponente die Streckennummer 0 zugewiesen. Ebenso wird fur nichtvorhandene Punkte, also fur i = lpnr 1 . . . e l pkt[i].astr[j] := 0 fur j = 1 . . . 4 . Auf der Variablen .be1 wird spater der Belegungswert des betreffenden Rasterpunktes abgelegt. Da vorausgesetzt wird, daB alle Belegungswerte 2 0 sein mussen, wird fur i = lpnr 1. . . e l pkt[i].bel := -1 gesetzt.
-I?.-
~~
+
+
Eine Strecke im Raster ist gekennzeichriet durch ihre Streckennummer, die Nummern ihrer beiden Endpunkte und die ihrer Nachbarflachen. Die Zuweisung dieser Merkmale wird realisiert in der
procedure UP3 { Anlegen der Streckenliste} Dazu sind erforderlich folgende (globale) Typvereinbarungen: strecke = record { Streckennummer } ns: integer; {epkt Endpunktnummern} epkt,ufl: array[l..2] of integer; { afl Flachennummern} end streckenliste = umuy[l..e2] of strecke und (globale) Variable: str: streckenliste; Das Raster besteht ails lsnr = (zed - 1)spalt (spull - 1)zeil Strecken, die mit 1 . . . lsn r numeriert werden. Die Numerierung erfolgt im Wechsel, beginnend mit den waagerechten Strecken in der obersten Zeile, fortsetzend mit den in der obersten Zeile beginnenden senkrechten Strecken, danach die waagerechten Strecken der nachsten Zeile usw., jeweils von links nach rechts. Fur i = l s nr 1 . . . e2 werden die Komponenten mit dt:r Nummer 0 initialisiert. Das Gesamtraster besteht aus 1f n r := ( z e d - l)(spalt- 1) Rasterquadraten. Die Niimerierung erfolgt zeilenweise von links nach rechts.
+
+
1
3
2
4
~
1' 5
1
1
' 6
10
I
11
7
9 12
140
6 Angaben Zuni Pascal-Prograrnrn
.Jedc Strecke hat hochstens 2 Nachbarflachen, die auf afl[l..2] abgelegt werden, und z war
bei waagerediten Streckeri (Nr. der oberen Flache, Nr. der untereri Flache) bei senkrechteri Streckeri (Nr. der lirikeri Flache, Nr. der rechten Flache). Das Nichtvorhanderisein eirier Anschlufistrecke wird wieder rriit der Flachennurntrier 0 angezeigt. Als nachstes wird jedes einzelne Rasterquadrat beschrieben und in einer Flachenliste abgelegt. Ein Rasterquadrat ist charakterisiert durcli Flachennurnmer, Flacherityp und die Beschreibung seines Randes. Die Realisierung erfolgt in der
procedure UP4 { Anlegen der Flaichenliste} Daau sind erforcierlich folgende (globale) Typvereiribarurigeri:
flche = wcord nf, typ: integer; { Flachennumrner, Typ} mi, ma: real; { kleinster/grofjter Wert der Eckenbelegung} rand array[l.. 181 of integer; {Randbeschreibung} end pflche = flche: flchenliste = array[l..e3] of pflche;
urid (globale) Variable:
fl: flchenliste; Das Raster besteht aus l f n r := (zed - l)(spult - 1) Rasterquadraten, die rriit 1 . . . l f n r durchnunieriert werden, und zwar zeilenweise, links beginnend. Die Beschreiburig des R.andes eines einzelnen R,aPI ' p , sterquadrats erfolgt durch Angabe von PunktnurnSl I Inern urid Streckeririunimern irn Wechsel, beginriend rriit einer Punktnurnrner, endend mit eirier Streckennummer. Solange es sich urn Rasterquas4 s* drate handelt: rriit festern Umlaufsinri pl , s1, p2, s 2 , p31 s3, Y4r s4,
1
s3
stets beginnerid niit der linken oberen Ecke. P, p3 Zunachst werderi in rund[l..l8] Iiur die Platze 1 bis 8 belegt. Die restlichen Platze werderi spater benotigt. Sie musseri hier niit 0 iriitialisiert werden, da bei nachfolgender weiterer Randuriterteilung die Rander unterschiedlich lang werden und die 0 das R.andende anzeigt, soferri der Rand riicht die Lange 18 hat.
In der Flaclienliste fl werderi zunachst die Komporienten 1 . . .l f n r belegt. Fur i = l f n r 1 . . . e3 wird wieder das Nichtvorhandenseiri weiterer Flachen mit der Flachennunirner 0 angezeigt.
+
Die ubrigen Variableri .typ und .7ni, .7nu werden h e r rnit 0 initialisiert, die Berechnung urid Zuordnung erfolgt im spateren Programniablauf.
6.3 Kommentare zum Ablauf der Programme
141
Fur die Belegung der Rasterpunkte mit Werten bietet sich die Matrixdarstellung an. Realisiert wird dies in der
procedure eingabe. Variable (globale):
zeil, spalt: integer; belfile: text;
(lokal):
r: array[1..10,1..10] of real; Die F’rozedur stellt zwei Eingabemoglichkeiten zur Verfugung: zum einen, die Belegungswerte vom File einzulesen, zum anderen, die Werte am Bildschirm einzugeben. In beiden Fallen ist als erstes die Zeilenanzahl zeil und die Spaltenanzahl spalt einzugeben, und gegebenenfalls der Filename. Die eingegebenen Werte werden in ein File namens ’BELEG UNG’ geschrieben. Die Belegungswerte zui werden den Punkten i in der Punktliste zugewiesen, also pkt[i].beZ := wi wird gesetzt. Nach diesen Vorbereitungen kann nun die Ermittlung der Startpunkte fur verzweigte Niveaulinien beginnen. Zustandig dafur sind die Routinen
procedure UP10 die die sich aus der Typberechnung ergebenden Startpunkte ermittelt und procedure special die ermittelt, welche der Eckpunkte des Gesamtrasters, welche der Randpunkte oder der inneren Rasterpunkte ebenfalls Startpunkte fur Verzweigungen sind. D a m sind erforderlich folgende (globale) Typvereinbarungen: start = array[0..100] of integer; zerlegung = array[1..5OO] of integer; paar = record pun& an: integer; { Nr. des Startpunkts, Nr. der Anschluflstrecke) end startliste = array[0..500] of paar; ~
~
und (globale) Variable: llist: array[1..50,1..3] of integer; stp: start; / i $zerlegung; a n t startliste; lpnraster: integer;
142
6 Arigatxri zurn Pascal-Prograrrim
Ubersicht u l m deli Ablauf von procedure UP10:
(PROCEDURE II
upio)
procedure typ Typerrriittlurig fur eiri R.asterquadrat procedure mima Ermittlung des kleinsteri 11. grofiten Wertes einer Eckenbelegung if t,yp=l
I
if typ=2 Startpunkte
I
I
if t y p 2 6
procedure y c ~ m m i Berechnung des Parallelmittels
if typ=7
I
1
if typ=6,8,9
procedure tpoint Listerianderung fur T-Punkte
procedure Icflack
(HAUPTPROGRAMM) 1111Hauptprograrrirri wird zunachst stp[O]:= 0 urid k f [O] := 1f 717' gesetzt, arischliefiend werden in Ic f die ersten 1f rir Flachennummerri eingetragen. In beiden Fallen dient die Koriiporiente 0 zur Aufnahme der Anzalil der bereits belegteri Komporieriten.
Die procedure UP10 steuert die Erriiittlung der Startpurikte und die daraus resultiererideri Listerianderungeri. Fiir jedes eirlzelne Rasterquadrat mit der Flachennumrrier 71 und der Eckenbelegurig a , b, c, (1 wird rriittels der procedure t y p ( a , b, c, (1,t ) der Typ t des 71-ten R.asterquadrats errriittelt und der Variableri fl[n]^.typzugewiesen. Es erweist sich als zweckmafiig, an dieser Stelle auch gleich den kleinsten urid
143
6.3 Kommentare zum Ablauf der Programme
grofiten Wert der Eckenbelegung zu berechnen, und diese mit in der Flachenliste zu vermerken. Das erfolgt durch Aufruf der procedure rnima(a,b, c, d, fl[n]^.rni, fl[n]-.ma).
1st das Rasterquadrat vom Typ 1 , so werden innerhalb von procedure eins(i,j, k , I ) die Ekkpunkte i, j, k,1 als Startpunkte auf s t p abgelegt. 1st das Rasterquadrat vom Typ 2 (L-Typ), so werderi innerhalb von procedure zweifa, b, c, d, i, j,k , 1 ) der Rastereckpunkt mit seinen beiden Anschlussen auf llist abgelegt. 1st das Rasterquadrat, von einem Typ 2 6, so wird in procedure p a r a m i ( a , b, c, d, p a r , t ) das E’arallelmittel par berechnet, und im Falle t = 7, also bei Vorliegen eines T-Punktes, wird die erforderliche Randunterteilung und Listenanderung in procedure tpoint(a, b, c, d,par, i, j , Ic, 1, n ) vorgenommen, im Falle t 2 8, also bei Vorliegen eines Kreuz-Punktes, wird die erforderliche Randunterteilung und Listenanderung in procedure crosspoint(a,b, c, d , p a r , i, j , k , 1, n ) vorgenommen. Jeweils anschliefiend werden die neu erhaltenen Flachen (zwei bzw. vier), die nunmehr stets vom Typ 2 sind, auch der Gebietsliste kf hinzugefugt und die gerade zerlegte Flache mit der Flachennummer n aus dieser Gebietsliste entfernt. Letzteres erfolgt durch den Aufruf der procedure kfback[n]. 1st ein Rasterquadrat mit der Eckenbelegung a,b,c,d vom Typ 7, so ist dieses in zwei rechteckige Flachen zu zerlegen, wobei zwei einander gegenuberliegende Strecken unterteilt werden. Es sind vier Falle zu unterscheiden, je nachdeni ob a = b, b = c, c = d oder d = a gilt. Die Steuerung der notwendig werdenden Anderungen ubernimmt die nr2 ntp2 procedure t p o i n t ( a ,b, c, d,par, i, j , k,1, n). Den Listen mussen hirizugefugt werden s, s, 2 neue Flachen mit den Nummern f l und f 2 , 1 oder 2 neue (Teilungs-)Punkte mit den Nummern n t p l und n t p 2 1 f, sowie 3 oder 5 neue Strecken rnit den Nummern I s3’ fz I s l , 572, s3, s4, s5. Dabei sind die Verhaltnisse in den benachbarten I s, s, Flachen zu berucksichtigen, was zu weiteren FallA unterscheidungen fuhrt,. nr 1 ntpl
0
i
P
‘
I
’
’
L
i
1
144
6 Angaben zum Pascal-Programrri
Fur die rieu 1iirizukornIrierideri Flachen wird der kleiriste urid der groate Wert der Eckenbelegung berechnet .urid den betreffenden Korriporieriten in der Flachenliste f 1 zugewieseri. Die procedure seven(u, u , p u r , f 1 , f 2, yu) berechnet den Zeilen- oder Spalteriwert yu, wodurch die Zeilen- bzw. Spaltenkoordinate der rieuen Punkte n t p l , ntp2 festgelegt wird. Dariach werden die Streckeririunimern nr1,71r2 der zu uriterteileriden Strecken festgestellt, und falls ?1tp2 (aus der Unterteilung eines vorangehenden Rasterquadrats) bereits existiert, erhalt 71r2 die Streckerinurrimer 0. Die Strecke s3 rriit den Endpunkten n t p l und ntp2 urid den Nachbarflachen f l ,f 2 wird in die Streckenliste eingetragen. Die procedure newpoint tragt die Koordinaten der neuen Punkte in die Koordinatenliste ein. Die procedure change fuhrt die Listerianderurigeri durch. AnschlieBend wird der R.and der neiien Flachen f 1, f 2 beschrieben; je riach vorliegeridern Fall wird ntpl oder ntp2 in die Startpunktliste stp eingetragen, urid zurn SchluB werderi die Anzalilen der (gesamten) Punkte und Strecken entsprechend erhoht. Anderurigen, die sich auf den Rand eiries gerade betrachteten R.asterquadrats und auf dessen Nachbarflachen beziehen, werderi in der procedure chunge(nf, n s , s l , t p , s2, s3, f l , f a ) zusammengefaBt. Darin bedeuten die Parameter (in der Reihenfolge ihrer Aufzaihlung) die Numrriern der betrachteten Flache, der zu teilenden Strecke, der ersten neuen (Teil-)Streeke, des Teilungspunktes, der zweiten neuen (Teil-)Strecke, der in t p anschlieBenderi neueri Strecke und der dieser benachbarten Flachen. Die Endpunkte der Strecken s l , s2 werderi in der procedure segrnent(ns, sl, t p , s2) in die Streckenliste eingetragen. Die Anderung der Streckenanschlusse in einern bisherigen Streckenendpunkt f i werden in der procedure attach(p, s, s 1 ) in die Punkteliste eingetragen. Es folgt der StreckenanschluB i r n rieueri Purikt t p . Das Eirifugen der Streckenteilurig s l , p , s2 einer Strecke s in den Rand eirier Flache mit der Flacherinurnmer n wird von der procedure boundury(s, s l , p , s2, n ) ubernorrirneri. Zurri SchluB werderi die Anschluaflachen an die (Teil-)Streeken s l , 5-2 in die Strekkenliste eingetragen.
145
6.3 Kommentare zum Ablauf der Programme
Fur Flachen mit einem Kreuzpunkt als Startpunkt fur Verzweigungen wird die Listenanderung von der procedure crosspoint(a,b, c, d , p a r , i, j , Ic, 1, n ) ubernommen. f2 Koordinaten des KreuzpunkAls erstes werden die Koordinaten tes bestimmt. s3 Danach werden die vier zu teilenden Strecken ge- a t sucht. Dazu stehen die Prozeduren procedure suchenh(. . .), procedure suchenw (. . . ), f4 3 procedure nfsuchen(. . . ) -_ -- _ Verfugung. zur Verfugung. Die Einfuhrung der 4 neuen Teilungspunkte erfolgt mittels der procedure newpoint (. . .1. Dabei ist wieder zu berucksichtigen, dafl ein oder zwei der Teilungspunkte bereits vorhanden sein konnen. Die Einfuhrung der 4 neuen, von dem Kreuzpunkt ausgehenden Strecken erfolgt mittels der procedure newseg(. . .). Die procedure change(. . .) ubernimmt wieder die Anderungen, die sich auf den Rand des n-ten Rasterquadrats und auf dessen benachbarte Flachen beziehen. In der Punktliste werden die neuen Anschluflstrecken, in der Streckenliste die neuen Anschluflflachen eingetragen. Anschlieflend werden die Streckenanschlusse des Kreuzpunktes in die Punktliste ubern ommen. Es folgt die Beschreibung des Randes der 4 neuen Teilflachen und der Eintrag in die Flachenliste. Der Kreuzpunkt wird in die Liste stp aufgenommen. Danach werden die Anzahlen der (gesamten) Punkte und Strecken entsprechend erhoht. Zum Schlufl werden mittels der procedure minrnaz(w,par, n r ) in der Flachenliste fur die vier neuen Teilflachen noch der kleinste und groflte Wert der Eckenbelegung bestimmt und eingetragen. ~~
fI: ~~
~
s, f
~~
~~
Eine gesonderte Untersuchung hinsichtlich der Frage von Startpunkten fur verRasterpunkte selbst . Dabei wurde aus programzweigte Niveaulinien erfordern die Rasterpunkte mier-technischen Grunden eine Erweiterung des Begriffs ,,Si,artpunkt" ,,Si,artpunkt" im Vergleich mier-technischen zu der in 3.1.2, Def. 9 gegebenen Definition vorgenommen, die in den Fallunterscheidungen ihren Ausdruck findet. Die R.asterpunkte werden der Reihe nach in der special(1pnraster) procedure special(1pnraster) betrachtet. betrachtet.
146
6 Angaben zurn Pascal-Programm
1st der betreffende Rasterpunkt p einer der vier Eckpunkte des Gesarritrasters und lie@ sein Belegungswert w zwischen dem Minimum und dem Maximum der Eckenbelegung des zugehorigen Rasterquadrats, so ist dieser Punkt eiri Startpurikt. 1st der Rasterpunkt p ein Raridpurikt, d.h., er ist gemeinsamer Eckpunkt von genau zwei Rasterquadraten, und liegt w zwischen Minimum und Maximum der Eckenbelegungen beider Flachen, so ist p Startpunkt. 1st p ein innerer Punkt, d.h., er ist die gemeinsame Ecke von vier Flachen und w liegt zwischen Minimum und Maximum der Eckenbelegungen von mindestens drei der Nachbarflachen, so ist p Startpunkt. In der Routine wird zuerst festgestellt, ob es sich um eineri Eck-, Rand- oder inneren Punkt handelt . Bei den Randpunkteri sind zwei Faille zu unterscheiden: Fall 1: Fur beide Flachen ist die Bedingung erfullt. Fall 2: Die Bedingung ist nur fur eine der Flachen erfullt . Auch fur die inneren Punkte gibt es Sonderfalle zu betrachten. Namlich: Fall 1: Die Bedingung ist fur niindestens drei der Nachbarflachen erfullt. Fall 2a: Die Bedingung ist fur keine der vier Flachen erfullt, aber die Endpunkte dreier Anschlufistrecken sind mit dern gleichen Wert w belegt. Fall 2b: Die Bedingung ist fur eine Nachbarflache erfullt, und die Endpunkte von zwei der Anschluflstrecken sind mit dem gleichen Wert 20 belegt. Fall 3: Die Bedingung ist fur zwei Nachbarflachen erfullt, und die Endpunkte von einer Anschlufistrecke von p sind mit dem gleichen Wert 20 belegt.
-7
Y I'
Das Herstellen der Unterteilung rnit ihren Anschlussen wird von der procedure erzup(fnr, w,p)
vorgenommen. Dort erfolgt auch der Eintrag des Punktes rnit seinen fortzusetzenden Streckenanschlussen in die Startpunktliste anf. Das Anlegen einer Liste der Startpunkte fur Verzweigungslinien erfolgt in der procedure listen.
Begonrien wurde die Startliste bereits in der procedure special mit dem Eintrag derjenigen Startpunkte, die aus der Untersuchung der Rasterpunkte folgten. Die Anzahl der bereits vorgenommenen Eintrage gibt die Variable Zaenge an. Hinzugenommen werden mussen noch diejenigen Startpunkte, die aus der Typbetrachtung
6.3 Kommentare zum Ablauf der Programme
147
folgten, also die L-Punkte, T-Punkte und Kreuzpunkte, und die bislang nur in den Listen llist und stp abgelegt wurden. Es muB nun noch die
procedure kill angeschlossen werden, die aus der soeben aufgestellten St,artpunktkiste alle diejenigen Startpunkte mit ihrem Startanschlufi wieder entfernt, die nur benachbarte Rasterquadrate vom Typ 1 miteinander verbinden. Das Herstellen und Zeichnen der Verzweigungslinien erfolgt in der
procedure verzweig(anf,pkt,laenge,lpnr). Dafiir erforderlich ist die Typvereinbarung
folge = record wert: real; pu: array[1. .35] of integer; end
{Punktfolge einer Verzweigungslinie}
fpaar = array[l..2] of integer I3enotigt werden die (lokalen) Variablen
v: folge; fv: file of folge; nivende: boolean; Die Verzweigungslinien werden in dem File fv mit dem nach Aufforderung am Bildschirm einzugebenden Namen f v n a m e abgespeichert. Um die Berechnungen in einem anschliefienden Programm zur Erstellung der unverzweigten Niveaulinien weiterhin nutzen zu konnen, ist das Unterprogramm
procedure datasave erstellt worden. Dieses erfordert die (lokalen) Typvereinbarungen
farr = array[0..12] of integer; sarr = amay[0..4] of integer; prec = record np: integer; p : array[0..2] of real; end und die (lokalen) Variablen
ffile: file of farr; sfile: file of sarr; pjile: file of prec; fname,sname,pname: string;
148
6 Angaben zurn Pascal-Programm
Die Variablen f n u m e , snarne, p n a m e stehen als Narnen fur die Abspeicherung der Gebietsliste, Streckenliste und Punktliste und sind vorri Bildschirm nach Aufforderurig eirizugeberi. Nach Prograrrirnende kann das Arischlunprogramni UNVERZWG.EXE gestartet werden und die eben vergeberien Filenarnen als Startwerte zur Herstellung vori unverzweigten Niveaulinien eirigegeberi werden. Der Aufiau einer Verzweigurigslinien erfolgt durch das Auflisteri einer Folge vori Punkten. die nacheinander durch Strecken zu verbiriden sind. Eine solche Punktfolge erhalt inan folgendermaaen: Startpunkt fur die rn-te Verzweigurigsliriie p 4 1 ] := unf[m] .punkt. Zu diesern gehore der Wert w der Belegung. nivende := f a l s e . Man denke sich die Verzweigungslinie bis zu einem Punkte p u [ k k ] mit k k 2 1 konstruiert. p := p u [ k k ]liegt auf eirier Strecke SO, die zurri Rand eines Gebietes f7ir gehort, in welches die Link fortsetzbar ist. Der nachste Puript wird wie folgt konstruiert: Auf derri Rand von f nr wird die Strecke snr # SO gesucht, die fur das Fortsetzeri geteilt werden mun. Dazu wird die procedure weiter aufgerufen. Falls y eiri Eckpurikt eines Gebietes ist, wird zuvor die procedure corner durchlaufen. Berechnung der Koordinaten des Puriktes p n e u , der auf s n r liegt und zurn Belegungswert w gehort. Dazu wird die procedure koord aufgerufen. Definieren einer Strecke s n e u niit den Endpunkten p u [ k k ]und p n e u . Strecke snr teilen. Dazu wird die procedure prepare aufgerufen. Gebiet f n r teilen. Dies erfolgt mit dem Aufrufen der procedure fZsep. Andern der Nachbarschaftsbeziehungen durch den Aufruf der procedure contact. Alle weitern Anderungen eintragen. klc := kk + 1; pu[klc]:= p n e u ; SO := snr; fnr,,, := diejenige Nachbarflache von snr, die nickit die Nummer f n r hat. Dieser Vorgang wird solange wiederholt, bis n i v e n d e = t r u e . Das Ende einer Verzweigungslinie ist erreicht, wenn p n e u als Startpunkt in der Liste a n f vorkomrrit oder p n e u auf derri Rasterrand liegt, was durch f nr,,, = 0 angezeigt wird. Das Prograrrim kann bis hier aus folgenden Griinden abbrechen, die sowohl am Bildschirrn angezeigt als auch im Protokoll verrnerkt werden: Abbruch wegen lpnr > e l , d.h., die Punkteliste kann keine weiteren Punkte aufnehmen. Abbruch wegen lsnr > e2, d.h., die Streckenliste kann keine weiteren Strecken aufnehmen. Abbruch wegen 1f nr > e3, d.h., die Flachenliste kann keine weiteren Gebiete mehr aufnehmen.
6.3 Kommentare zum Ablauf der Programme
149
Ebenso wird angezeigt, wenn eine Verzweigungslinie zu lang wird, d.h. aus mehr als 35 Punkten besteht. In diesem Falle wird nivende := true gesetzt. Dadurch wird Iiur die Weiterbearbeitung der betreffenden Verzweigungslinie abgebrochen, das Programm beginnt mit der nachsten Verzweigungslinie. Hierbei ist jedoch das Ergebnis genauestens zu uberprufen, denn einerseits kann (mui3 aber nicht) die Verzweigungslinie an einer Stelle abbrechen, andererseits ist aber auch das fehlerfreie Weiterarbeiten des Programms nicht garantiert. Nachdem alle Verzweigungslinien gefunden wurden, kann deren graphische Ausgabe vorbereitet werden. Dafur sind einige fur das Zeichnen nutzliche Routinen, die vom speziellen Problem unabhangig sind, in dem Programm k o o r d 5 . p ~zusammengefaflt, welches mit der Include- Anweisung {$I koord5) in das Programm eingebunden ist. Das Verbinden der Punkte ubernimmt die procedure zeichnen.
6 Angaben zum Pascal-Prograinni
150
6.3.2 Das Programm UNVERZWG Ubersicht uber den Ablauf:
(START)
I
procedure dutaload Eingabe der in VERZWerzeugteri Files
I
procedure listen Herstellen der Flachen- und Streckerilisten
I
procedure verstr Erzeugen eiries Files, in dem nur diejenigen Streckeri enthalten sirid, die die Verzweigurigslinien bilden procedure problembereich procedure fensterbereich procedure korrektur Vorbereitung der Bildschirmausgabe procedure chain Herstellen eines Hornotopiegebietes Herstelleri einer unverzweigten Niveaulinie in diesem Gebiet Zeichnen der Niveaulinie
I (ENDE) Die in den) Programm VERZWGerzeugten Listen vfile der Verzweigungslinien, ffile der Flachenstucke, sfile der Strecken und pfile der Punkte musseri dem Prograrrini zur Verfugung gestellt werden. Daher mussen die Typvereinbarungen fur diese Files in beiden Programmen miteinander vertraglich sein. Folgeride (globale) Typvereinbarungen sirid erforderlich: pointtyp = record x,y: real; end:
6.3 Kommentare zum Ablauf der Programme
151
segmenttyp = record pl,p2: pointtyp; end; linetyp = array[1..200] of segmenttyp; f a r r = array[l..l2]of integer; pfurr = ^fan; ,fliste = arruy[l..e3] of pfarr; sarr = array[0..4]of integer; psarr = ^sarr; sliste = array[l..e2] of psarr; intarr = array[1..4] of pointtyp; prec = record np: integer; pa: array[0..2] of real; end; folge = record wert: real; pu: arruy[1..35] of integer; end; Hervorzuheben sind die folgenden Variablen von globaler Bedeutung: {File der Flachenstucke aus VERZWG) ffile: file of farr {File der Strecken aus VERZWG} sfzle: file of sarr {File der Punkte aus VERZWG} pfile: file of prec {File der Verzweigungslinien aus VERZWG} trfile: file of folge f f : array[0..200] of integer {listet die zu einem Homotopiegebiet gehorenden Flachenstucke auf} S K array[O..1OOO]of integer {enthalt nur die Streckennummern, die zu Verzweigungslinien gehoren} . Die Zuweisung der Filenamen zu den Variablen wird von der procedure dataload ubernommen. Die Organisation und das Einlesen der Daten von dem File ffile in die Flachenliste jl und von dem File sfate in die Streckenliste st erfolgt in der procedure listen. Hier wird auch die Variable f e := f alesize( f f) gesetzt.
152
6 Angaberi zum Pascal-Programm
Danach wird aus der Streckenliste eine Teilliste sv hergestellt, die nur alle diejenigen Streckenriumrrierri aufriimnit, die zu den Verzweigungslinien gehoren. Das Aussortieren und Ariordnen nach aufsteigenden Streckennummern erfolgt in der procedure verstr. Die einzelrien Flachenstucke werden nun zu Homotopiegebieten zusammengefugt, und zu je einem ausgewahlten Wert w wird eine unverzweigte Niveaulinie als Reprasentant gezeichnet. Dieses Verfahren ist in der procedure chain zusanirriengefallt . Die procedure chain stellt ein Honiotopiegebiet her und zeichriet in diesem eine unverzweigte Niveaulinie als Reprasentanten. Die Flachenstucke, die zu dem Homotopiegebiet gehoren, werden in der Liste ff abgelegt. Es ist stets f f [ l ] := fl[l]"[O], d.h. diejenige Flachennummer, die in der Flachenliste fl an erster Stelle steht. f f [ O ] enthalt die Lange der Liste ff. Die Herstellung eines Homotopiegebietes geschieht folgendermafien: Eine Laufvariable i zeigt an, wie lang die Liste ff bereits ist. Eine Variable zeiger zeigt auf die Stelle in ff, auf der ein gerade zu bearbeitendes Flachenstuck liegt. Zu Beginri wird i := 1 und zeiger := 0 gesetzt. Innerhalb einer repeat-Anweisung wird zeiger urn 1 erhoht, und es wird das Flachenstuck f f [ z e i g e r ]bearbeitet. Es sei f n r := f f [ z e i g e r ] .Um den Rand dieses Flachenstuckes zu untersuchen, muB zuerst die Stelle mf in der Liste f l gefunden werden, an der die Randcharakteristik abgelegt ist. Das ubernimrnt die procedure find, in deren Ergebnis ein mf so gefunden wird, dafi f l [ m f ] - [ O= ] f n r . Die Randstrecken snr stehen auf den geradzahligen Komponenten f l [ m f ] ^ [ mm] ,= 2 , 4 , . . . ,12. (Sollte snr = 0 sein, so ist man mit dem Flachenstuck fertig.) Der anschlieflende Aufruf der procedure meet untersucht den Rand auf Durchlassigkeit und fugt dem bisherigen Homotopiegebiet weitere zugehorige Flachenstucke hinzu. Eine Randstrecke ist durchlassig, wenn sie nicht zu einer Verzweigungslinie gehort, d.h., ihre Nummer koninit nicht in der Liste su vor. Zur Feststellung dieses Sachverhaltes dient die function ssearch(snr), deren Funktionswert true oder false sein kann. Hat man eine durchlassige Strecke snr gefunden (fur die also ssearch(snr)=fuZse), so stehen auf sl[snr]^[3] und sl[snr]^[4] die beiden Nachbarflachen von snr. Eine von beiden ist f n r und die andere definiert eine Flache f n e u . 1st f n e u > 0 und komnit f n e u noch nicht unter den bisherigen f f [ i ] vor, so wird i := i 1 und f f [ i ] := f n e u gesetzt sowie die Lange f f [ O ] aktualisiert. Auf diese Weise wird das Homotopiegebiet stuckweise vervollstandigt. Hat man den Rand von f n r abgesucht, wird der zeiger um 1 erhoht und das nachste Flachenstuck betrachtet. Dieses Verfahren wird solange wiederholt, bis zeiger = f f [ O ] . Auf f f [ i ] ,i = 1 . . . f f [ O ] stehen dann alle Flachenstucke, die zu ein und demselben Hornotopiegebiet gehoren.
+
6.3 Kommentare zum Ablauf der Programme
-
153
(PROCEDURE CHAIN)
I
procedure queue belegt i s t e ff mit. allen Flachenstucken, die zum Homotopiegebiet gehoren I ~
I
i ~
procedure ffind Auffinden einer Flachennummer in der Liste fl
I
procedure meet Randuntersuchung eines Flachenstuckes stuckweise Erweiterung des Homotopiegebietes
r--
-
-
~
function search pruft Strecke auf Durchlassigkeit
I
I I
~
~-~
~
-
-
~
-
-
~
-.
I
procedure ffznd Auffinden einer Flachennummer in der Liste fl procedure wfind Berechnung von Minimum und Maximum der Eckenbelegungen I
I w := 0.5 * (wmin+wmax) I I for i := 1 to ff[O]do begin -
~
-
I
/procedure f ~ n ~ ( ~ ~ ~ i ~ , m ~ ) ~~-
! ~
~-
~
procedure partitzon( mf,w,pp) unterteilt die Strecken ~~-
I
'
_______~_
~
niv [il := p p -7
~
1
~
procedure fldel (mf,fe) streicht das jl [mf] aus der Liste jl 1 _ ~ ~ _ _ _ Flachenstuck _ _ _ _ ~ _ _ _ _ _ _ _ _ ~ ~
procedure draw (niv[i]) zeichnet eine Niveaulinie
1
_._
-
procedure pkoord berechnet die Koordinaten eines Punktes der Niveaulinie I -~ - ~
1
-
~
I
154
6 Angaben zum Pascal-Programm
AnschlieBend wird das Minimum wmin und Maximum wmax der Eckenbelegungen samtlicher zu dem Homotopiegebiet gehorender Flachenstucke gebildet und zu dem Wert w := 0.5 * ( w m i n w m a x ) eine Niveaulinie erzeugt. Das Aufinden der zu unterteilenden Strecken und die Berechnung der Koordinaten eines Punktes p p der Niveaulinie erfolgt mit dem Aufrufen der procedure partition. Innerhalb dieser werden die Koordinaten von p p mit der procedure pkoord berechnet. Im Ergebnis wird der Punkt in die Liste n i v eingetragen. Zu beachten ist, daB n i v mit der Lange 200 vereinbart ist (d.h., die Niveaulinie darf sich aus hochstens 200 Strecken zusammensetzen), was durchaus die Ursache eines fehlerhaften Programmablaufs oder Programmabbruchs sein kann. Nach Erzeugung des Homotopiegebietes werden die Flachennummern, die in der Liste ff enthalten sind, aus der Flachenliste fl gestrichen, so daB an erster Stelle eines Flachenstuckes steht, welches noch nicht von fl stets die Nummer fl[l]^[O] abgearbeitet wurde, und die Liste fZ wird immer kurzer. 1st fl leer, so sind alle Homotopiegebiete erzeugt worden.
+
Bereits vor dem Aufruf der procedure chain wird die graphische Bildschirrnausgabe vorbereitet. Dafur sind einige fur das Zeichnen nutzliche Routinen, die vom speziellen Problem unabhangig sind, in dem Programm koord5.pas zusammengefaat, welches mit der Include-Anweisung {$I koord5) in das Programm eingebunden ist. Bislang arbeitete das Programm mit den Problemkoordinaten im Bereich 0 5 x 5 spalt - 1 0 5 y 5 zeil - 1. Nach Aufforderung ist daher noch einmal die Spalten- und Zeilenanzahl einzugeben. Als nachstes erfolgt durch die procedure fensterbereich die Aufforderung den Fensterbereich einzugeben. Die Funktionen function xg und function yg ubernehmen die Umrechnung der Problemkoordinaten in die Bildschirmkoordinaten. Das Programm speichert das entstandene Bild im PCX-Format unter dem Namen 'biZd0.p~~'. Der Aufruf der procedure saveB WscreentoPCX( 'bildO.pcx',invers,O,0,640,480) bewirkt das Speichern des gesamten Bildschirminhalts mit der Hintergrundfarbe weiB und der Zeichenfarbe schwarz. Wenn Sie das Bild fur spatere Zwecke sichern mochten, so mussen Sie nach Programmende die Datei umbenennen, da beim nachsten Prograrnmstart dieses Bild uberschrieben wird. Nachdem das Bild gespeichert ist, kann das Programm rnit der Eingabe von <ENTER> beendet werden.
6.4 Listings
6.4 Listings 6.4.1 Das Programm VERZWG
program verzwg; { $E+ ,N+} uses crt,dos,graph; const el=700; e2=1750; e3=1100; pair=record spalte,zeile:real; end; koordliste=array11. .ell of pair; punkte=record be1:real; astr:arrayCl..41 of integer; end; punktliste=arrayCl..ell of punkte; strecke=record ns:integer; epkt ,af1:array [l . .2] of integer; end; streckenliste=arrayCl..e21 of strecke; flche=record nf ,typ:integer; mi,ma :real; rand:array C1. .I81 of integer; end; pflche=^flche; f lchenliste=arrayC1. .e31 of pflche; start=arrayCO. .lo01 of integer; zerlegung=array10. .5001 of integer; paar=record punkt,an:integer; end ; startliste=arrayCl..2001 of paar; fpaar=arrayCl..21 of integer; folge=record wert:real; pu:arrayCI. .351 of integer; end ;
155
156
6 Angaben zum Pascal-Programni
var ekoord: koordliste; m,zeil,spalt: integer; ec,gt,gm,xmax,ymax: integer; pkt: punktliste; str: streckenliste; fl: flchenliste; lpnr,lplnr,lsnr,lfnr,llaenge,laenge: integer;
lpnraster,lsnraster: integer; llist: arrayC1..50,1..31 of integer; stp: start; kf: zerlegung; anf: startliste; ff,belfile: text; fvname,name,zeilstr,spaltstr: string; ($1 koord5) procedure UP1 ; { Anlegen der Koordinatenliste} var s,sO,z: integer; begin so:=o; for z:=O t o zeil-1 do for s:=O to spalt-1 do begin so :=sO+l ; ekoord [SO] . spalte:=s ; ekoord [sol .zeile:=z; end ; lpnr :=so ; for z:=lpnr+l to el do begin ekoord [zl .spalte:=-1; ekoord [zl .zeile:=-1; end ; end ; procedure UP2 ; var i,l,s: integer; begin
{Anlegen der Punkteliste}
s:=o;
for 1:=1 to zeil do begin s :=s+l ;
pktCs1 .astr[ll :=O;
6.4 Listings
if l c z e i l then pkt [sl .astrC41 :=spalt+(l-l)*(2*spalt-l) else p k t Csl .astr 141 :=O ; if 1>1then pkt [s] .astr C21 :=pkt 1 s - s p a l t l .astr C41 else pkt [s] .astr [21 :=O; s :=s+l; for i:=s t o s + s p a l t - 2 do begin pktCi1 .astr[l] : = i - l + ( l - l ) * ( s p a l t - l ) ; if l < z e i l then pkt [il .astr 141 :=pkt Ci-13 .astr 141+I else pkt [i].astr C41 :=O; if 1>1 then pkt [i].astr [2] :=pkt [ i - s p a l t l .astr [41 else pktCi] . a s t r [ 2 1 :=O; end ; s:=i; end; s:=o;
for 1:=1 t o z e i l do begin s :=s+l; for i :=s t o s + s p a l t - 2 do pkt [i].astr [31 :=pkt Ci+ll.astr [I1 ; s :=i+l ; pkt Is1 .astr C33 :=O; end ; lplnr :=s ; for i : = l p h r + l t o e l do begin pkt Cil .be1 :=-I ; for 1:=1 t o 4 do pktCi1 .astr[lI :=O; end ; end ;
{ Anlegen der Streckenliste} procedure UP3 ; var iO,i,k,l: integer; begin iO:=1; k:=l; for 1:=1 t o z e i l do begin for i : = i O t o iO+spalt-2 do begin str Cil .epkt C11 :=k; str Cil .epkt C21: =k+l ; if l < z e i l then str[il . a f l [ 2 1 : = i - ( 1 - l ) * s p a l t
157
158
6 Angaben zum Pascal-Programm
else str Cil .af1 C2l :=O ; if 1>1 then strCil .afl[il :=i-l*spalt+l else str [il .af1 [I] :=O; k:=k+l; end ; i0:=i+spalt+i; k:=k+i; end; iO:=spalt; k:=i; for 1:=i to zeil-i do begin for i:=iO to io+spalt-i do begin str [i] . epkt [I] :=k; str [il .epkt [21 :=k+spalt; if i>iO then str Cil .af1 [I1 :=i-l*spalt else str Cil .af1 Cil :=O; if i
{ Anlegen der Flachenliste} procedure UP4 ; var iO,i,l,n: integer; begin iO:=i; n:=O; for 1:=i to zeil-1 do
6.4 Listings
begin for i:=iO to iO+spalt-2 do begin n:=n+l; f1 [nl .nf:=n; f1Cnl .typ:=O; fl Cn] .rand[ll :=i; fl[n] .rand[21 :=i+(l-l) * (spalt-1) ; f1 [nl .rand [31 :=i+l ; f1 [n] .rand [41 :=f1 [nl .rand [21 +spalt; fl[n]-.rand[51 :=i+spalt+l; fl[n]-.rand[61 :=flCnl-.randC4l+spalt-l; fl[n]- .rand[7] :=i+spalt; fl[n] .rand[8] :=f1 [nl-.randC43-1; end ; i0:=i+2; end ; lfnr:=n; for n:=1 to lfnr do for 1:=9 to 18 do fl[nI-.randCll:=O; for n:=lfnr+I to e3 do begin f1 [nl .nf:=O; f1 [nl .typ := O ; for 1:=1 to 18 do flCnl-.randClI:=O; end ; end ;
-
-
-
procedure eingabe; var r: array [I. . l o , 1..I01 of real; i,j,m: integer; mi,ma: real; parkchar,ant: char; numberstring: stringC71 ; helpstring: stringC61; posx,posy,code: integer; begin clrscr; ant:= ’j’ ; write ( ’Raster vom File einlesen? j/n ’) ; readln(ant) ; if (ant=’j’) or (ant=#13) then begin write(’Anzah1 der Zeilen: (zeil<=lO) 3 ’>; readln(zeilstr1 ; if zeilstrr’’ then zeil:=3 else val(zei1str ,zeil,code) ;
159
160
6 Angaben zum Pascal-Programm
’1 ; write(’Anzah1 der Spalten: (spalt<=lO) 5 readln(spaltstr) ; if spaltstr=’’ then spalt :=5 else val (spaltstr,s p a l t ,code) ; write( ’Filename= be103-05.dat ’1 ;readln(name) ; if name=” then name:=’be103-05.dat’; assign(belfile,name) ;
{$I-1
reset (belfile) ;
{$I+) if IOResult=O then for i:=l to spalt do for j:=1 to zeil do readln(belfile,r[i,jl); close(belfile) ; end; if ant=’n’ then begin clrscr; writeln0Raster eingeben:’); write( ’Anzahl der Zeilen: (zeil<=lO) ’1 ;readln(zeil) ; write( ’Anzahl der Spalten: (spalt<=lO) ’1 ;readln(spalt) ; clrscr; writeln(’Raster eingeben:’); mi:=Ieg; ma:=-mi; write(’ 1’); for i:=l to spalt-1 do write(’ ’,i,’ ’>; writeln(’ ’,spalt); write(’+’); for i:=l to (spalt-1)*7+6 do write(’-’); writeln; if zeil; end ; if zeil=lO then begin writeln(’ 10 I ’1 ; writeln(’ I ’1 ; end ; for i:=1 to spalt do for j:=1 to zeil do rCi.jl :=-I; gotoxy (6,4) ; repeat posx:=wherex; posy:=wherey; parkchar:=readkey;
6.4 Listings
161
if parkchar in [#48..#57,#46] then begin i:=(posx+l) div 7; j :=(posy-2) div 2; numberstring:=parkchar; gotoxy(posx,posy) ; write ( ’ ’>; gotoxy (posx,posy) ; write (numberstring) ; repeat gotoxy(posx+l ,posy) ; write ( ’ ’1; gotoxy(posx+l ,posy) ;
(SV-1 readln(helpstring) ; numberstring:=numberstring+helpstring; val(numberstring,r[i, jl ,code) ; if code00 then errorbeep;
w+1
numberstring:=parkchar; until (code=O) ; gotoxy(l,25); write(’[’,i,’,’,j,’l=’,r[i,jl);
gotoxy(50,25) ; write(’Ende der Eingabe: <ESC>’); if icspalt then gotoxy(posx+7,posy) else if jczeil then gotoxy(6,posy+2) else gotoxy(posx,posy) ; end ; if parkchar=#O then begin parkchar:=readkey; case parkchar of #72: if 4cwherey then gotoxy(wherex,wherey-2) ; #75: if Gcuherex then gotoxy(wherex-7, wherey) ; #77: if wherex<7*(spalt-l) then gotoxy(wherex+7,wherey); #80: if wherey<2*(zeil-1)+3 then gotoxy(wherex,wherey+2) ; #83: begin posx:=wherex; posy:=wherey; gotoxy(wherex,wherey); write(’ ’1;
162
6 Angaben zum Pascal-Programm
gotoxy (posx ,posy) ; end ; end ; { of case} end ; until (parkchar=#27) ; name:=’belegung’; assign(belfile,name); rewrite(belfile1; for i:=l to spalt do for j:=1 to zeil do writeln(belfile,r[i,jl); writeln(belfile,zeil); close(be1f ile) ; end ; {of ant= ’n’} for i:=l to spalt do for j:=1 to zeil do begin if r[i,jl<mi then mi:=rCi,jl; if r[i,j]>ma then ma:=r[i,jl; end ; m:=O; for j:=i t o zeil do begin for i:=l to spalt do pkt Cm+i] .be1 :=r Ci ,jl ; m:=m+spalt; end ; m:=O; end ;
{ Typemittlung} procedure typ(var a,b,c ,d :real; var t :integer) ; begin { TYP 1:) if ((a=b) and (b=c) and (c=d)) then t:=l; {TYP 2:) if ((a=b) and (b=c) and (d<>a>> or ((b=c) and (c=d) and (sob)) or ((c=d) and (d=a) and (boc)) or ((d=a) and (a=b) and (cod)) then t:=2; {TYP 3:) if ((a=b) and (((c and (da)))) or ((b=c) and (((acb) and (deb)) or ((a>b) and (d>b)))) or ((c=d) and (((act) and (bee)) or ((a>c) and (b>c)))) or ((d=a) and (((bd) and (c>d)))) then t:=3;
6.4 Listings
{ TYP 4:) if ((ab) and (b>c) and ((c>d) ((c>d) and (d>a) and ((b>c) then t :=4;
or (dca))) or or (aa))) or or (a>b)))
{ Q P 5:)
if ((acb) and (dcc) and (((acd) and (bee)) or ((a>d) and (b>c)))) or ((a>b) and (d>c) and (((a>d) and (b>c)) or ((acd) and (bee)))) then t:=5; {TYP 6:) if (a=c) and (b=d) and (boc) then t :=6; { TYP 7:) if (((a=b) or (c=d)) and (cca) and (d>b)) or (((a=b) or (c=d)) and (c>a> and (deb)) or (((a=d) or (b=c)) and (bca) and (c>d)) or (((a=d) or (b=c)) and (b>a) and (ccd)) then t:=7; {TYP 8:) if (((acb) and (acd) and (ccb) and (ccd)) or ((a>b) and (a>d) and (c>b) and (c>d))) and (abs(c-a)=abs(d-b)) and (abs(c-a)>O> then t:=8; {TYP 9:) if (((acb) and (acd) and (ccb) and (ccd)) or ((a>b) and (a>d) and (c>b) and (c>d))) and (abs(c-a) O a b s (d-b) 1 then t:=9; end ;
procedure parami(var a,b,c,d,par:real; var t:integer) ; { Rerechnung des Parallelmittels) var i , j : integer; p,q,r,s: real; begin if t<6 then par:=O; if (t=6) or (t=8) then par:=(a+b+c+d)/4; if t=7 then if (a=b) or (a=d) then par:=a else par:=c;
163
164
6 Angaben zum Pascal-Programm
if t=9 then par:=(d*b-a*c)/(d+b-a-c) ; end ; procedure mima(a,b,c,d:real; var mi:real; var ma:real); begin if acb then begin mi:=a; ma:=b end else begin mi : =b ; ma:=a end ; if c<mi then mi:=c else if c>ma then ma:=c; if d<mi then mi:=d else if d>ma then ma:=d ; end ; procedure suchenh(g1:pflche; sp:real; var nr:integer); var m,p: integer; begin p :=gl-.rand [Sl ; if abs(ekoord[p] .spalte-sp)ekoord[p] .spalte then nr :=gl-.rand C41; end ; end ; procedure suchenv(g1:pflche; zw:real; var nr:integer); var m,p: integer; begin m:=17; repeat m:=m-2; p :=gl-.rand [m] ; until p>O; if abs (zw-ekoord[p] .zeile)<1.Oe-10 then nr :=O else begin if zw<ekoord[p] .zeile then nr :=gl^.rand [m+11; if zu>ekoord[p] .zeile then nr:=gl^.rand[m-I1 ; end ; end;
6.4 Listings
procedure nfsuchen(g1:pflche; k1:integer; var nr,platz:integer) ; var m: integer; begin m:-1; repeat m :=m+2; until (gl-.randCmJ=kl)or (m>=19); platz :=m; if m<=17 then nr:=gl-.randCm+l] else nr:=O; end ; procedure segment(s,sl,p,s2:integer); { definiert die Streckenendpunkte} begin str [sl] ,epkt 111 :=strCsl .epkt [I1 ; strCsll .epktC21 :=p; str Cs21 .epkt111 :=p; str Cs21 .epkt 121 :=str [sl .epkt C2l; end ; procedure sfind(mO,n,s:integer; var m:integer); { sucht auf dem Rand von jl[n] die Stelle m, fur die rand[m]=s nj:Flachennummer,s:Streckennummer) var k: integer; begin k:=mO; repeat k :=k+2; until (f1 Cnl . ,rand [kl =s) or (f1[nl .randCkl =O> ; m:=k; if f1[n] * .rand [k] =O then m: =O ; end ;
-
procedure boundary(s,sl,p,s2 ,n:integer) ; {Einfiigen der Streckenteilung sl,p,s2 von s in den Rand einer Flache mit der Flachennummer n } var m,ms: integer; begin ms:=O; sfind(0 ,n,s,ms) ; with flCnl- do begin
165
166
6 Angaben zum Pascal-Programm
for m:=18 downto m s + l do rand[m] :=rand[m-2] ; rand[ms+ll :=p;
if rand[ms-11 =str[s] .e p k t [11 then rand [ms] :=sl else rand [ms] :=s2 ; if rand[ms-l] =str[s] .e p k t 121 then rand [ms+2] :=sl else rand [ms+2] := s 2 ; end ; end ; procedure a t t a c h ( p , s ,sl :i n t e g e r ) ; { ersetzt die Anschluj3strecke s von p durch die Strecke s l } v a r m: i n t e g e r ; begin for m : = l t o 4 do if p k t Cpl .astr [m] =s then p k t Cpl .astr [ml :=sl; end ; procedure change (nf , n s ,sl ,t p , s 2 , s3, f 1,f 2 :i n t e g e r ) ; v a r kk: i n t e g e r ;
begin { Streckenendpunkte} segment(ns,sl,tp,s2) ;
{ Anderung der Streckenanschliisse vorhandener Punkte}
a t t a c h ( s t r [ n s ] .epkt[11 , n s , s l ) ; a t t a c h ( s t r [nsl .epkt [21 , n s ,s 2 ) ;
{ Streckenanschluj3 des neuen Punktes} if p k t [ s t r [ n s ] .epkt[l]] .astr[3]=sl then kk:=O else k k : = l ; p k t [tp] .astr [l+kk] :=sl; p k t [tp] . astr [3+kk] :=s2; if s t r [ns] .af 1[ 11=nf then kk : =O else kk :=2 ; if p k t [tp] ,astr [l] =sl then p k t [tp] .astr [2+kk] :=s3 else p k t [ t p l .astr [l+kkl := s 3 ; { Anderung des Randes vorhandener Flachen} if s t r [nsl .af 1 [I1 =nf then k k : = s t r [ n s ] . a f l [ 2 ] else k k : = s t r [ n s l . a f l [ 1 1 ; if kk>O then boundary (ns ,sl ,t p , s 2 , kk) ; { A’nderung der Anschluj3Juchen) if s t r [ n s ] .afl[2]=nf then k k : = l else kk:=2; s t r [sll . af 1[kkl :=str[nsl .af 1[kkl ; s t r [s21 .af 1[kk] :=str[nsl .a f 1Ckkl ; if s t r [ n s l . a f 1 [ 2 l = n f then kk:=2 else k k : = l ; str[sl] . a f l [ k k ] : = f l ; strEs23 . a f l [ k k l : = f 2 ; end ;
6.4 Listings
procedure newpoint(tp:integer; w,sp,zw:real; pnr:integer); { Koordinaten des neuen Punktes} begin ekoord [tp] .zeile:=ekoord Cpnrl .zeile+zw; ekoord [tp] .spalte:=ekoord Cpnrl .spalte+sp; pkt Ctpl .be1 :=w ; end ; procedure tpoint(a,b,c ,d,par:real; i ,j,k , 1,n:integer); { Listenanderungrn fur Flachen vom Typ 7, mit T-Punkt als Startpunkt} var fl,f2,sl,s2,s3,s4,s5,ntpl,ntp2: integer; q,x,y: real; kl,k2,k3,kk,mk,ml,nrl,nr2,ml: integer; procedure seven(u,v,w:real; nl,n2:integer; var qu:real); begin qu:=abs( (u-w)/ (u-v) ) ; if u<w then begin f1[nil .mi:=u; f1 Cnll .ma:=w; f1Cn2l-.mi:=w; f1 Cn21-.ma:=v; end else begin fl Cnll-.mi:=w; fl Cnll .ma:=u; f1Cn21 .mi:=v; f1 Cn21-.ma:=w; end ; end ;
-
-
-
begin fi:=lfnr+l; f2:=lfnr+2; flCfll-.nf:=fl; fl[f2]-.nf:=f2; ntpl:=lpnr+l; sl:=lsnr+l; s2:=lsnr+2; s3:=lsnr+3; if a=b then seven(d,c,par,fl,f2,q); if b=c then seven(a,d,par,fl,f2,q); if c=d then seven(a,b,par,fl,f2,q); if a=d then seven(b,c,par,fl,f2,q); if (a=b) or (c=d) then begin x:=ekoord[i] .spalte+q; kl :=f1Cnl .rand C31; if x>ekoordCkll .spalte then
167
168
6 Angaben zum Pascal-Programm
begin nrl : =f1 [nl .rand[4]; nr2 :=f1In] - .rand [Sl ; end ; if x<ekoord[kll .spalte then begin nrl :=f1[n] .rand121 ; m:=4; repeat m:=m+l; until fl[nl-.rand[ml=k; nr2:=f1[nl .rand[m+11 ; end ; if x=ekoord [kll .spalte then begin nrl :=f1[n] .rand[8] ; nr2:=0; end ; end ; if (a=d) or (b=c) then begin y:=ekoord[il .zeile+q; nf suchen(f 1[nl ,0,ml,m>; k2:=f1[n] - . rand [m-23 ; if y>ekoord[k2] .zeile then nrl :=f1[nl .rand [m-31 ; if ycekoord [k2] .zeile then nrl :=f1Cnl rand Em-11 ; if y=ekoordCk21 .zeile then begin if fl[n]-.rand[3l=j then nrI:=flCnl-.randC41 else nrl :=f1[nl .rand [SI ; nr2:=0; end ; if yoekoord Ck21 .zeile then if f1[n] .rand131=j then nr2 :=fl Cnl .rand C41 else nr2 :=f1[nl .rand [Sl ; end ; if nr2>0 then begin ntp2:=lpnr+2; s4:=lsnr+4; s5:=lsnr+5; str [s3] .epkt [I1 :=ntpl ; str [s31 .epkt 121 :=ntp2; str[s3] .afl[11 :=fI; strCs31 .afl[21 :=f2; end ; if (a=b) or (c=d) then begin nf suchen(f 1[nl ,l,mi ,ml>; str [f 1[n] .rand[ml+ll] . aflL21 :=fl; if f1[n] .rand[m1+31>O then str [f 1 [n] .randCml+311.af1[21 :=f1 ; str[fl[n]-.rand[m1-311 .aflC11:=f2; I .
-
-
-
A
-
169
6.4 Listings
if nr2>0 then begin newpoint(ntpl ,par,q,O,i) ; newpoint(ntp2,par, q , 0,l) ; change(n,nrl ,sl ,ntpl,s2,s3,fI,f2) ; change(n,nr2,~4,ntp2,~5,~3,fl,f2); if x<ekoordCkll .spalte then k3:=1 else k3:=3; with flCf11- do begin nf :=fl; for m:=l to k3 do rand Cml :=f1Cnl .rand Cml ; randCk3+1] :=sI; rand Ck3+21 :=ntpl ; rand [k3+3] :=s3; rand Ck3+41:=ntp2; rand Ck3+5] :=s4; nfsuchen(f1 Cn1,l,ml,ml>; for m:=O to 3 do rand Ck3+6+ml :=f1Cnl-.rand [ml+ml ; if k3=3 then str [f1 [f 11 -.rand [21] .af1C21 :=f 1 ; end; with f1 Cf21 do begin nf :=f2; randCl1 :=ntpl; rand121 :=s2; if (k3=1) then begin if f1 Cnl rand [5l=k then mk :=5 else mk: =7 ; for m:=3 to mk do randCm1 :=flCnl-.randCml; if mk=7 then str[fl[f2]-.rand[4]] .af1[21 :=f2; end ; if k3=3 then begin for m: =3 to 5 do rand Cml :=f1Cnl .randCm+21; mk:=5; end ; rand[mk+l] :=s5; rand [mk+21 :=ntp2; rand [mk+31:=s3; end ; end ; if nr2=0 then begin newpoint(ntpl,par,q,O,1) ; change(n,nrI ,s2,ntpl ,s3,sI,f1 ,f2) ;
-
A
I .
6 Angaben zum Pascal-Programm
170
s t r [sI] . af 1[I1 :=f I ; str[sI] .af1[21 : = f 2 ; str[sl] . e p k t [ l I : = f l [ n l - . r a n d [ 3 1 ; s t r [sll .epkt [21 := n t p l ; pkt [kl] .astr [41 :=sl; str [f 1[n] .rand[lOl] .aflC21 :=f 1; if fl[nI-.rand[121>0 then s t r [ f l [nl .rand[12] 1 .a f l [ 2 ] : =f 1; str[fl[n]-.rand[2ll .afl[21 : = f l ; s t r [f 1[nl .rand 1411 . af 1[21 :=f 2 ; with f l [ f l l - do begin for m : = l t o 3 do begin rand [m] :=f 1[nl .rand [ml ; rand [6+m] :=f 1[nl .rand [8+ml ; end ; rand[10] : = f l [ n l - . r a n d [ l 2 1 ; rand [4] :=sl ; rand [5] := n t p l ; rand [6l :=s2; end ; with f 1[f 21 do begin for m: =I t o 5 do rand Cml :=f 1[nl .rand [m+21 ; rand[6] :=s3; randL73 : = n t p l ; randC81 :=sI; end ; end ;
-
-
-
end ; if (a=d) or (b=c) then begin if f 1[n] .rand [31=j then kk :=O else kk :=2 ;
-
s t r [f 1[n] .rand [2] 1 .af 1[2] :=f I ;
if kk=2 then s t r [f 1[n] .rand [411 .af 1[21 :=f 1; str [f 1[n] .rand [6+kkI I .af 1[I1 :=f 2; for m: =I t o 3+kk do f 1[f 13 .rand [ml : =f 1[nl .rand [ml ; if nr2>0 then begin newpoint ( n t p l , p a r , 0 ,q,i ) ; newpoint (ntp2 , p a r , 0 ,q,j 1 ; change ( n , n r l ,sl , n t p l ,s 4 , s 3 , f 1, f 2) ;
-
change (n,nr2, s 2 , n t p 2 , s 5 , S3,f 1 ,f 2) ;
with f l [ f l l - do begin rand [4+kk] : =s2; rand [5+kk] :=ntp2 ; rand [6+kkl :=s3; rand [7+kk] := n t p l ; rand [8+kkl : = s l ;
171
6.4 Listings
if y>ekoordCk21 .z e i l e then for m: =O t o 1 do rand CS+kk+ml:=f1Cnl- .rand CS+kk+ml; end ; s t r [f 1Cf 11 - . r a n d [lO+kk] I .af 1121 :=f 1; with f 1Cf 23 do begin rand[I] : = n t p l ; randC21 :=s3; rand[3] :=ntp2; rand141 :=s5; for m: =I t o 3 do rand C4+ml :=f 1Cnl rand C4+m+kkl ; if (k2=1) or (y>ekoordCk21 . z e i l e ) then randC81 :=s4 I.
else begin for m : = 8 t o 9 do randCm1 :=fl[nl-.randCm+kkl; randC101 : = s 4 ;
end ; end ; s t r Cf 1Cf 21 .rand C811 .af 1121 :=f 2 ; end ; if nr2=0 then begin newpoint(ntpl,par,O,q,j); change (n ,n r l ,s I , n t p l ,s3, s 2 , f I ,f 2) ; with f 1Cf 11 do begin rand[4+kk] :=sl; rand [5+kk] := n t p l ; rand [6+kk] :=s2 ; for m: =7 t o 8 do rand Cm+kkl :=f 1[nl .rand Cm+2+kkl ; end ; with f 1Cf 21 do begin for m: =5 t o 8 do rand Cml :=f 1[nl - . r a n d Cm+kkl ;
-
-
-
rand C11 :=f 1Cnl rand C9+kkl ; rand C2] :=s2; rand C31 := n t p l ; rand [41 :=s3; I.
end ; s t r Cf 1Cnl .rand C8+kkl1. af 1C21 :=f 2 ; str Cfl Cnl .randClO+kkll .a f l C21 :=f 1; str Cs21. af 1[I1 :=f I ; str Cs21. af 1C21 :=f 2 ; s t r Is21 .epkt [I] :=f 1Cnl rand C9+kkl; s t r Cs2l .epkt C21 := n t p l ; p k t C f l C f 2 l ~ . r a n d [ l l l.astrC31 : = s 2 ; end ;
-
I.
end ;
172
6 Arigaben zum Pascal-Prograrnrri
if nr2>0 then begin stp COJ : =stp 101+I ; if (a=b) or (a=d) then stp Cstp COI 1 :=ntpl else stp Cstp 1011 :=ntp2; end ; if (nr2=0) and ((c=d) or (b=c)) then begin stp COI : =stp [OI +I ; stp Cstp 1011 :=ntpl ; end ; lfnr:=lfnr+2; if nr2>0 then begin lpnr:=lpnr+2; lplnr:=lplnr+2; lsnr:=lsnr+5; end else begin lpnr:=lpnr+l; lplnr:=lplnr+l; lsnr:=lsnr+3; end ; end ; procedure crosspoint(a,b ,c ,d ,par:real; i ,j ,k ,1,n :integer) ; { Listenakderung fur Flachen vom T y p 8 oder 9 mit Kreuzpunkt als Startpunkt} var tp: array[l. .51 of integer; ts: arrayC1..121 of integer; tf : array [I. .41 of integer; nrl,nr2,nr3,nr4,kk,mkk,ml,m0,p,ql,q2:integer; x,y,qul,qu2: real; procedure newseg(s,ap,ep,fl,f2:integer) ; { Eintrag einer neuen Strecke in die Streckenliste} begin with str[s] do begin epkt [ll :=ap; epkt C21 :=ep; afl[l] :=fl; aflC21 :=f2; end ; end ;
6.4 Listings
procedure minmax(x,w:real;nr:integer); { Ermittlung von Minimum und Maximum der Eckenbelegung der Flache P[nrl) begin with f 1 [nrl- do begin if x<w then begin mi:=x; ma:=w; end else begin mi :=w; ma:=x ; end ; end ; end ; begin for m:=I to 5 do tptml:=lpnr+m; for m:=l to 12 do tsCml:=lsnr+m; for m:=l to 4 do begin tf [m] :=Ifnr+m; f1 Ctf Cml I * .nf:=tf Cml end ; qul :=abs( (a-par) / (a-b) ; qu2:=abs ( (a-par) / (a-d) ) ; x:=ekoord[i] .spalte+qul; y:=ekoord[il .zeile+qu2; { Suchen der vier zu teilenden Strecken} suchenh(fl[nl ,x,nrl) ; nfsuchen(flCn1 ,jYnr2,m); nfsuchen(flCn1 ,k,nr3,m); suchenv(flCn1 ,y,nr4); if (nrl>O) and (nr4>0) then begin ql:=3; q2:=1; end else begin if nrl>O then begin qi:=2; q2:=0; end; if nr4>0 then begin ql:=l; q2:=0; end; if (nrl=O) and (nr4=0) then begin ql:=O; q2:=-1; end; end ; { Einfuhrung der neuen Teilungspunkte} newpoint(tpCq2+23 ,parYqul,qu2,i); newpoint(tp Cq2+31 ,par,0,qu2,j) ; newpoint(tpCq2+43 ,par,qul,O,l); if nrl>O then newpoint(tpC11 ,par,qul,O,i); if nr4>0 then newpoint(tpCq2+11 ,par,O,qu2,i); {Einfuhrung der neuen Strecken, die nicht auf dem Rand von P[n] liegen} newseg(tsC4+qi] ,tpC2+q21,tpC3+q21 ,tf C2l ,tf 1411; newseg(ts [7+2*q21 ,tp C2+q21,tp C4+q21,tf C3l ,tfC41) ;
173
174
6 Angaben ziirn Pascal-Programni
if nrl>O then newseg(ts[ql+ll , t p [ l I ,tp[q2+21 , t f 111 , t f [ 2 I ) else n e w s e g ( t s [ q l + l l , f l [ n I ^ . r a n d [ 3 1 ,
t p [q2+21 ,t f c11 ,tf C21) ; newseg(ts[ql+31 ,tp[q2+11 ,tp[q2+2] , t f [ l l ,tf[31)
if nr4>0 then else begin
nfsuchen(fl[n] ,O,m,mO); newseg(ts [q1+31 , f l [nl .randCmO-21 , tp[q2+21 , t f [I1 ,tf [31);
-
end ; (Anderungen, die sich auf den Rand von p[n] beziehen urid auf benachbarte Flachen) change(n,nr2,ts[2+ql] ,tp[3+q2] ,ts[8+2*q2] , t s [ 4 + q l l , t f [ 2 1 , t f [ 4 1 ) ; change ( n , n r 3 , t s [9+2*q21 ,tp[4+q2] , t s [IO+2*q21 , t s [7+2*q21 ,tf [31 , t f C41) ; if nrl>O then c h a n g e ( n , n r l , t s [ 1 ] , t p [ 1 ] ,tS[21 ,tS[2+2*q21 ,tf[1] , t f [ 2 ] ) ; if nr4>0 then change(n,nr4,ts[l+2*q21 , t p [ l + q 2 ] ,tS[6+2*@1 t s [4+2*q21 , t f C11 , t f [31) ; (Anderungen bzgl. nr1 =O bzw nr4=O} if n r 1=0 then begin pkt [f 1[n] .rand [311 .astr [41 :=ts[ q l + l l ; s t r [f 1[n] - . r a n d [2] 1 .af 1[21 : =tf[I1 ; s t r [f 1[n] .rand [411 .af 1[21 :=tf[21 ;
-
end ; if nr4=0 then begin p k t [ s t r [ t s [ q l + 3 1 ] . e p k t C l I l .astr[3] :=ts[q1+3] ; if f l [ n l ^ . r a n d [ i l ] = O then kk:=O else kk:=2; s t r [ f l [ n ] ^ . r a n d [ l O + k k l ] .af1[21 : = t f [11 ; s t r [f 1[n] - . r a n d [8+kk] 1 .af 1[21 :=tfC31 ;
end ; { Streckerianschlusse des Kreuzungspunktes} with p k t Ctp C2+q21I do begin a s t r [ I ] :=ts[qI+3]; astr[2] :=ts[ql+ll ; astr [3i : = t s[q1+41; astr [41 : = t s[7+2*q21;
end ; { Herstellung des Randes der vier neuen Teilquadrate} with f 1 [ t f C411- do begin rand [ 11 := t p [2+q2] ; rand [21 : = t s[4+qll ; rand [3] := t p [3+q2] ; rand [41 : = t s[8+2*q21; rand[6] :=ts[10+2*q2] ; rand [51 :=k ;
6.4 Listings
175
rand[7] := t p [4+q21 ; rand 181 := t s[7+2*q21 ;
end; with f 1Ctf C3lI begin
do
rand [41 :=ts[7+2*q21 ; rand [2] :=ts[3+ql]; rand [3] := t p [2+q2] ; rand [5l := t p [4+q21 ; rand C6] :=ts [9+2*q21 ; rand C71 :=1; nfsuchen(flCn1 , l , m , m l ) ; if nr4=0
then begin rand [8] :=f 1Cnl - . r a n d [m1+11 ; rand [I1 :=f 1[nl .rand [m1+21 ; str Cf 1Ctf 1311 * . r a n d C811 .af 1C21 :=tfC31;
end else begin r a n d r l ] :=tp[l+q21; if s t r Its [6+2*q211. epkt C2101
then begin rand C81: =f 1Cnl-. rand Cm1+13 ; rand [9l: =f 1[nl- .randCm1+21 ; rand [lo] := t s[6+2*q21; str[fl[n]-.rand[ml+l11 . a f l [ 2 1 : = t f [ 3 1 ;
end else rand [81 :=ts [6+2*q21 ; end; end ; with f 1[tfC211- do begin kk:=O; if nrl>O then
begin r a n d r l l : = t p [ I l ; randC21 :=ts[2] ; rand [3] :=str[ts "21 1 .epkt [21; if str [ts C211. epkt 121< > j then
begin for m : = l t o 2 do randC3+ml :=flCnl-.randC3+ml; str[fl[n]-.rand[4]]
. a f l [ 2 1 : = t f [21 ; kk:=2;
end; end; if nrl=O then for m : = l t o 3 do randCml:=fl[nl~.randCm+21; rand [4+kk] :=ts[q1+2] ; rand C5+kkl := t p [q2+31 ; rand [6+kk] :=ts [q1+4] ; rand [7+kkl: = t p [q2+2] ; rand [8+kk] := t s[ q l + l l ; end ;
176
6 Angaben zum Pascal-Programm
if (nrl>O) and (str[ts[l]] .epktCIl=i) then kk:=O else kk:=2; for m:=l to l+kk do fl[tf[1ll~.randCml:=flCn]~.randCml; if nrl>O then with f1Ctf C111- do begin rand[2+kk] :=ts[lI ; randC3+kkl :=tpC11; end; strCflCtfCl]l-.rand[211 .afl[21 :=tf[I] ; if (kk=O) or (nrl=O) then kk:=O else kk:=2; with f1Ctf [I1 1 do begin rand[4+kk] :=ts[l+ql] ; randC5+kkl :=tp[2+q2] ; rand [6+kk] :=ts [3+ql] ; if nr4>0 then begin rand[7+kk] : =tp [l+q2] ; rand[8+kk] :=ts [qll ; end; end; if ((nr4>0) and (str [ts [ql]] .epkt C11 O i l or (nr4=0) then begin nfsuchen(flCn1 ,O,m,mO); if (nr4>0) then kk:=kk+2; for m:=l to 2 do flCtf Cill-.randC6+kk+ml:=flCnl^.randCmO-3+ml; str[fl[tf [llI-.randC8+kkll.aflC21:=tfC11 ; end ; stp LO1 :=stp LO1 +I ; stp [stp COI 1 :=tp C2+q21 ; if (nri>O) and (nr4>0) then begin lpnr:=lpnr+5; lplnr:=lplnr+5; Isnr:=lsnr+l2; end; if ((nri=O> and (nr4>0)) or ((nrl>O) and (nr4=0)) then begin Ipnr:=lpnr+4; Iplnr:=lplnr+4; lsnr:=lsnr+lO; end; if (nrl=O> and (nr4=0) then begin Ipnr:=lpnr+3; lplnr:=lplnr+3; lsnr:=lsnr+8; end; minmax(a,par,tf [I]); minmax(b,par,tf [2]); minmax ( c ,par,tf [4]) ; minmax (d ,par,tf C31) ; lfnr:=lfnr+4; end ; procedure weiter(f:pflche; w:real; p0:integer; var code:boolean; var snr:integer); var sO,m,ap,ep: integer; wap,wep: real; s : array [I. .41 of integer; begin sO:=snr; m:=O; code:=false; snr:=O; repeat m:=m+2;
6.4 Listings
snr:=f .rand[m] ; if (snr>O) and (snr<>sO) then begin ap:=strCsnrl .epktCll; ep:=strCsnrl .epkt[21 ; wap :=pkt Capl .be1 ; wep:=pkt Cepl .be1 ; if ( ( (wap<=w) and (w<=wep) or ((wep<=w) and (w<=aap) ) ) and (apop0) and (epop0) then code:=true; end ; until (code=true) or (snr=O) ; end;
procedure koord(w:real; snr:integer; var pneu:integer; var ecke :boolean) ; var ap,ep: integer; wap,wep,d,diff,dk,x,y: real; begin ecke :=false; ap:=str [snrl .epkt C1l ; ep:=str Csnrl .epkt C2l; wap :=pkt Capl .be1 ; wep :=pkt[epl .be1 ; if abs (w-wap)<1.Oe-10 then begin pneu:=ap; ecke:=true; end; if abs(w-wep)
end ; pneu:=lpnr+l; ekoord Cpneul .spalte:=x; ekoord [pneul .zeile:=y ;
177
178
6 Angaberi zurn Pascal-Programni
lpnr:=pneu; end ; end ; procedure placeforw(fnr,fl,p,ap,ep,ma,me: integer; ecke:boolean; var ac , m r : integer) ; { teilweise Randemnittlung der Teilfluche f l von fnr - vorwurts} var m,k: integer; begin ac:=-1; k:=O; m:=ma; repeat k:=k+2; m:=m+2; f1[f I] .rand[k] :=f1 [fnrl .rand Cm-11 ; if m>=me then m:=l; fl[fl]-.rand[k+l]:=fl[fnrl~.r~dCml ; if (ecke=true) and (f1Cfnrl .rand[ml =p> then begin ac :=O ; mr :=k+l ; end ; if (ecke=false) and ((fl[fnrl^.rand[ml=ap) or (fl[fnrl-.rand[ml=ep>) then begin mr:=k+l; if fl[fnr]^.rand[m]=ap then ac:=l else ac:=2; end ; until (ac=O) or (ac=i) or (ac=2); end ; procedure placeback(fnr,fl,p,ap,ep,ma,me:integer; ecke:boolean; var ac , m r : integer) ; { teilweise Randermittlung der Teiljlache fl von fnr - ruckwarts} var m,k: integer; begin ac:=-I; k:=O; m:=ma; repeat k:=k+2; m:=m-2; if m=-1 then m:=me-2; f1[f 11 - .rand[k] :=f1[fnrl-.rand[m+ll ; f1[f 11 - .rand[k+l] :=f1 [fnrl-.randCml ; if (ecke=true) and (fl[fnrl^.rand[ml=p) then begin ac:=O; mr:=k+l; end; if (ecke=false) and ( (f1 [fnr] - .rand [m] =ap) or (f1[fnrl - .rand Cml =ep>) then begin mr:=k+l; if fl[fnr]-.rand[m]=ap then ac:=l else ac:=2; end ; until (ac=O) or (ac=l> or (ac=2) ; end ;
6.4 Listings
179
procedure kfback(fnr: integer) ; { streicht die Fliiche f n r aus der Gebietsliste} var m,k: integer; begin m:=O; repeat m:=m+l; until kf [ml=fnr; for k:=m to kf [ O l - 1 do kf [k] :=kf[k+l]; kf [kf [O]] :=O; kf [O] :=kf LO1 -1 ; end ; procedure flsep(fnr,pa,pneu,sneu,sl,s2,sa:integer; ecke:boolean; var If:integer); { teilt die Flache fnr in zwei neue Flachen} var vg,ng,ss,pn,ma,me,ac,mr,mO,fl,f2: integer; ap,ep : integer; begin nfsuchen(f1[fnr] ,pa,mO ,ma>; nfsuchen(f1[fnrl ,0,mO,me> ; if ma<=17 then begin if ma=l then vg:=me-2 else vg:=ma-2; if ma=me-2 then ng:=l else ng:=ma+2; if (pneuof1[fnrl - .rand [vgl and (pneuof1Cf n r l .rand Cngl then begin f2:=If +2; f1 :=If+I ; fl [f 13 - .nf:=f1 ; f1Cf23-.nf :=f2; fl [f 11 - .rand[I] :=pa; f1Cf21 .rand[Il :=pa; if ecke=true then begin ap :=O ; ep :=O ; pn :=pneu; end else begin ap:=str[sal .epkt[I] ; ep:=str[sal .epkt[21 ; pn:=O; end; { Festlegung des Randes von fl} placeforw (fnr,f1 ,pn,ap,ep ,ma,me,ecke,ac , m r > ; if ac=O then f 1[f 11 .rand[mr+ll: =sneu; if ac=l then ss:=sl; if ac=2 then ss:=s2; if ac>O then begin flCflI-.rand[mr+11 :=ss;
-
180
6 Angaben zum Pascal-Programnl f 1[f 11 .rand [mr+21 :=pneu; f 1[f 13 .rand [mr+31:=sneu;
end ; { Festlegung des Randes von f2} placeback(fnr , f 2 ,p n , ap , ep ,ma,me, e m , ac , m r ) ; if ac=O then f 1[f 23 .rand[mr+ll :=sneu; if a c = i then ss:=sl; if ac=2 then s s : = s 2 ; if ac>O then begin f l [ f 2 1 -.rand[mr+ll : = s s ; f 1[f 21 * .rand [mr+23 :=pneu; f 1[f 23 .rand [mr+31 :=sneu; end ; I f :=If +2;
{ MinMaz von ff,f2} if pkt [f 1[f I] .rand [311 .b el>p k t [pal .be1 then begin f 1[f 13 . m i : =pkt Cpal .be1 ; f 1 [f 11 .ma:=f 1 [fn rl .ma; f 1[f 23 . m i :=f 1[fn rl . m i ; f 1[f 21 .ma: =pkt Cpal .be1 ; end else begin f l[fi] .mi :=f 1 [fn rl . m i ; f l [f 11 .ma:=pkt Cpal .b e l ; f 1[f 21 . m i :=pkt Cpal .be1 ; f l[f21 * .ma:=fl [ f n r l .ma; end ; {Neueintrag in die Gebietsliste} kf [kf [O] +I] :=f 1 ; kf [kf [O] +2] :=f 2 ;
-
-
-
kf [O] :=kf [O] +2 ;
{ Streichen der geteilten Fliiche aus der Gebietsliste} kfback(fnr1; end ; end ; end ; procedure c ont act ( f n r ,n ,p : i n t e g e r ) ; var m: i n t e g e r ; begin m:=O; repeat
6.4 Listings
181
m:=m+2; if str Cf1In] .rand ImlI .af1111=f nr then str [f1 [n] " .rand[ml 1 .af1 [I1 :=n else str [f1 Cnl -.randCml 1 .af1 C21 :=n; until fl[nl^.rand[m+ll=p; end ;
-
procedure prepare(s,sn,p:integer; f :pflche; var sl,s2,sa:integer); { Streckenteilung mit darauf betogenen Andemngen} var m: integer; begin sl:=lsnr+l; s2:=lsnr+2; sa:=s; segment(sa,sl,p,s2); if strrsal .aflCll=f-.nf then begin strCsll .aflCIl:=f^.nf; strCs23 .aflC11:=f-.nf; str Csl] .af1 C21 :=strCsal .af1C21 ; str CS~] .af1 C21 :=strCsal .af1C21 ; end else begin strk.11 .af1[21 :=f^.nf; strCs23 .af1[21 :=f-.nf; str CSI] .af1 111:=strCsal .af1 C11; strCs21 .af1Cil :=strCsal .af1 Cll ; end ; lsnr:=lsnr+2; { Anschlusse andern} attach(strCsa1 .epktC11,sa,sl); attach(str Csa] .epkt 121 ,sa,s2) ; { Randiindemng der Nachbarflache} if str Csal .afl [I] =f^.nf then m:=strCsal .aflC2I else m:=strCsal .aflCll; if m>O then boundary(sa,sl,p,s2,m); { Streclcenumlauj des neuen Punktes} if pkt Cstr Csal epkt C111.astr 131=sl then m:=O else m:=I ; pktrpl .astrCl+ml:=sl; pkt Cpl .astr[3+m]: =s2; if strCsa1 .aflCll=f^.nfthen m:=O else m:=2; if pktCpl .astrCll=sl then pkt Cpl .astr [2+ml:=sn else pkt [PI .astr Cl+ml :=sn;
.
end ;
182
6 Angaben zum Pascal-Programrri
procedure eins(i, j ,k,l:integer); begin stp 101 :=stp COl+4; stp[stp[Oll :=l; ~tp[~tp[Ol-ll:=k; stp [stp [01-21:=j ; stp [stp COI -31 :=i ; end ; procedure zwei (a,b,c ,d:real; i ,j,k,1:integer) ; { merkt sich die Anschluflstrecken von L-Punkten} begin llaenge:=llaenge+l; if (a=b) and (b=c) then begin llist [llaenge,11 :=j ; llist [llaenge,23 : = i ; llist [llaenge ,31:=4; end ; if (b=c) and (c=d) then begin llist [llaenge,11 :=k; llist [llaenge ,21:=I ; 11istCllaenge,31:=2; end ; if (c=d) and (d=a) then begin llist [llaenge,11 :=l; llist [llaenge,23 :=2; llist Cllaenge,31:=3; end ; if (d=a) and (a=b) then begin llist [llaenge,11 :=i ; llist [llaenge,21 :=3; llist Cllaenge,31:=4; end ; end ; procedure eriup (var f :pf lche ; w :real; n:integer) ; var s,sa,p,k,snr,sl,s2,fl,f2,m,cc,kk: integer; ww: array[1..41 of real; code,ecke: boolean; begin { t u teilende Strecke suchen} s:=-I; weiter(f ,w,n,code,s); { Koordinaten des neuen Punktes} koordcw,s ,p,ecke);
6.4 Listings
snr :=O ; { Gibt es schon eine den d e n und den neuen Punkt verbindende Strecke, falls der neue Punkt ein Rastereckpunkt ist? } if ecke=true then for k:=l to lsnr do if ( (str [kl .epkt 111=n> and (str Ckl .epkt C21 =p)) or ((str Ckl .epkt Cll =p) and (str Ckl .epkt C2l =n>1 then snr:=k; { wenn nicht, neue Strecke hinzufugen:} if snr=O then begin snr:=lsnr+l; str Csnrl .epkt C11 :=n; str [snrl .epkt C21:=p; pktrp] .bel:=w; lsnr:=snr; { Vorbereitung der Fluchenteilung} { neuer Punkt ist Rastereckpunkt} if ecke=true then begin sl :=O; s2:=O;sa:=O; end; { neuer Punkt teilt die alte Strecke s in s l und sZ} if ecke=false then prepare(s,snr,p,f ,sl,s2,sa) ; flsep(f-.nf,n,p,snr,sl,sZ,sa,ecke,lfnr); { Anderung der AnschluPfEachen} fl:=lfnr-1; f2:=lfnr; contact(f nf ,f1,p) ; contact(f nf ,f2,p) ; strCsnr1 .aflCl] :=fl; strCsnr1 .aflC21:=f2; end ; laenge:=laenge+l; anf Claengel.punkt :=n; anf Claengel .an:=snr; if ecke=false then lplnr :=lplnr+i; end ;
.
-.
procedure special(nl:integer); { untersucht, ob Rastereckpunkte Startpunkte fur verzweigte Linien sind) var k,kz,nn,ss,kk:integer; w :real; s,f ,no:arrayCl..41 of integer; begin {procedure} laenge:=O; for nn:=i to ni do { Punkt-Schleife} begin for k:=i to 4 do s Ckl :=pktCnnl .astr Ckl ; w :=pktCnnl .be1 ;
183
184
6 Angaben zum Pascal-Programm
if s [I] > O then f [I1 :=str Cs C11 1 .afl C11 if s [23 >O then f [23 :=str Cs C211.af1C23 if s C31 >O then f C3l:=str Cs C311 .af1C2l if s C41 >O then f C41 :=str[s [411.af1C11 for k:=l to 4 do no[kl:=O; kz:=O; for k:=l to 4 do if fCkl>O then begin kz :=kz+l ; no [kzl :=k; end;
{ nn ist Eckpunkt:} if (kz=l) and (flCf [no[I]]]-.mi<w) then eriup(f1Cf [no[llll ,w,nn);
else else else else
f 111 :=O; f [21:=O; f C31 :=O ; f C41 :=O;
and (w
{ nn ist Randpunkt:} if (kz=2) then begin { Randpunkt} for k:=l to 4 do noCkl:=O; kz:=O; for k:=l to 4 do begin if (f Ckl >O> and (f1Cf Ckl 1 .micw) and (w then begin kz :=kz+l ; no [kz] :=f [k] ; end; end ; if kz=2 then {Randpunkt, l.Fall} for k:=l to 2 do eriup(flCnoCk1~,w,nn>; if kz=l then begin (Randpunkt, 2.FaII) m:=O; if (s C11 > O > and (pkt Cstr Cs [I1 1 .epkt [I1 I .bel=w) and ( (no [I] =f 123 > or (no [I1 =f C31)1 then m:=l; if (s [23> O > and (pkt Cstr Cs C211 .epkt Ell 1 .bel=w) and ( (no [I] =f 131) or (no 111=f C41)) then m:=2; if (s 131>O) and (pkt Cstr Cs C311 .epkt 121I .bel=w) and ((no[l]=f [I]> or (no[l]=f C41)) then m:=3; if (s 141>O) and (pkt Cstr Cs C411 .epkt C21I .bel=u) and ( (no [I] =f C11 or (no 111=f 121) ) then m:=4; if m>O then begin eriup(f1 [no CII 1 ,w,nn>; laenge:=laenge+l;
185
6.4 Listings anf [laengel . p a t : =nn; anf Claengel .an:=s Cml ;
end ; end; {Z.Fall} end ; { Randpunkt}
{ nn ist innerer Punkt:} if (kz=4) then begin { innerer Punkt} for k:=l t o 4 do noCkl:=O; kz:=O; for k:=l t o 4 do if (f 1 [f [k] 1. .mi<w) and (w then begin kz :=kz+l; no Ckzl :=f Ckl ; end; if (kz>=3) {innerer Pvnkt, l.Fall} then for k : = l t o kz do eriup(fl[no[kl] , w y n d ; if (kz<=l) then { innerer Punkt, 2.Fall (Falle 2a und Zb)} begin k:=-l; if (pkt Cstr Cs [ll I .epkt [I] 1 bel=w) and (pkt Cstr Cs C21 I .epkt CII 3 .bel=w) and (pkt Cstr C s C311. epkt C21 I .bel<>w) and (pkt Cstr Cs 141I epkt C21 I . b e l o w ) then k := l ; if (pkt Cstr [s C31 I epkt C211 .bel=w) and (pkt Cstr Cs C411 .epkt C21 I .bel=w) and (pkt Cstr Cs C11 1 .epkt [I1 I .b e l 0 w ) and (pkt Cstr C s 121I epkt C11I . b e l o w ) then k:=2; if (pkt Cstr 1s 1111 epkt 1111 bel=w) and (pkt Cstr Cs C411 epkt C211 .bel=w) and (pkt Cstr C s C311 .epkt C21 I . b e l o w ) and (pkt Cstr Cs C211 epkt C113 . b e l o w ) then k:=3; if (pkt Cstr Cs C2lI .epkt CII I .bel=w) and (pkt Cstr Cs 131I .epkt C2l I .bel=w) and (pkt Cstr Cs C11 I epkt [I1 I . b e l o w ) and (pkt Cstr Cs C41 I .epkt 1211 . b e l o w ) then k:=4; if (kz=O) and (k>O) and (laenge>O) {Fall Za}
.
.
.
.
.
. .
.
.
then begin kz:=O;
repeat kz :=kz+l; ss :=anf [kz] .an;
186
6 Angaben zum Pascal-Programm
until (str Cssl .epkt C21 =nn) or (str [ssl .epkt 111=nn> or (kz=laenge); if (kzclaenge) or ( (kz=laenge) and ( (str [ssl .epkt C2l =MI or (str Cssl .epkt [I1=nn>)1 then begin laenge:=laenge+l; anf Claengel.punkt :=nn; anf Claengel .an :=ss ; end ; end; {Full 2a) if (kz=l) and (k>O) {Full 2bJ then begin eriup(flCnoC111 , w , M ) ; if pkt Cstr [s Ell I .epkt [I] I .bel=w then begin laenge:=laenge+l; anf Claengel.an: =s [I] ; end ; if pkt Cstr Cs C21I .epkt [ll I .bel=w then begin laenge:=laenge+l; anf Claengel ,an :=s C21; end ; if pkt Cstr Cs C3l I .epkt [21I .bel=w then begin laenge:=laenge+l; anf Claengel.an: =s C31; end ; if pkt [str [s 141I .epkt C2l I .bel=w then begin laenge:=laenge+l; anf Claengel .an: =s C41; end ; anf Claenge-11 .punkt:=nn; anf [laenge] .punkt :=nn; end ; {Full Zb} end ; { innerer Pvnkt, 2.Full} if kz=2 then begin { innerer Punkt, 3.Full) m:=O; if (no C13=f 123) and (no121=f C31) and (pkt Cstr Cs [I1 1 .epkt C111 .bel=w) then m:=l; if (no [I] =f C3l) and (no 121=f C41) and (pkt [str Cs C2l I .epkt C1l I .bel=w)
6.4 Listings
187
then m:=2; if (no[I] =f [I] ) and (no 121=f C23 1 and (pkt Cstr Cs 141I .epkt C2l I .bel=w) then m:=4; if (no [I] =f [ill and (no C2l =f C41) and (pkt [str [s [3] 1 .epkt [a] 1 .bel=w) then m:=3; if m>O then begin for k:=l to 2 do eriup(flCnoCkl1 ,w,M); laenge:=laenge+l; anf [laengel .punkt :=M; anf [laengel .an:=s Cml ; end; end; { innerer Punlct, 3.Fulf) end ; { innerer Punlct} end ; { Punkt-Schleife} end ; {procedure} procedure Uplo; {Start der Listenandemngen} var m,nl,n,t,i,j,k,l: integer; a,b,c,d,par:real; begin nl:=lfnr; llaenge:=O; for n:=l to 50 do for m:=l to 3 do llistCn,ml:=O; for n:=l to nl do begin i:=fl Cn] .randCl] ; if fl [n] .rand121>zeil*(spalt-l)+spalt* (zeil-1) then begin j:=f1Cnl-.randC53 ; k:=f1[nl-.randC71 ; 1:=f1[nl -.rand C9l; end else begin j:=f1[nl .rand[31 ; k:=fl [nl-.randC51 ; 1:=f1Cnl .randC71 ; end ; a:=pkt[i] .bel; b:=pktCjl .bel; c:=pktCkl.bel; d:=pktCll .bel; typ(a,b,c,d,t); f1 [nl .typ :=t ; mima(a, b,c ,d,f1[nl - .mi,f1Cnl .ma); if t=l then eins(i,j,k,l); if t=2 then zwei(a,b,c,d,i,j,k,l);
188
6 Angaben zum Pascal-Programm
if t>=6 then begin parami (a,b,c , d,par ,t) ; if t=7 then begin tpoint(a,b,c ,d,par,i ,j ,k,1,n>; kf [O] :=kf [O] +2; for m:=O to I do begin kf [kf [0]-m] :=lfnr-m; flClfnr-ml-.typ:=2; end ; kfback (n>; end else begin crosspoint(a,b,c ,d ,par,i ,j ,k ,I,n) ; kf [O] :=kf [01+4; for m:=O to 3 do begin kf [kf [0]-m1 :=lfnr-m; fl[lfnr-m]-.typ:=2; end ; kfback (n); end; end ; end ; llaenge:=laenge; end ;
{ Belegung der Startpunktliste} procedure listen; var kl,k2,m,ap,ep: integer; w: real; begin for m:=laenge+i to 200 do begin anf [m] .punkt :=O ; anf [ml .an :=O ; end ; kl:=laenge; for m:=l to stp[Ol do begin if stp [m] >zeil*spalt then for k2:=1 to 4 do if pkt [stp [ml I .astr Ck21 >O then begin kl :=kl+l; anf Ckll .punkt:=stp [ml ; anf [kl] .an:=pkt [stp Cml I .astr Ck21 ; end ;
6.4 Listings
if stp [ml <=zeil*spalt then begin w :=pkt [stp [mil .be1 ; for k2:=1 to 4 do if pkt [stp Em] 1 .astr Ck21 >O then begin ap:=str[pkt[stp[mll .astr[k233 .epkt[I] ; ep:=str [pkt [stp Cml I .astr Ck21 I .epkt [21; if (abs (pkt Cap] .bel-w) O then begin for m:=I to llaenge do begin kl :=kl+l ; anf [kll .punkt:=llist[m,11 ; anf [kl] .an:=pkt[llist[m,l]] .astr[llist[m,2ll; kl :=kl+l ; anf [kl] .punkt:=llist[m,11 ; anf [kl] .an:=pkt[llist[m,lll .astrCllist[m,3]1 ; end ; end ; laenge:=kl; end ; procedure streichenbu:integer; var anf :startliste; var 1aenge:integer); { streicht aus der Startliste bereits abgearbeitete Startpunkte} var m: integer; begin for m:=nu+l to laenge do anf [m-11 :=anf Cml ; anf [laengel-punkt :=O ; anf [laengel .an:=O ; laenge:=laenge-I; end ;
189
190
6 Angaben zum Pascal-Programm
procedure kill ; { loscht aus der Startpunktliste diejenigen, die nur benachbarte Rasterquadrate v o m Typ 1 verbinden} var m,ki,k2,tl,t2: integer; s,fi,f2,ap,ep: integer; begin m:=O; repeat m:=m+i; fi:=str[ml .aflCil; f2:=str[ml .aflC21; ti :=flCf 11 .typ; t2:=fl [f21-.typ; if (ti=i> and (t2=i) then begin ap:=str[m] .epktCiI; ep:=strCml .epktC21; if ekoord[ap] .zeile=ekoord [epl .zeile then begin ki:=3; k2:=1; end else begin kl :=4; k2:=2; end ; pkt Cap] .astr [kll :=O; pkt Cepl .astr Ck21 :=O; kl:=O; repeat ki :=ki+i; if anf [kil . a n = m then begin streichen(k1,anf ,laengel; ki:=ki-I; end; until ki+1=laenge; end ; until m=lsnraster; end ;
-
procedure zeichnen(v: folge) ; var kk,pl,p2: integer; xi,x2,yi,y2: real; begin setcolor(green) ; kk:=O; repeat kk:=kk+l; pi :=v .pu [kk] ; p2 :=v.pu [kk+ll ; xi : =ekoord [pi] . spalte; x2 :=ekoord Cp21 .spalte ; yl:=ekoord[pl] .zeile; y2:=ekoord[p2] .zeile; line(xg(xi1 ,yg(yI> ,xg(x2) ,Yg(@)); until v .pu [kk+2] =O ; end ;
191
6.4 Listings
procedure EGAVGA-Driver; external; { $L EGAVGA.OBJ} procedure verzweig(var anf:startliste; var pkt:punktliste; var laenge,lpnr:integer>; var v: folge; fv: file of folge; m,kk,s,nu,i: integer; j: char; listenende,nivende,ecke,code,invers: boolean; pneu,sneu,Snr,sl,s2,sa,p,fnr,fl,f2: integer; ff: fpaar; ec,gt,gm,xmax: integer; protfile: text; bildname: string; procedure datasave; type f arr:=array[O. .121 of integer; sarr=array[O . .41 of integer; prec=record np:integer; p :array 10. .21 of real; end ; var ffile: file of farr; sfile: file of sarr; pfile: file of prec; fname,sname,pname: string; f: farr; s: sarr; pu: prec; m,k: integer; begin write(’ffilename= ff35.fil ’1; readln(fname); if fname=’’ then fname:= ’ff35.fil ’ ; write(’sfilename= sf35.fil ’1; readln(sname); if sname=’ ’ then sname:= ’sf35.fil’ ; write(’pfilename= pf35.fil ’>;readln(pname); if pname=” then pname:=’pf35.fil’; writeln; writeln; writeln; writeln; writeln; writeln( ’ >
writeln; assign(ffile,fname) ;
J
,
’>;
192
6 Angaben zum Pascal-Programm
assign(sf ile,sname) ; assign(pfile,pname) ; rewrite(ffile) ; for m:=l to kf LO1 do begin f [Ol :=kfCml ; for k:=l to 12 do f [kl :=fl[f [Oll-.rand[kl; write(ffile,f) ; end ; close(ffile) ; rewrite(sf ile) ; for m:=I to lsnr do begin s COI :=m; for k:=l to 2 do begin s[k] :=str[ml .epkt Ckl ; s [k+2] :=str[m] .af1Ckl ; end ; write (sf ile ,S) ; end ; close (sfile) ; rewrite(pf ile) ; for m:=i to lpnr do begin pu .np :=m; PU.p [ol :=pkt Iml .be1 ; pu.p[ll :=ekoord[m] .spalte; pu.pC21 :=ekoordCml.zeile; write (pfile ,pu>; end ; close (pfile) ; end ; procedure flsucben(p1: integer; w:real; var fnr:integer; var nivende :boolean); var f :array[1. .41 of integer; m:integer; begin if pkt [pi] .astr [I] >O then f [I] :=str [pkt [pll .astr [I] I .af1C11 else f [11 :=O;
6.4 Listings
193
if pkt Cpll .astr C2l >O then f 121 :=strCpkttpll.astrC213.afl[2l else f C21 :=O; if pkt Cpll .astr C3l >O then f C3l :=str Cpkt [pi] .astr C3l1 .af1C2l else f C3l :=O; if pkt Cpll .astr C41>O then f C41:=str CpktCpll .astr C411 .af1C11 else f C41 :=O ; m:=O; repeat m:=m+l; until ( (f [m] o f nr) and (f1 [f [ml1* .micw) and (wcf1Cf Cml 3 * .ma)) or (m>4); if m>4 then fnr:=O else f n r : =f Cml ; end; procedure corner(pOO,pO,pl:integer; w:real; mm:integer; var laenge,fnr,pneu:integer; var anf:startliste; var ecke,nivende:boolean>; var m,kk,s,nu,ep,sl,s2,sa: integer; elz,e2z,els,e2s: real; begin m:=mm; nu:=O; {falls Strecken einer Niveaulinie als spatere Anfangsstrecken vorkommen: Streichen, Ende der Niveaulinie) if mclaenge then repeat m:=m+l; if (anf Em] .an=anf Cmml .an> then begin nu:=m; streichen(nu,anf ,laenge) ; nivende:=true; m:=m-I ; end; until m=laenge; {falls Ende noch nicht erreicht: Prtifen, ob von dein Punkt eine bereits vorhandene Strecke ausgeht, die die Niveaulinie fortsetzt} if (nu=O> then begin ep:=O; m:=O; repeat m:=m+l; if m<=4 then
194
6 Angaben zum Pascal-Programm
begin s :=pkt Cpll .astr Cml ; if (s>O) then begin if str Csl .epkt C11 =pl then ep:=str Csl .epkt C21 else ep:=str Csl .epkt C11 ; end; end ; until ((epopO) and (abs(pkt Cepl .bel-wlcl.Oe-09) or (m>4>; {falls j a : als neuen Punkt den anderen Punkt nehmen} if m<=4 then begin pneu:=ep; ecke:=true; end; {falls nein: Nachbarjlache suchen, in die Fortsetzung moglich) if m>4 then begin flsuchen(pl ,w ,fnr ,nivende) ; if fnr>0 then ecke:=false; {falls keine existiert, Ende der Niveaulinie erreicht} if fnr=0 then nivende:=true; end ; end ; end ; begin { verzweig} assign(protf ile,’prot .txt ’ ; rewrite(protf ile) ; writeln(protfile, ’Stp: ’>; for m:=i to stp[O] do writeln(protfile, ’stpC’,m,’I=’ ,stpCml1 ; writeln(protf ile,’Startliste:’1 ; for m:=l to laenge do begin writeln(protfile, ’anfC ’ ,m,’I .punkt=’, anfCm1 .punkt,’ anf[’,m,’l .an=’,anfCml.an>; end ; write(’Fi1ename fur Verzueigungslinien eingeben: vf35.fil ’>; readln(fvname) ; if fvname=’’ then fvname:=’vf35.fil’; assign(fv ,fvname ; rewrite(fv> ; m:=O; listenende:=false; repeat m:=m+l; { Beginn einer Niveaulinie} if m>laenge then listenende:=true else begin
6.4 Listings
195
nivende:=false; for kk:=l to 35 do v.puCkkl:=O; v.wert:=-I; v .wert :=pkt Canf [ml .punktl .be1 ; v.pu [I] :=anf Cml .punkt ; uriteln(protfile, ’v[’ ,m,’I .puCII=’,v.puCII); if strranf [m] .an].epkt[lJ=v.puClI then p:=strCanf [ml .an1.epktC2l else p:=str[anf Cml .an1.epktC11; kk:=l; ecke:=true; repeat kk :=kk+l ; v.pu[kkJ :=p; uriteln(protf ile ,’ver[’ ,m,’I .pu” ,kk,’I=’,v .pu[kkI ) ; { Abbruch, falls die Anzahl der Punkt groJer als die vereinbarte Dimension wird:} if p>=el then begin writeln(’ABBRUCH wegen lpnr>=’,ei,’ m=’,m); writeln(protfile, ’ABBRUCH wegen lpnr>=’,el,’ m=’,m>; close(protf ile) ; close(fv) ; readln; exit; end ; {falls Linie am Rasterrand angekommen:} if (fnr=O) and (ecke=false) then nivende:=true; {falls der eweichte Punkt ein Eckpunkt ist:} if ecke=true then begin if kk=2 then fnr:=strCanfCml .an1 .aflCll ; corner(v.pu [I] ,v.pu Ckk-I1 ,v.pu[kk] ,v.wert ,m, laenge,fnr,pneu,anf,ecke,nivende); end ; { erzwungenes Niveaulanienende ohne Programmabsturz, falls sie mehr Purikte verbindet als vereinbart; kann aber Ursache fiir spatere Programmablauflehler sein:} if (nivende=false) and (kk=35) then begin uriteln(’Linie ver[’,m,’l zu lang!!!!!!!!’); writeln(protfile,’Linie verC’,m,’] zu lang!!!!!!!’); nivende:=true; end ; if nivende=false then
196
6 Angaben zum Pascal-Programm
begin if ecke=false then begin {fulls Punkt kein Eckpunkt ist: zu teilende Strecke suchen} weiter (fl [fnr] ,v.wert ,v .pu[kk] ,code,snr) ; { Programmabbruch, falls Anzahl der Teilflachen groj3er als die vereinbarte Dimension wird} if lfnr>e3-2 then begin writeln(’Abbruch!!!!!!!!!!! lfnr>’, lfnr,’ m=’ ,m>; writeln(protfile,’Abbruch!!!!!! ! ! ! ! ! lfnr>’, Ifnr ,’ m= ’ ,m) ; close(protf ile) ; close(fv> ; readln; end ; if code=true then begin { Berechnung der Koordinaten des neuen Punktes} koord(v. wert ,snr ,pneu,ecke) ; p :=pneu; pkt [PI.be1 :=v.wert ; { neue Strecke hinzufiigen} sneu:=lsnr+l; str[sneu] .epkt[I] :=v.pu[kk] ; str [sneul .epkt C21:=p; lsnr:=sneu; { Programmabbruch, falls Anzahl der Strecken grojler als die vereinbarte Dimension wird} if 1snr>e2-l then begin writeln(’ABBRUCH wegen lsnr>’, sneu,’ m=’ ,m>; writeln(protfile,’ABBRUCH wegen lsnr>’, sneu,’ m=’,m); close(protfile) ; close(fv>; end ; { wenn kein Eckpunkt: Strecke teilen} if ecke=false then prepare (snr ,sneu,p,f1[fnrl ,sl ,s2,sa) else begin sl:=O;s2:=0;sa:=O;end;
6.4 Listings
{ Herstellung der Teilflachen} flsep(fnr ,v .pu Ckkl ,pneu ,sneu sl s2 sayecke,lfnr) ; fl:=lfnr-I; f2:=lfnr; { Anderung der Nachbarschaftsbeziehungen} contact (fnr,f1 ,pneu); contact (fnr,f2,pneu); str [sneul .aflCi3 :=fi ; str Csneul .af1121 :=f2; i:=O; repeat i :=i+2; if f1 Cf 11 rand Cil >O then begin if str[fl[fll-.rand[ill .afl[l]=fnr then str[fl[fll-.rand[ill .aflC11:=fl; if str[f 1 Cf 11 .randCil1 .af1C21 =fnr then str [fl [f11 -.rand[iIl. af1C21 :=fI; end; if f1 [f21 -.rand Ci] >O then begin if str[fl[f2l^.rand[ill .afl[l]=fnr then strCfl Cf23 .randCil 1 .af1Cll :=f2; if str[f1 Cf21 .randCil I .af1C21=fnr then str Cfl Cf11 .randCill.af1121 :=f2; end; until i=18; { Flache fur weitere Fortsetzung bestirnmen} if ecke=false then begin if str Csnrl a f l [I1 =fnr then fnr:=str[snrl .aflC21 else fnr :=strCsnrl .af1Cll ; end ; p :=pneu; end ; {falls keine zu teilende Strecke gehnden wurde:} if code=false then nivende:=true; end ; {falls der Punkt ein Eckpunkt ist:} if ecke=true then p:=pneu; end ; until nivende=true; { Niveaulinie ins File schreiben} seek(fv filesize(fv) ; I.
.
197
198
6 Angaben zum Pascal-Programm
write(fv,v) ; end ; until listenende=true; { alle verzweigten Linien gefunden} close(fv) ; uriteh(protfile,’lpnr=’,lpnr,’ lsnr=’,lsnr,’ lfnr=’,lfnr, ’ kf LO] = ’ ,k f LO1 ; close(protfile) ; { Speichern von Flachen, Strecke und Punkten:} datasave; { Vorbereitung zur graphischen Ausgabe:} nu :=m-1; gt:=detect; problembereich; fensterbereich; korrektur; { Bildspeicherung abfragen} gotoxy(l,21) ; write(’Bi1d speichern ? j/n ’1; readln(ant1; if ant=’j’ then begin write(’Bi1dname: ’) ; readln(bi1dname) ; end ; if registerbgidriver(QEGAVGA-Driver)(0 then delay(20) else delay(25) ; initgraph(gt,gm,”); ec:=graphresult; if e c 0 0 then writeln(’Graphikfeh1er: ec=’,ec); xmax:=getmaxX; ymax:=getmaxY; rectangle(fxmin,fyma,fxmax,fymin) ; moveto (500 ,1) ; outtext(name) ; reset (fv) ; { Zeichnen der Nzweaulinien:} for m:=l to nu do begin read(fv,v); zeichnen(v1; end; close(fv) ; { Bildspeicherung:} if ant=’j’ then begin invers:=true; saveBWscreentopcx(bildnameyinvers,OyOyxmaxyymax); end ;
199
6.4 Listings
setviewport(xmax-100,ymax-30,xmax-lO,ymax,clipon); clearviewport; moveto(10,lO); outtext(’ENDE ’>; readln; closegraph; end ; procedure open; var c:char; begin clrscr; window (9,8,80,25) ; writeln( ’ writeln( ’ writeln ( ’ writeln( ’
Version 1.1
writeln( ’ [Taste] repeat until keypressed; while keypressed do c:=readkey; window (1,1,80,25) ; clrscr; end ; begin {main} clrscr; open; eingabe; upl; up2; up3; clrscr; { Speicherplatz anmelden:} for m:=i to e3 do new(flCm1); UP4; stp COI :=o; for m:=O to 500 do kfCml:=O; kf COl :=lfnr; for m:=l to kfCO1 do kfCml:=m; lpnraster:=lpnr; upio; special(1pnraster); listen; kill; verzweig(anf,pkt,laenge,lpnr); { Freigabe des Speich,erplatzes:} for m:=l to e3 do dispose(flCm1); end.
-
200
6 Angaben
ziiiri
Pascal-Prograrrirri
6.4.2 Das Programm UNVERZWG
program unverzwg; uses dos,crt,graph; const e2=1750; e3=1100; type pointtyp=record x ,y:real; end; segmenttyp=record pl,p2:pointtyp; end; linetyp=array [I. .200] of segmenttyp; farr=array [ O f .I21 of integer; pfarr=-farr; fliste=array[I. .e31 of pfarr; sarr=array [ O f .41 of integer; intarr=array[l. .41 of pointtyp; p sarr= - sarr ; sliste=array[l. .e21 of psarr; prec=record np:integer; pa:array [O. .21 of real ; end; folge=record wert:real; pu:array[l. .35] of integer; end ; var ffile: file of farr; sfile: file of sarr; pfile: file of prec; vfile: file of folge; protfile: text;
{ File dcr { File IT { F i l e dw { File c h .
Fliiche7rst.iir:k(~} St,r.wkeri) Puriktr:} V~J7z.rrlezyrl7l.~Jslir~if~~~}
fname,sname,pname,vname,protname: string; { Horrr o topkycbic.t}
ff: array[o. .2001 of integer; sv : array [ O . .10001 of integer; niv: linetyp; ver: folge; fe,se,sve: integer; fl: fliste; sl: sliste; s: sarr;
{ U 7 1 1 ~ 1 ' 7 . Z l l l I ' i ~N~ lt ~~ J ~ ~ f l u l i ~ l i f ~ ]
20 1
6.4 Listings
ec,gt,gm,xmax,ymax:integer; invers: boolean; zeilstr,spaltstr: string; zei1,spalt: integer; {$I koord5)
{ Eingabe der vorhandenen Files} procedure dataload; begin writeln(’Eingabe der einzulesenden Files:’); write ( ’vfilename:= vf35.fil ’) ; readln(vname1; if vname=” then vname:=’vf35.fil’; assign(vfile,vname) ; write(’ffilename:= ff35.fil ’1 ; readln(fname) ; if fname=” then fname:=’ff35.fil’; assign(f file,fname); write( ’sfilename:= sf35.fil ’1 ; readln(sname) ; if sname=” then sname:=’sf35.fil’; assign(sf ile,sname) ; write(’pfilename:= pf35.fil ’1; readln(pname) ; if pname=” then pname:=’pf35.fil’; assign(pfile,pname) ; write(’protfilename:= niv35.prt ’ ) ; readln(protname) ; if protname=” then protname:=’niv35.prt’; assign(protf ile ,protname) ; write(’Anzah1 der Zeilen: (zeil<=lO) 3 ’1; readln(zei1str); if zeilstr=” then zeil:=3 else val(zeilstr,zeil,code) ; write (’Anzahl der Spalten: (spaltc=lO) 5 ’1 ; readln(spaltstr) ; if spaltstr=’’ then spalt:=5 else val(spaltstr,spalt,code) ; writeln; Y writeln( ’ 2 ’1; wri teln; end; 9
procedure listen ; var m,k: integer;
{ Herstellen der jliste un,d sliste}
202
6 Angaben zurn Pascal-Programm
begin reset (ffile) ; fe :=filesize(ffile) ; m:=O; while not eof(ffile1 do begin m:=m+l ; new(f1 [ml) ; for k:=O to 12 do flCml'Ckl:=O; read (ffile ,f1[ml ; writeln(protfile, 'fl[' ,m,'I=' ,flCml^COl>; end ; close(ffile) ; reset (sfile) ; se:=filesize(sfile); m:=O; while not eof(sfile1 do begin m:=m+l; new (sl Cml ; for k:=O to 4 do slCml^[kl:=O; read(sfile,sl[ml->; end ; close(sfi1e) ; end ; procedure verstr; { Herstellen eines Feldes, in dem nur diejenigen Streckennmzmern enthalten sind, die die verzweigten Niveaulinien bilden} var k,i,snr,v,j,m:integer; label 0; begin i:=O; reset (vfile) ; while not eof (vfile) do begin read(vf ile ,ver) ; k:=O; repeat k:=k+l; reset (sfile) ; repeat read(sfile,s); and (sC2l=ver.puCk+ll)) or until (((s[l]=ver.puCk])
6.4 Listings
((s[2]=ver.puCkl) and (s~1l=ver.puCk+ll))); close (sfile) ; snr:=s [O] ; i:=i+l; sv Cil :=snr ; until (ver.pu[k+21=O) or (k=34) ; end ; sv [OI :=i ; writeln(protfile, ’sv~OI=’,svCO3) ; close(vfile) ; { Sortieren der Streckennummern in sv in aufsteigender Reihenfolge:} k:=l; repeat k:=3*k+l; until k>sv [OI ; repeat k:=k div 3; for i:=k+l to svCOl do begin v:=sv[i] ; j :=i; while sv[j-kl>v do begin sv[j] :=sv[j-k] ; j :=j-k; if j<=k then goto 0; end ; 0: svCj1 :=v; end; until k=1 ; writeh(protfile,’sortiert:’); for i:=O to svCOl do
writeln(protf ile ,svCil ) ; end ; function ssearch(snr: integer) : boolean; var x , l , r : integer; begin l:=l; r:=sv[Ol; ssearch:=false; repeat x:=(l+r) div 2; if snr<svCxl then r:=x-I else l:=x+l; until (snr=sv[XI ) or (l>r); if snr=svCxl then ssearch:=true; end ;
203
204
6 Angabeii z u m Pascal-Prograrurri
procedure f l d e l (nu: i n t e g e r ; v a r f l e : i n t e g e r ) ; { Str(>ichenv i r i w Fliic he u t i s der Flachenlzste} v a r m: i n t e g e r ;
begin for m:=nu t o f l e - 1 do f l [ m l : = f l [ m + l l ; fle:=fle-1;
end ; procedure f f i n d ( f n r : i n t e g e r ; v a r mf : i n t e g e r ) ; { Aufirideri einer Flri'che rnat der Nuiriinrr f r i r in d e r Flachenlaste) begin mf:=O;
repeat mf :=mf +1;
until (fl[mf]-[o]=fnr) or (mf>fe); end ; procedure meet ( f n r ,mf : i n t e g e r ; v a r i : i n t e g e r ) ; { suclrt (iuf canem Flacheristiick ulle Nachbarfluchen, d i e uberschreitbar sand) v a r c c , c t : boolean; m,k,snr,fneu: integer;
begin m:=O;
repeat m :=m+2; s n r :=f 1Emf 1 [ml ; if s n r > o then
begin if s s e a r c h ( s n r ) = f a l s e then begin if s l [snrl - [31= f n r then f n e u : = s l [ s n r I - [ 4 1 else fneu:=sl[snr1-[31 if fneu>O then begin k:=O; ct:=false;
repeat k: =k+l; if f f [k]=fneu then c t : = t r u e ; until ( c t = t r u e ) or ( k + l > i ) ; if c t = f a l s e then begin i : = i + l ; f f [i]: = f n e u ; end;
end ;
;
6.4 Listings
end; end; until (snr=O) or (m=12); end ; procedure queue ; { Listet alle Flach,enstucke auf, die zu einem Homotopiegebiet gehoren} var i,zeiger,mf: integer; begin ffC11:=flC1l-COl; i:=l; zeiger:=O; repeat zeiger:=zeiger+l; ffind(ff [zeiger] ,mf); meet(ff Czeigerl ,mf,i); until zeiger=i; ff [O] :=i; end ; procedure wfind(mf: integer; var wmin,wmax:real) ; { ermittelt Minimum und und Maximum der Eclcenbelegung eines Flachenstuckes) var m,pnr: integer; p: prec; begin m:=-I; reset(pfile) ; repeat m :=m+2; pnr :=f1Cmf 1 Cml ; if pnr>0 then begin seek(pf ile ,pnr-1); read(pf ile ,p) ; if p .pa [O] cumin then wmin :=p .pa [OI ; if p .pa[OI >wmax then wmax :=p .pa[OI ; end ; until (pnr=O) or (m+2>11); close (pfile) ; end ;
205
206
6 Angaben zum Pascal-Programm
procedure pkoord(pl,p2:prec; w:real; var x,y:real); { berechnet die Koordinaten des neuen Punktes} var d,diff,dk: real; wl,w2: real; begin wl:=pi.pa[OI; w2:=p2.paCOl; diff:=abs(wl-w2); d:=abs( w l - w ) ; if pl .pa Ci1 =p2.pa Cil then { d.h. Spalten gleich} begin dk :=pl .pa [21-p2.pa C21 ; x :=p1 .pa C 11 ; y := p i .pa [21-d*dk/diff ; end else { d.h. Zeilen gleich} begin dk :=pi .pa [I1-p2.pa [il ; x :=pl .paC11-d*dk/dif f ; y:=pi.pa[21; end ; end ; procedure partition(mf:integer; w:real; var pp:intarr); { unterteilt die in Frage kommenden Strecken des Flachenstuckes} var k,m,snr,ap,ep:integer; pi,p2: prec; wi,w2,x,y: real; begin m:=O;k:=O; reset (pfile) ; repeat m:=m+2; snr :=f1 [mfl Cml ; if snr>O then begin ap :=sl [snr] [I] ; ep :=sl [snrl [21 ; seek(pfile,ap-I); read(pfile,pi); seek(pfile,ep-1); read(pfile,p2); wi:=pl.paCOl; w2:=p2.pa[OI ; if ((wi<w) and (w<w2)> or ((w2<w) and (w<wi)> then begin pkoord(p1 ,p2,w ,x,y) ;
-
6.4 Listings
k:=k+l ; ppEk1 .x:=x;ppCkl .y:=y; end ; if (wl=w) and (wow2) then begin k:=k+l; ppCk1 .x:=pl.pa[l] ; ppCk1 .y:=pl.pa[2] ; end ; if (u2=w) and (wl<>w) then begin k:=k+l; ppCk1 .x:=p2.pa[ll ; ppCk1 .y:=p2.paC23; end ; end; until (snr=O) or (m+2>12) ; close (pfile) ; end ; procedure drau(seg:segmenttyp); { Zeichnen einer Strecke von p l nach p 2 ) var xI,x2,yl,y2: real; begin setcolor (green) ; with seg do begin xl:=pl.x; x2:=p2.x; yl:=pl.y; y2:=p2.y; line(xg(x1) ,yg(yl) ,xg(x2) ,yg(y2)); end ; end ; procedure chain; var i,k,l,mf: integer; wmin,wmax,u: real; pp: intarr; begin queue ; l:=ff COI ; write(protfile,’l=’,l,’ wmax:=-1; umin:=l.Oe38; for i:=l to 1 do begin ffind(ff Cil ,mf); uf ind (mf ,wmin,wmax) ;
’>;
207
208
6 Angaben zum Pascal-Prograrnm
end ; w :=O .5*(umin+umax>; writeln(protfile, ’w=’ ,w>; for i:=l to 1 do begin ffind(ff [il ,mf>; writeln(protfile, ’ff[ ’ ,i,’I=’,ffCil>; for k:=l to 4 do begin pp[kl .x:=-1; ppCkl .y:=-I; end; partition(mf ,w,pp); with nivCi1 do begin pl :=pp [ll ; p2 :=pp [21 ; if (pp “21 .x=pp [I1 .x> and (pp C21.y=pp C11. y) and (pp 131 .x>-l) then p2 :=pp 131 ; fldel(mf ,fe>; end ; end ; for i:=l to 1 do draw(niv[i]>; end ; procedure open; var c:char; begin clrscr; window (9,8,80,25);
’1; writeln(’ ’>; Berechnen der Homotopiegebiete und writeln( ’ ’1; Zeichnen von unverzweigten Niveaulinien writeln( ’ ’>; Version 1.1 writeln ( ’ ’1; wr iteln( ’ ’1; Copyright ( c ) 1995/96 by E. Buchsteiner-KieBling writeln( ’ [Taste] - ’1; writeln( ’ repeat until keypressed; while keypressed do c:=readkey; window (1,1,80,25); clrscr; end ; ~
~~
procedure EGAVGA-Driver; external; { $L EGAVGA .OBJ}
~
~~
6.4 Listings
begin {main} open; clrscr; { Eingabe der mittels VERZ WG erzeugten Files:} dataload ; rewrite(protf ile) ; 1isten ; verstr; { Vorbereitung der Bildschirmausgabe:} gt:=detect; if registerbgidriver(@EGAVGA-Driver)O do begin chain; end; { Bild als PCX-File speichern, Bildname=bildO.pcx:} invers:=true; saveBWscreentopcx( ’bildO.pcx’,invers,O,O,xmax,ymax); setviewport(xmax-100,ymax-3O,xmax-lO,pax,c1ipon); clearviewport; moveto(10,lO) ; outtext(’ENDE ’) ; readln; closegraph; close(protfile) ; end. 6.4.3 Die Prozedurensammlung KOORD5
{ Pro.zedurenfur Problem-, Gerate-, Fensterkoordinaten} var wxmax,wxmin,wymax,wymin: real; fxmax,fxmin,fymax,fymin: integer; pos : array [I. .81 of integer; ant,parkchar: char; posx,posy,code: integer;
209
210
6 Angaben zum Pascal-Programm
numberstring,helpstring: string;
procedure errorbeep; begin sound(350) ; delay(100) ; nosound; end ; procedure problembereich; var wxminstr,wxmaxstr,wyminstr,wymaxstr: string; begin wxmin:=O; wxmax:=spalt-I; wymin:=O; wymax:=zeil-I; end ; procedure fensterbereich; var fxminstr,fxmaxstr,fyminstr,fymaxstr: string; begin write ( ’kleinster Abszissenwert des Fensterbereichs: 10 readln(fxminstr1; if fxminstr=” then fxmin:=lO else begin val(fxminstr,fxmin,code) ; gotoxy(46,wherey-I); writeln(fxmin:3,’ end ; write(’groi3ter Abszissenwert des Fensterbereichs: 610 readln(fxmaxstr> ; if fxmaxstr=” then fxmax:=610 else begin val(fxmaxstr,fxmax,code) ; gotoxy(46, wherey-I) ; writeln(f xmax:3,’ end ; write ( ’kleinster Ordinatenwert des Fensterbereichs: 10 readln(fyminstr1; if fyminstr=’’then fymin:=lO else begin val(fyminstr,fymin,code) ; gotoxy (46,wherey-I ) ; writeln(fymin:3,’ end ; write( ’grofiter Ordinatenwert des Fensterbereichs: 310 readln(fymaxstr) ; if fymaxstr=” then fymax:=310 else begin val (fymaxstr,fp a x , code) ;
’) ;
’1; ’1;
’1;
’) ;
’>; ’>;
6.4 Listings
gotoxy(46,wherey-1); end ;
writeln(fpax:3,’
end ; procedure korrektur; const c1=46; begin write( ’Eingabe korrekt? (j/n) ’1 ; readln(ant1; if ant=’n’ then begin gotoxy(cl,12) ; repeat posx:=wherex; posy:=wherey; parkchar:=readkey; if parkchar=#O then begin parkchar:=readkey; case parkchar of #72: if 12<wherey then gotoxy(c1 ,wherey-1) ; #80: if whereycl5 then gotoxy(c1 ,wherey+l) ; end ; {of case} end ; if parkchar in [#48. .#57] then begin numberstring:=parkchar; gotoxy(p0sx ,posy); write ( ’ ’1; gotoxy(posx ,posy); write (numberstring) ; repeat gotoxy(posx+l ,posy) ; readln(helpstring) ; numberstring:=numberstring+helpstring; if posy=l2 then val(numberstring,fxmin,code) ; if posy=l3 then val(numberstring,fxmax,code); if posy=14 then val (numberstring,fp i n , code) ; if posy=l5 then val (numberstring,fp a x ,code) ; if code00 then errorbeep; numberstring:=parkchar; until (code=O) ;
211
212
6 Angabcn zum Pascal-Programm
function xg(x:real) : integer; var p,xr: real; begin p:=(fxmax-fxmin)/(wxmax-wxmin); xr :=p*(x-wxmin) +f xmin; xg:=round(xr) ; end ; function yg(y:real) : integer; var q,yr: real; begin q:=(fymax-fymin)/(wymax-wymin) ; yr:=q*(y-wymin)+fymin; yg:=round(yr) ; end ; procedure SaveBWScreenToPCX(Fi1eName:string; invers:boolean; xl,yl,x2,y2:integer); { (c) J.-P.Kuska 1991 } const MaxX=180; DefaultExtension=’.PCX’; FileIdent=$OA; MaxRepeated=63; RepIndent=192; ByteOfPixel: array[0..7] of byte=(128,64,32,16,8,4,2,1); BitPlanes: array[O. .3] of byte=(1,2,4,8); type ImageFileType=File of byte; GraphLineStorage=array[O..MaxXl of byte; PaletteRec=record Size: integer; Colors: arrayC0. .471 of byte; end; var Linestorage: GraphLineStorage;
6.4 Listings
StorageLen: integer; PackedLine: GraphLineStorage; PackLen: integer; Image: ImageFileType; j: integer; HRes,VRes,w: integer; wbyte,bl,b2,b3: byte; p : PaletteRec; function GetSaveByte(i, j :integer): byte; var SaveByte: byte; k: integer; Activepixel : boolean; begin SaveByte:=O; for k:=O to 7 do begin ActivePixel:=(GetPixel(i+k, j)>=l) ; if ActivePixel then SaveByte:=SaveByte or ByteOfPixel[k] ; end; GetSaveByte:=SaveByte; end ; function Negative (i :integer) : boolean; begin if i) then noext :=true else noext :=false; end ; procedure MakeLine(y,xl ,x2:integer) ; var i,ii,succy: integer; c 1 ,c2: byte ; begin succy:=succ (y>;
213
214
6 Angaben zum Pascal-Prograrrim
ii:=O; i:=xl; repeat Linestorage[ii] :=GetSaveByte(i ,y) ; Inc(ii) ; Inc(i,8); until i>x2; StorageLen:=ii-1; if invers then for ii:=O to StorageLen do Linestorage[ii] :=not Linestorage[iil ; end ;
procedure SaveLine(var image : ImageFileType; y ,XI ,x2:integer) ; var i,k,c:integer; procedure Packline(LineSt0rage:GraphLineStorage; StorageLen:integer; var PackedLine:GraphLineStorage; var PackLen:integer) ; var s1,pl: integer; repCount,repByte: byte; begin sl:=O; pl:=O; repeat if ( (Linestorage[sl] and RepIndent)=RepIndent) and ( (Linestorage[s1] <>Linestorage[sl+ll) or (sl=StorageLen)) then begin PackedLine[pl] :=RepIndent+l; Inc (pl) ; PackedLine[pll :=Linestorage[sl] ; Inc (pl) ; Inc (sl) ; end else begin repCount:=l; repByte:=Linestorage[sl] ; while ( ( s l + l )<=StorageLen) and (Linestorage[s11 =LinestorageCs1+11) and (repCountcMaxRepeated1 do begin Inc(RepCount) ; Inc(s1) ; end; if repCount<>l then begin
6.4 Listings
PackedLine[pl] := (RepIndent+RepCount); Inc(pl) ; PackedLine[pl] :=RepByte; Inc(pl) ; Inc(sl) ; end else begin
PackedLine[pl] :=Linestorage[sl] ; Inc(p1) ; Inc (sl) ; end ; end ; until sl>StorageLen; PackLen:=pl-1; end ; begin { of SaveLzne } MakeLine (y ,xl ,x2) ; PackLine(Linestorage,StorageLen,PackedLine,PackLen) ; for i:=O to PackLen do Write (image ,PackedLineCil ) ; c:=(y div 6) mod 16; for i:=O to 2 do begin PutPixel(xI+i ,y,c) ; PutPixel(x2-i ,y,c) ; end ; end ; procedure IntegerSwap(var x,y:integer) ; var tmp: integer; begin tmp:=x; x:=y; y:=tmp; end ; procedure WriteInt (var f :ImageFileType; i:integer) ; var bl,b2: byte; begin bl :=hi (1) ; b2 :=lo (i) ; write (f ,b2,bl) ; end; procedure GetRGBPalette(var Pa1ette:PaletteRec); var cpu: registers; begin cpu.es:=Seg(palette .Colors); cpu.dx:=Ofs (palette.Colors);
215
216
6 Angabeii zum Pascal-Prograrnm
cpu.bx:=O; cpu.cx:=16; cpu.a1:=$17; cpu.ah:=$lO; inline($FA) ; Intr($lO,cpu) ; inline($FB) ; Palette.Size:=15; end ; begin { of SuveB WScreenToPCX } if noext (FileName) then FileName:=FileName+DefaultExtension; if x2<x1 then IntegerSwap(x1 ,x2) ; if y2GetMaxY then y2 :=GetMaxY; Assign(Image,FileName); Reurite(1mage) ; wbyte:=FileIdent; write(1mage ,wbyte); wbyte:=O; write (Image,wbyte) ; wbyte :=I ; write (Image,wbyte ,wbyte) ; WriteInt(Image,xi); WriteInt(Image,yl); ~rite~nt(~mage,xZ) ; WriteInt(Image,y2) ; HRes:=x2-xl+l; VRes:=y2-yl+l; WriteInt (Image ,HRes) ; WriteInt (Image ,VRes) ; GetRGBPalette(p) ; bl :=O; Write (Image,bl ,bl,bl) ; bl :=255; Write (Image,bl,bl,bl) ; for j:=S to 47 do write (Image, p . Colors Cjl 1 ; wbyte :=O ; Write (image,wbyte) ; wbyte :=l; Write (image,wbytel ; if (8*(HRes div 8)=HRes) then w:=HRes div 8 else w:=(HRes div 8)+1; WriteInt(Image,w); WriteInt(Image,l); wbyte:=O; for j : = O to 57 do Write(Image,wbyte); j:=yl; repeat SaveLine(Image, j,xi ,x2) ; Inc(j1; until j>y2; Close (Image) ; end ;
Verzeichnis: Forderungen, Definit ionen, Satze und Ubungen 2.1.2. Def. 1: Satz 1: Satz 2: 2.1.4. Ford. 1: 2.1.5. Satz 3: Ford. 2: Ubg. 1: 2.1.6. Satz 4: Satz 5: Ubg. 2: 2.2.1. Ubg. 3: Satz 6: Def. 2: Ubg. 4: 2.2.2. Def. 3: 2.2.3. Satz 7 u. Satz 8: 2.2.4. Satz 9: Satz 10: Ubg. 5: Satz 11: 2.2.5. Ubg. 6: Satz 12: Ubg. 7: 2.3.1. Satz 13: 2.3.2. Def. 4: Satz 14: 2.3.3. Satz 15: 2.3.4. Ubg. 8: 2.3.5. Ubg. 9: 2.3.6. Ubg. 10: Satz 16: 3.1.1. Def. 5: Def. 6: 3.1.2. Def. 7: Def. 8: Def. 9: 3.1.3. Def. 10: Ugb. 11:
Typ eines Rasterquadrats Invarianz des Typs Je nach Typ: Gleichbelegte Randpunkte Minimale Langensumme von Niveaulinien Quadratwurzelterm fur die Langensumme Eingeschranktes STEINER-Problem Rechnerische Behandlung der Langensumme Spiegelungssat z Minimierung der Langensumme Minimierung durch das Parallelmittel Beispiel zur Minimierung Kritische Teilquadrate (arithmetisches Mittel) Iteration mit dem arithmetischen Mittel Graphische Eigenschaften Nachfolger-Eckwerte (arithmetisches Mittel) Zusatz: Konvergenz (arithmetisches Mittel) Geometrische Eigenschaft des Parallelmit tels Invarianz der beiden Mittel Normierte Nachfolgerwerte (arithmetisches Mittel) Beweis zu Nachfolgerwerten Iteration a-priori-Aussage (,,abstrakt") Transformation zum projektiven Modell Iteration im projektiven Modell Transformation vermittels Matrizen Kritische Teilquadrate (Parallelmittel) Nachfolger-Eckwerte (Parallelmittel) Konvergenz (Parallelmittel) Normierte Nachfolgerwerte (Parallelmittel) Fundament aldreiecke Beispiel zum Modell (Parallelmittel) Endpunkte von Teilungskurven Zwei-, Drei-, Vierecke Kreuz- und T-Kurven Eck-, Rand-, Innenpunkt Verbindbarkeit von R.asterpunkten Startzahl Startpunkt und -ansatz Z ielpunkt Beispiel zur Homotopie
.
218
Forderungen, Definitionen, SBtze und Uburlgtirl
3.1.5. Def. 11: Def. 12: Satz 17: Def. 13: Def. 14: 3.1.6. Def. 15: Satz 18: Def. 16: Satz 19: 3.1.7. Ubg. 12: Ubg. 13: 3.2.3. Ubg. 14: 3.2.4. Ford. 3: 3.2.5. Ubg. 15: 3.2.6. Ubg. 16: 3.2.7. Ford. 4: 4.1.3. Def. 17: 4.1.4. Def. 18: 4.1.5. Def. 19: 4.2.2. Ford. 5: Satz 20: Ubg. 17: Ford. 6: Satz 21: Satz 22: Satz 23: 4.2.4. Ubg. 18: 5.1.1. Ford. 7: 5.1.2. Ford. 8: 5.3.2. Def. 20:
Anfangszerlegung, zugeordriete Werte Durchlassige Strecken Anzahl 2 gleichbelegter Punkte Vereinfachte Arifangszerlegung Fortsetzungspunkt und -arisatz Anfugeri an durchlassige Strecken Eckenzahl nach Zerlegung Auaenstrecke Topologische Struktur nach Zusarrirnensetzen Vernieiden ,,uberfliissiger Locher" Schranken fur Flachenzahleri Beispiel fur Endflachen Niveauliriie zu Eridflache und Wert Beispiel fur Niveaulinie Auflockern eines Wert-,,Clusters" ,,Einpassen" einer arithmetischen Folge Suchschritt zuin Farben Farburigsschritt Kontraktionsschritt Korbbogen zu zwei Linienelementeri Kreis der Ubergangspunkte Winkelaussage fur Korbbogen Korbbogen minimaler Radiendifferenz Randbedingung des Minirnurns Konstruktion des Minimums Vereinfachte Konstruktion ,,Fast gestreckter" Winkel Genauigkeit vori Rasterwerten Zeichen- und Rechengenauigkeit Entzerrung dicht belegter Quadrate
Lit erat urverzeichnis [l] Abramowski, S.; Muller, H.: Geometrisches Modellieren. BI Wissenschaftsverlag, Mannheim/Wien/Ziirich 1991. [2] Benz, W.: Geometrische Transformationen. BI Wissenschaftsverlag, Leipzig/Mannheim/Wien/Zurich 1992. [3] Engelking, R.; Sieklucky, K.: Topology. A Geometric Approach. Sigma Series in Pure Mathematics, Vol. 4, Heldermann-Verlag, Lemgo 1992. [4] Fellner, W. D.: Computergrajik. BI Wissenschaftsverlag, Mannheim/Leipzig/Wien/ Zurich, 2. AuR. 1992. [5] Geise, G.; Harms, S.; Stammler, L.; Uhlig, A.: Kriimmungsabhungige Schrittweitensteuerung ohne hohere als erste A bleitung durch Nutzung eines kreisnahen Polygonstreifenmodells. Beitrage zur Algebra und Geometrie 17 (1984), s. 83-109. [6] Herrmann, M.; Stammler, L.; Sterz, U.: Geornetrie auf Varietaten. Deutscher Verlag der Wissenschaften, Berlin 1975. [7] Hodge, W. V. D.; Pedoe, D.: Methods of Algebraic Geometry. Cambridge Univ. Press 1947. [8] Jungnickel, D.: Graphen, Netzwerke und Algorithmen. BI Wissenschaftsverlag, Mannheim/Wien/Ziirich. 2. AuR. 1990. [9] Keller, 0.-H.: Analytische Geometrie und lineare Algebra. Deutscher Verlag der Wissenschaften, Berlin, 3. Aufl. 1968. [lo] Keller, 0.-H.: Vorlesungen iiber algebraische Geornetrie. Akademische Verlagsgesellschaft Geest & Portig K.G., Leipzig 1974. [ll] Kovalevskij, V. A.: The Topology of Cellular Complexes as Applied to Image Processing. Mathematical Research 40 (1987), Akademie-Verlag, Berlin, s. 162. [12] Mumford, D.: Algebraic Geometry I. Springer-Verlag, Berlin/Heidelberg/New York 1976. [13] Stammler, L.: Einfachheit und Varianten bei der Gewinnung und Anwendung uon Isolinienbildern. Geobild '82 = Wiss. Zeitschr. d. Friedrich-Schiller-Universitat Jena (1982), S. 108-116. [14] Stammler, L.: Uber die Korbbogenverbindungen zweier Linienelemente. Beitrage zur Algebra und Geometrie 16 (1983), S. 5-36. [15] Stammler, L.: Optimierung stiickweise hearer Feldlinien und ein eingeschranktes Seiner-Problem. Wiss. Tagungen d. TU Karl-Marx-Stadt 3/1988, S. 59-60. [16] Stammler, L.: Minimality and Topological Structure of Piecewise Linear Isolines. Geometrical Problems of Image Processing = Research in Informatics 4 (19911, Akademie-Verlag, Berlin, S. 199-204. [17] Stammler, L.: Geometrische Strukturfragen bei kluftstatistisch-ingenieurgeologischen Verfahren. In: Mathematische Forschung fur Theorie und Anwendung, Herausg.: Klaus Beckert, Horst Michel. Wiss. Zeitschr. d. Martin-Luther-Universitat HalleWittenberg 3, XXVIII/1979, S. 17-18. [18] Stocker, R.; Zieschang, H.: Algebraische Topologie. B. G. Teubner, Stuttgart 1994. [19] Ziller, J.: Einpassen moglichst kurzer arithmetischer Folgen in gegebene Intervalle. Wissenschaftliche Hausarbeit zur Ersten Staatspriifung fur das Lehramt an Gymnasien. Martin-Luther-Universitat Halle-Wittenberg 1995.
St ichwortverzeichnis Absolutes Farburigsprinzip . . . . . . . . . . . . . . . . . ...................... 99 Anfangszerlegung durch verzweigte Niveaulinien ..................... 63 Anfangszerlegung durch verzweigte Niveaulinien. vereirifacht . . . . . . . . . 64 19 Antisymmetrische Teilquadrate ..................................... 18 Arithmetisches Mittel ............................................... Aufblasen eines Punktes zii einer Kurve ............................. 45 68 AuBenstrecke ....................................................... Benachbarte Eckenabrundurig ....................................... 120 57 Benachbarte Rasterpunkte (wertgleich) .............................. Bruchteil zur Eckenabrundung ...................................... 116 B6zier-Flache ....................................................... 109 109 Bbzier-Kurve ....................................................... Brucke in einer Randlinie ........................................... 68 110 B-Splines ........................................................... Cremona-Transformation ........................................... 43 67 ff . Datenstruktur ...................................................... Dreieck 1. Art ...................................................... 54 Dreieck 2 . Art ...................................................... 54 64 Durchlassige Strecken ............................................... 110 Ecken-Abrundung .................................................. Eckpunkt (bezuglich des Rasterrechtecks) ........................... 57 Einpassen einer arithmetischen Folge in Intervalle . . . . . . . . . . . . . . . . . . . 86 ff . Einzelschrittflache .................................................. 71 Elementarflache .................................................... 71 Endflache ........................................................... 71, 97 Endflache, modifizierte, zum Farben ................................ 01 ff . Endgultige Zerlegung durch verzweigte Niveaulinieri . . . . . . . . . . . . . . . . . 66 Endpunkt einer Kreuz-Kurve ....................................... 56 56 Endpunkt einer T-Kurve ............................................ Entzerrung ......................................................... 29 ff . 99 Farbungsprinzip, absolutes .......................................... Farbungsprinzip, relatives .......................................... 99 Farbungsschritt ..................................................... 101 ff . Fallendes Verhalten in einem Gebiet ................................ 99, 104 Feine Linienfuhrung ................................................ 62 129 Fixierung zu entzerrender Rasterquadrate ........................... Fixpunktverfahren zum Einpassen .................................. 89 Fortsetzungspunkt und -ansatz einer verzweigten Niveaulinie . . . . . . . . 66 47 Fundamentaldreieck ................................................ Fundamentalpunkt ................................................. 44 81 GemaBigt vergroberte Linienfuhrung ................................
St ichwortverzeichnis
221
Genauigkeitsschranke ............................................... 126 Geornetrisches Model1............................................... 28 Gleitpunktverfahren zum Einpassen ................................. 88 Grobe Linienfuhrung ............................................... 61 Homotopie ......................................................... 60 ff . 57 Innenpunkt (bezuglich des Rasterrechtecks) ......................... Innenwert einer Endflache .......................................... 77 Intervall der Werte einer Endflache .................................. 75 ff . Intervall, projektives ................................................ 48 Intervallverfahren zum Einpassen ................................... 88 Kontrahieren einer Kurve zu einem Punkt ........................... 45 Kontraktionsschritt zum Farben .................................... 101 ff . Korbbogen ......................................................... 111 ff . Kreuz-Gestalt einer Verzweigung .................................... 56 Kritischer Typ ...................................................... 8 Leere Flache ........................................................ 62, 64, 65 Linienelement ...................................................... 44 Linienfuhrung, feine ................................................ 62 Linienfuhrung, gemai3igt vergrobernde .............................. 81 Linienfuhrung, grobe ............................................... 61 Linienfuhrung, vermittelnde ......................................... 63 Linienglattung ...................................................... 109 ff . Liste ( l ) ,Listen (2), (2') ........................................... 69 Modifizierte Endflache zum Farben ................................. 101 ff . Nachbarflache einer modifizierten Endflache ......................... 106 Nachbarschafts-Erreichbarkeit ....................................... 130 Nachbarschafts-erreichbare Rasterquadrate .......................... 130 Nachfolger-Eckwerte (arithmetisches Mittel) ......................... 23 Nachfolger-Eckwerte (arithmetisches Mittel), normiert ............... 29 Nachfolger-Eckwerte (Parallelmittel) ................................ 39 Nachfolger-Eckwerte (Parallelmittel), normiert ...................... 41 Nachstliegende Fortsetzung einer Niveaulinie ........................ 78 Niveaulinien-Ansatz ................................................ 58 Normierung von Eckwerten ......................................... 28 orthogonale Trajektorien ............................................ 122 ff . Parallelmittel ....................................................... 17 Parameterverhaltnis ................................................ 44 Projektives Intervall ................................................ 48 Randminimum ...................................................... 113 Randpunkt (bezuglich des Rasterrechtecks) ......................... 57 Randwert einer Endflache ........................................... 76 Rechengenauigkeit .................................................. 126 Relatives Farbungsprinzip .......................................... 99
222
Stichwortverzcichnis
Richturigsrosen ..................................................... 124 ff . Schrittfolge zuni Farben ............................................ 101 ff . Schrittfolgenflache .................................................. 71 Sorte (a.a). (a$). (b.(x). (b.@) eirier Endflache ...................... 75ff . Stachel in einer Raridlinie ........................................... 68 Startpunkt einer verzweigteri Niveaulinie ............................ 57 Startwert beim Gleitpunkt- und Fixpunktverfahren . . . . . . . . . . . . . . . . . . 89 88 Startwert beirri Iritervallverfahreri ................................... Startzahl einer Klasse von Rasterpunkten ........................... 58 57 Startzahl eines Rasterpunktes ....................................... Steigendes Verhalten in eineni Gebiet ............................... 99. 104 Stufe eines Quadrats ................................................ 82 Suchschritt zum Farben ............................................ 101 ff . T-Gestalt eirier Verzweigung . . .................................. 56 Trajektorien. orthogoriale ........................................... 122 ff . Typ eiries Rasterquadrats ........................................... 7 57 Verbindbare Rasterpunkte .......................................... Verbrauchte Elernentarflache ........................................ 71 Vergleich von Grenzwerteri .......................................... 128 81 Vergroberte Linienfuhrung. gemafiigt ................................ 63 Verrnittelnde Linienfiihrung ......................................... Viereck ............................................................. 54 Vorrnerken einer Flache zur Streichung .............................. 106 57 Wertgleich benachbarte Rasterpunkte ............................... Wert-Interval1 einer Endflache ...................................... 75 ff . Zeichengenauigkeit .................................................. 126 Zielpurikt einer verzweigten Niveauliriie ............................. 59 Zweieck ............................................................ 54 Zwischenflache zu modifizierteri Endflachen ......................... 106