home

Laborbericht

Dieser Laborbericht begleitet die 2. Beta-Version des Geländeformers (0.9). Er beschreibt:


Optimierte Hüllkurven

In einem gestaffelten Abstand zur Strecke werden Grenzlinien gezogen, ab denen sich die Gittermaschenweite der ändert. Je weiter weg von der Strecke, desto größer wird die Gitterweite, um letztendlich Polygone einzusparen. Diese Hüllkurven werden aus den Elementen der Streckendatei berechnet, nicht aus der Streckenlandschaft. Das hat rechentechnische Gründe: Es ist einfacher, um einen Vektor der Breite 0 eine Hüllkurve in einem bestimmten Abstand zu erzeugen, als von einem schon breiten Polygon zuerst eine Mittellinie zu bestimmen.

Ziel

Es sollen an den Hüllkurven-Schnittlinien Polygone eingespart werden und der optische Eindruck der Grundplatte in diesen Bereichen verbessert werden. 

Grundverfahren

In der ersten Rechenstufe, bei der Ermittlung der Hüllkurven, bleibt alles wie vorher. Es werden im gewählten Abstand zum Streckenelement parallele Linien angelegt und am Anfang und Ende mit einem "Halbkreis" (in 45°-Schritten) abgeschlossen. Daraus ergeben sich 10-Ecke. Diese 10-Ecke werden für jedes Streckenelement erzeugt und dann alle miteinder verschmolzen, was, wie man sicherlich beobachten wird, ein wenig Rechenzeit kostet.

Gitterschnitt

Während des Anlegens der Grundpalttenpolygone werden zu jeder Gitterweite alle Maschen gegen die jeweils äußere und innere Hüllkurve geschnitten. Hier wird jetzt neu nur das Resultat des Polygonschnitts gegen die äußere Hüllkurve erhalten. Beim Schnitt gegen die innerer Hüllkurve wird vom Ergebnis nur der Flächeninhalt betrachtet. Ist er größer als die halbe Fläche des unbeschnittenen Gitterquadrats, bleibt dieses unverändert erhalten. Ist sie kleiner, fällt das Quadrat komplett weg.

Anschließend wird eine neue Hüllkurve aus dem Verschmelzen aller verbliebenen Polygone dieser Gitterweite gebildet und als neue innere optimierte Hüllkurve gespeichert. Die Polygonerzeugung erfolgt von außen nach innen. Die aktuelle innere Hüllkurve wird bei der nächst kleineren Gitterweite zur äußeren Hüllkurve.

Dieses neue Schnittverfahren wird für alle Zwischen-Hüllkurven angewandt, also nicht für die äußerste, und natürlich auch nicht beim Schnitt gegen die Streckenlandschaft.

Nachbearbeitung

Ähnlich wie beim Schnitt gegen die Streckenlandschaft gibt es auch bei den optimierten Hüllkurven Zwangswerte für die z-Koordinaten, die auf der Hüllkurve liegen. Dies betrifft auch Zwischenpunkte. Wird beispielsweise eine Hüllkurve für 150m-Maschen ermittelt, so gibt es alle 150m einen Stützpunkt dieser Kurve, für den der z-Wert aus den digitalen Höhendaten bestimmt wird. Wird die Hüllkurve nun gegen 50m-Maschen geschnitten, wird es zwei weitere Punkte, nämlich bei 50m und bei 100m geben, an denen die Hüllkurve Schnittpunkte bekommt. Für diese Schnittpunkte steht die Höhe aber bereits fest, nämmlich als linear interpolierter Zwischenwert der 150m langen Geraden. Würden die Punkte im 50m-Abstand aus den Höhendaten ermittelt, würden sich lästige kleine horizontele Spalten ergeben, durch die man durchgucken kann.

Ergebnis

Dadurch, dass an den Hüllkurven-Schnittlinien nun Quadrate statt Vielecke erzeugt werden, fällt die Notwendigkeit der Triangulierung weg, so dass insgesamt etwa 20-25% aller Grundplattenpolygone eingespart werden.

 

toptriangbounds.gif (43609 Byte)

Bild 1 zeigt bisheriges (links) und neues Verfahren (rechts) des Hüllkurvenschnitts, für die "Engtal"-Landschaft von oben betrachet. Deutlich zu erkennen ist der Wegfall vieler Dreiecke

 

 

isotriangbounds.gif (30999 Byte)

Bild 2 zeigt wie Bild 1 bisheriges (links) und neues Verfahren (rechts) des Hüllkurvenschnitts für die "Engtal"-Landschaft, aber jetzt aus einer ISO-Perspektive.

 

 

Behandlung großer Löcher in der Streckenlandschaft

Die Standardform eines Streckennetzes, für das der Prototyp des Geländeformers entwickelt wurde, war eine lineare oder sternförmige Ausbildung, nicht unbedingt eine vermaschte, bei der sich im Inneren des Netzes "Löcher" ergeben. Der jetzige Geländeformer kann aber mit solchen Löchern umgehen, schon seit der ersten Beta-Version.

Kleine Löcher

Kleine Löcher sind solche, deren Fläche allein durch die sie umgrenzenden Polygone der Streckenlandschaft bestimmt wird, z.B. der der Zwischenraum von Gleisen mit einem größeren als dem Standard-Abstand (vgl. Bild 3 beim Laborbericht "Grundplatte"). Bei der Beurteilung, ob ein Loch "klein" oder "groß" ist, wird neben der Fläche auch deren Form mit betrachtet, so dass auch sehr lange, aber schmale Flächen immer noch als klein eingestuft werden. Für kleine Löcher werden keine quadratischen Grundplattenpolygone im Gittermuster angelegt, sondern diese werden schlicht aus der sie begrenzenden Hüllkurve durch Triangulation gefüllt.

Große Löcher

Große Löcher werden mit normalen Grundplattenmaschen gefüllt. Bei sehr großen Löchern wirken auch die Hüllkurven, so dass sich die Gitterweite im Inneren der Löcher vergrößert (siehe Bild 3).

 

Der wesentliche Punkt bei der Lochbehandlung ist eher ein rechentechnischer. Löcher sind ebenfalls Polygone, bilden aber zusätzlich den Teil eines größeren, sie umschließeden Polygons und müssen bei jeder Art von Polygonschnitt als Loch anders, z. B. invers, verarbeitet werden. Für die zweite Beta-Version des Geländeformers sind verschiedene Loch-Varianten und vor allem die "großen" Löcher ausgiebiger getestet worden, ohne das sich dadurch Änderungen an der Verarbeitung ergeben haben.

 

topwye.gif (16025 Byte)

Bild 3 zeigt eine Streckenlandschaft mit einem Gleisdreieck (ohen reales Vorbild), dessen innerer Bereich ein "großes Loch" bildet. Der innere Bereich ist hier eine Dimension, bei der alle Abstandshüllkurven zum Tragen kommen und auch im Inneren Polygone mit der größten Gitterweite angelegt werden.

 

 

dxwye.jpg (12808 Byte)

Bild 4 ist ein Screenshot der DX-Vorschau des Streckeneditors und zeigt eine Streckenlandschaft mit einem Gleisdreieck (eine andere als in Bild 3, dafür mit realem Vorbild), dessen innerer Bereich groß genug ist, um mit 50m-Gittermaschen und Höhendaten gefüllt zu werden.

 

 

Tunnel

Die Verarbeitung von Tunneln ist ein mehrstufiger Prozess, der aber an sich keine Besonderheiten birgt, weil er die verschiedenen Verfahren des Polygonschnitts und der Höehneinpassung, die auch bei den bisherigen Funktionen im Geländeformer angewandt wurden, erneut verwendet

Vorbemerkung

Da der Geländeformer beim Einpassen der Grundplattenpolygone zunächst immer von oben schaut und eine flache, zweidimensionale Streckenlandschaft sieht, muss das, was er sieht, dem entsprechen, was der Anwender auch beabsichtigt hat.

Schwierigkeiten beginnen dann, wenn senkrechte Flächen oder gar Überhänge auftauchen. Bei Überhängen wird alles unterhalb des Überhangs ignoriert, denn es ist ja von oben betrachtet nicht sichtbar.

Auch senkrechte Flächen sind von oben nicht sichtbar, haben aber zusätzlich die Eigenschaft, mindestens zwei Punkte direkt übereinander zu besitzen. Normalerweise nimmt der Geländeformer den höchsten Punkt als Bezugswert für die z-Koordinate, außer bei „Stützmauerabschluss“, wo er den tiefsten Punkt wählt. 

Beim Tunnel kommen nun mehrere Effekte zusammen. Der Geländeformer spaltet die Berechnungskette zur Ermittlung der Hüllkurve der Streckenlandschaft auf, um unerwünschte Effekte auf ein Minimum zu reduzieren.

Wesentlicher Punkt hierbei sind die entsprechenden Vorbereitungen durch den Anwender:

Schritt 1: Gleisbettung

Im ersten Schritt wird vom Geländeformer nur die Gleisbettung betrachtet und davon von die Hüllkurve gebildet.

Schritt 2: Tunnelröhre

Im zweiten Schritt wird dann die reine Tunnelröhre genommen, so wie sie vom Streckeneditor angelegt wurde. Deren Hüllkurve wird getrennt gebildet. Die Tunnelröhre hat senkrechte Flächen, aber deren Höhenpunkte interessieren nicht – sie sollten in jedem Fall aber unter dem Geländeniveau liegen.

Von der Hüllkurve der Gleisbettung wird jetzt die Hüllkurve der Tunnelröhre subtrahiert (auch ein Polygonschnitt). Immer noch spielen die Höhenpunkte keine Rolle. Würde man sie jetzt bestimmen wollen, ergäben sich Uneindeutigkeiten an den Enden der Röhre.

Schritt 3: Sonstige Streckenlandschaft

Im dritten Schritt werden alle übrigen Polygone der Streckenlandschaft verarbeitet. Auch deren Hüllkurve wirdseparat gebildet. Im Bereich der Tunnelenden muss der Erbauer jetzt dafür gesorgt haben, dass der Geländeformer von oben die gewünschte Form sieht. Dies lässt sich erreichen durch Tunnelportale mit Überdeckung in Richtung Tunnelröhre sowie einem Einschnitt mit oder ohne Stützmauer, der bis zur Oberkante des Tunnelportals führt.

Das Beispiel-Tunnelportal der Zusi-Distribution ist zum Ausprobieren gut geeignet. Es enthält eine senkrechte Fläche (das eigentliche Portal) und eine Überdeckung in Richtung Tunnel in Form eines ansteigenden rechteckigen Polygons.

Nur diese Polygonfläche zur Überdeckung des Tunnelanfangsist für den Geländeformer von oben sichtbar. Von diesem Polygon werden die Höhenpunkte übernommen. Damit nun vor dem Tunnelportal keine seitlichen Löcher klaffen, müssen diese Bereiche mit Einschnitts- oder Stützmauerpolygonen aufgefüllt werden. Die Oberkante des Einschnitts/ der Stützmauern sollte mit der Oberkante der Vorderseite des Tunnelportals abschließen.

Die vom Geländeformer ermittelte Hüllkurve dieses Teils wird nun mit der bisherigen Hüllkurve (Gleisbett minus Tunnelröhre) verschmolzen. Für das Ergebnis werden die Höhenpunkte bestimmt und daran die Grundplattenpolygone angepasst.

 

iso-tunnel.gif (14604 Byte)

Bild 5 zeigt die Verarbeitung des Tunnelbereiches durch den Geländeformer. Tunnelröhre, Tunnelportal mit Überlappungspolygon, sowie der passende EInschnitt sind als Teil der Streckenlandschaft vom Anwender erstellt worden (grau dargestellt). Der Geländeformer hat die Grundplattenpolygone an diese Landschaftsteile angepasst.

 

 

dxtunnel.jpg (5996 Byte)

Bild 6 ist ein Screenshot der DX-Vorschau des Streckeneditors und zeigt den Tunnelbereich aus Bild 5.

 

 

 

Flüsse und Straßen

Mit dem Streckeneditor können Flüsse und Straßen in einfacher Form angelegt werden. Für beide sind eigene Polygontypen vordefiniert, die vom Geländeformer als Teil der Streckenlandschaft eingestuft und damit beim Einpassen der Grundplattenpolygone berücksichtigt werden.

Die Besonderheit bei Flüssen und Straßen ist, das diese Polygone auch in Bereichen außerhalb der unmittelbaren Umgebung der Strecke liegen können und sich damit nicht mehr im Bereich der kleinsten Gitterweite befinden. Der Geländeformer nimmt daher nun auch die anderen Gitterweiten und schneidet deren Maschenpolygone gegen die Streckenlandschaft. (Dies verlängert zwangsläufig etwas die Rechenzeit)

Durch die Schnittergebnisse können nun auch außerhalb des Bereichs der kleinsten Gitterweite Grundplattenpolygone mit mehr als vier Ecken entstehen. Diese werden in der letzten Berechnungsstufe des Geländeformers automatisch mit trianguliert, womit sich die Polygonzahl leider wieder erhöht.

Außerdem erweitert sich durch diese Schnittbereiche außerhalb der streckennahen Umgebung der Wirkungsbereich des Höhenausgleichsfilters. Hier müssen zusätzliche Zwangspunkte mit fixer z-Koordinate berücksichtigt werden, und zwar diejenigen Punkte, die auf der Hüllkurve liegen und deren Höhe durch lineare Interpolation festgelegt wurde. Würde deratige Höhenwerte durch den Höhenausgleich verändert, so ergäben sich wieder horizontale Spalten in der Landschaft.

 

isofluss.gif (15917 Byte)

Bild 7 zeigt einen - recht grob konstruierten - Fluss, der im wesentlichen im Bereich der 150m-Gitterweite liegt. Man erkennt die Anpassung auch der 150m-Maschen an den Flussverlauf und deren Trinagulation.

 

dxfluss.jpg (6845 Byte)

Bild 8 ist ein Screenshot der DX-Vorschau des Streckeneditors und zeigt den Flussbereich aus Bild 7.


© 2001 Roland Ziegler