Tutorial: Nicht rechtwinklige Bue
- Oliver Lamm
- Beiträge: 3102
- Registriert: 04.01.2002 15:02:17
- Aktuelle Projekte: Aachen - Neuss für Zusi3
- Wohnort: Essen
- Kontaktdaten:
Tutorial: Nicht rechtwinklige Bue
Vielleicht bin ich ja der einzige der mit diesem lästigen Phänomen zu hadern hat. Ein Bahnübergang kreuzt nicht rechwinklig sondern in irgendeinem Winkel die Bahntrasse. Dennoch möchte man den "Bue-Baukasten" im Signalordner verwenden - insbesondere die schönen Rampen.
Ich habe mich jetzt mal drangesetzt und ein OpenOffice-Calc Dokument erstellt was die Sache relativ einfach macht.
Vorgehensweise:
1. Laden der Rampe in den Gebäudeeditor und direkt abspeichern unter neuem Namen.
2. Öffnen von Bue Rechner (OpenOffice .ods)
3. Den Winkel im Feld B1 ersetzen (negativ -> gegen den Uhrzeigersinn)
4. Nun für jedes Polygon die Werte in das Dokument eintragen und die neuen X-Werte im schwarzen Kasten für das jeweilige Polygon ersetzen.
5. Den Gleisabstand in B8 eintragen.
Die Rampen sind so gebaut das die Elementspitze auf die Mitte des Bahnübergangs zeigt. Da bei einem schrägen Bahnübergang die Elementspitzen nicht nebeneinander liegen kann man nun den Versatz in Gleisrichtung im Feld "Versatz" ablesen. Das Feld B8 ist vorzeichenbehaftet (negativ -> links)
Das Ergebnis sieht dann z.B. so aus (-45 Grad):
Gruss, Oli
EDIT: Endung korrigiert (Danke @Daniel)
Ich habe mich jetzt mal drangesetzt und ein OpenOffice-Calc Dokument erstellt was die Sache relativ einfach macht.
Vorgehensweise:
1. Laden der Rampe in den Gebäudeeditor und direkt abspeichern unter neuem Namen.
2. Öffnen von Bue Rechner (OpenOffice .ods)
3. Den Winkel im Feld B1 ersetzen (negativ -> gegen den Uhrzeigersinn)
4. Nun für jedes Polygon die Werte in das Dokument eintragen und die neuen X-Werte im schwarzen Kasten für das jeweilige Polygon ersetzen.
5. Den Gleisabstand in B8 eintragen.
Die Rampen sind so gebaut das die Elementspitze auf die Mitte des Bahnübergangs zeigt. Da bei einem schrägen Bahnübergang die Elementspitzen nicht nebeneinander liegen kann man nun den Versatz in Gleisrichtung im Feld "Versatz" ablesen. Das Feld B8 ist vorzeichenbehaftet (negativ -> links)
Das Ergebnis sieht dann z.B. so aus (-45 Grad):
Gruss, Oli
EDIT: Endung korrigiert (Danke @Daniel)
Zuletzt geändert von Oliver Lamm am 15.09.2005 19:54:48, insgesamt 1-mal geändert.
Oliver Lamm
mail(AT)oliverlamm(DOT)de
mail(AT)oliverlamm(DOT)de
- Daniel Schuhmann
- Beiträge: 1147
- Registriert: 21.04.2003 18:50:37
- Aktuelle Projekte: Nüscht
- Wohnort: Miesbach
- Kontaktdaten:
Re: Tutorial: Nicht rechtwinklige Bue
Die Endung müßte richtig .ods heißen, oder (zumindest unter Windows)? Öffnen lässt sie sich dann hervorragend.Oliver Lamm hat geschrieben:2. Öffnen von Bue Rechner (OpenOffice .odx)
Signaturen können bis zu 50 Zeichen lang sein und
- Carsten Hölscher
- Administrator
- Beiträge: 33467
- Registriert: 04.07.2002 00:14:42
- Wohnort: Braunschweig
- Kontaktdaten:
- Oliver Lamm
- Beiträge: 3102
- Registriert: 04.01.2002 15:02:17
- Aktuelle Projekte: Aachen - Neuss für Zusi3
- Wohnort: Essen
- Kontaktdaten:
Es ist noch nicht ganz stimmig - wenn es zu den gleisnahen Elementen kommt. Das fällt allerdings nur bei grossen Winkeln auf. Ich bin gerade dabei den mathematischen Zusammenhang nochmal nachzuvollziehen und werde dann das Skript updaten. Daher bitte noch einen Augenblick gedulden.
Danke, Oli
EDIT: Das Skript ist upgedated.
Danke, Oli
EDIT: Das Skript ist upgedated.
Zuletzt geändert von Oliver Lamm am 15.09.2005 22:18:50, insgesamt 4-mal geändert.
Oliver Lamm
mail(AT)oliverlamm(DOT)de
mail(AT)oliverlamm(DOT)de
- Roland Ziegler
- Beiträge: 5510
- Registriert: 04.11.2001 22:09:26
- Wohnort: 32U 0294406 5629020
- Kontaktdaten:
- Oliver Lamm
- Beiträge: 3102
- Registriert: 04.01.2002 15:02:17
- Aktuelle Projekte: Aachen - Neuss für Zusi3
- Wohnort: Essen
- Kontaktdaten:
Ich habe folgenden Ansatz gewählt:
Die Y-Koordiante bleibt unverändert - allein schon wegen der Spaltbreite für die Gleise. Das bedeutet aber auch das ich die X-Verschiebung um einen Korrekturwert ergänzen muss.
Also der Reihe nach:
Verschiebung von x_0 nach x_1:
Der neue korrigierte Ausgangspunkt berechnet sich als
x_k ist der Anteil in X-Richtung der Verschiebung des neuen Punktes auf der neuen Geraden bis die alte Y-Position wieder erreicht ist. Denach gilt:
Eingesetzt:
Christian Gründler frage noch ob man die Anschlußstücke wieder parallel bekäme. Machbar ja - aber der einfachheit der Formel halber lasse ich sie "krumm" - sonnst müsste man zwischen Strassenanschluss und Mittelpolygonen unterscheiden. Vielleicht liefere ich einen "Korrekturrechner" für die Endpolygone nach - es darf aber auch gerne jemand anderes die Formeln anpassen.
Oli
Die Y-Koordiante bleibt unverändert - allein schon wegen der Spaltbreite für die Gleise. Das bedeutet aber auch das ich die X-Verschiebung um einen Korrekturwert ergänzen muss.
Also der Reihe nach:
Verschiebung von x_0 nach x_1:
Code: Alles auswählen
x_1 = x_0 + y_0 * sin(alpha)
y_1 = y_0*cos(alpha);
Code: Alles auswählen
x_2 = x_1 + x_k
Code: Alles auswählen
x_k = (y_0 - y_1)*tan(alpha)
= (y_0 - y_1)*(sin(alpha)/cos(alpha))
= (y_0 - y_0*cos(alpha))*(sin(alpha)/cos(alpha))
= y_0*(sin(alpha)/cos(alpha) -sin(alpha))
= y_0*(tan(alpha) - sin(alpha))
Code: Alles auswählen
x_2 = x_0 + y_0*sin(alpha) + y_0(tan(alpha) - sin(alpha))
= x_0 + y_0(tan(alpha))
Oli
Oliver Lamm
mail(AT)oliverlamm(DOT)de
mail(AT)oliverlamm(DOT)de
- Roland Ziegler
- Beiträge: 5510
- Registriert: 04.11.2001 22:09:26
- Wohnort: 32U 0294406 5629020
- Kontaktdaten:
Es mag jetzt sein, dass ich irgendetwas übersehe. Ich würde aber zunächst mal meinen, dass man das Problem durch eine Kombination von Scherung und eindimensionaler Skalierung lösen könnte.
Vorgabe: Die y-Koordinaten bleiben unverändert.
Scherung: Die x-Koordinaten werden entsprechend der Scherwinkels entlang einer Parallelen zur x-Achse verschoben, y also konstant.
alpha sei der Scherwinkel, der Winkel, der vom 90°-Kreuzungswinkel abweicht, also alpha = 0 sei eine 90°-Kreuzung.
dx1 sei die Verschiebung einer x-Koordinate x1 nach der Scherung.
Skalierung: Durch die Scherung werden Längen in x-Richtung gestaucht. Um das zu kompensieren, werden alle x-Koordinaten, bezogen auf die Vektorlänge, um einen Faktor gedehnt. Der Faktor ist:
x2 sei die endgültige Position von x1. x0 sei der Anfangspunkt des zu dehnenden Vektors.
Was übersehe ich bei diesem Ansatz?
Für Christians Wunsch muss man wohl in der Tat eine Fallunterscheidung machen. Dann könnten die "Außen"-Koordinaten per Rotation bestimmt werden. Man müsste also den Ursprung hier irgendwo hinpflanzen.
Vorgabe: Die y-Koordinaten bleiben unverändert.
Scherung: Die x-Koordinaten werden entsprechend der Scherwinkels entlang einer Parallelen zur x-Achse verschoben, y also konstant.
alpha sei der Scherwinkel, der Winkel, der vom 90°-Kreuzungswinkel abweicht, also alpha = 0 sei eine 90°-Kreuzung.
dx1 sei die Verschiebung einer x-Koordinate x1 nach der Scherung.
Code: Alles auswählen
dx1 = y * tan (alpha)
Code: Alles auswählen
fx = 1 / cos (alpha)
Code: Alles auswählen
x2 = x1 + dx1 + (x1 - x0) * fx
Was übersehe ich bei diesem Ansatz?
Für Christians Wunsch muss man wohl in der Tat eine Fallunterscheidung machen. Dann könnten die "Außen"-Koordinaten per Rotation bestimmt werden. Man müsste also den Ursprung hier irgendwo hinpflanzen.
- Christian Gründler
- Beiträge: 2210
- Registriert: 04.10.2003 13:27:48
- Wohnort: Brühl (Baden)
Hallo Roland,
im Prinzip gebe ich Dir recht, aber man kann die Lösung noch einfacher formulieren:
a) erst die gesamte Landschaft in x-Richtung um den Faktor 1/cos(alpha) skalieren (das ist ja schon als Funktion im Gebäudeeditor vorhanden)
b) dann nach der Formel x_neu = x_vorhanden + y_alt * tan (alpha) scheren
@Carsten: Scheren der gesamten Landschaft wäre offenbar eine sinnvolle Funktion für den neuen Gebäudeeditor (man sollte die Ebene wählen können, in der das passiert); gleiches gilt für Drehen (ist z.Zt. ja nur für verknüpfte Landschaften möglich).
@Oli: in die Formel für die Berechung des Versatzes gehört auch der Tangens rein (ist im Grunde das gleiche wie bei den anderen x-Kooordinaten).
Den Wunsch nach Abschluß senkrecht zur Straße ziehe ich zurück - es dürfte wohl einfacher sein, die Straße an die vorhandenen Koordinaten des Übergangs anzupassen.
M.f.G. Christian
im Prinzip gebe ich Dir recht, aber man kann die Lösung noch einfacher formulieren:
a) erst die gesamte Landschaft in x-Richtung um den Faktor 1/cos(alpha) skalieren (das ist ja schon als Funktion im Gebäudeeditor vorhanden)
b) dann nach der Formel x_neu = x_vorhanden + y_alt * tan (alpha) scheren
@Carsten: Scheren der gesamten Landschaft wäre offenbar eine sinnvolle Funktion für den neuen Gebäudeeditor (man sollte die Ebene wählen können, in der das passiert); gleiches gilt für Drehen (ist z.Zt. ja nur für verknüpfte Landschaften möglich).
@Oli: in die Formel für die Berechung des Versatzes gehört auch der Tangens rein (ist im Grunde das gleiche wie bei den anderen x-Kooordinaten).
Den Wunsch nach Abschluß senkrecht zur Straße ziehe ich zurück - es dürfte wohl einfacher sein, die Straße an die vorhandenen Koordinaten des Übergangs anzupassen.
M.f.G. Christian
- Oliver Lamm
- Beiträge: 3102
- Registriert: 04.01.2002 15:02:17
- Aktuelle Projekte: Aachen - Neuss für Zusi3
- Wohnort: Essen
- Kontaktdaten:
- Carsten Hölscher
- Administrator
- Beiträge: 33467
- Registriert: 04.07.2002 00:14:42
- Wohnort: Braunschweig
- Kontaktdaten:
- Christian Gründler
- Beiträge: 2210
- Registriert: 04.10.2003 13:27:48
- Wohnort: Brühl (Baden)