Bei den Quertragwerken deutscher Bauart in den bisher vorhandenen Mods hat mich gestört, daß die Seile unrealistisch verlaufen: Das obere Seil kann nicht über mehrere Gleise horizontal verlaufen; es würde herunterhängen. Für die automatisch generierte Oberleitung, die sich ja am schweizer Vorbild orientiert, kann man das nicht ändern. Mit einem Asset läßt sich das allerdings erreichen. Dazu gibt es die unten stehende LUA-Funktion. Die Berechnungen hierzu habe ich in den Anhang verpackt.
local math = require "math"
function CalcSuspension (ypos, top, bottom)
local y = {}
local z = {}
local zpos = {}
local zspan = bottom - top
local min_i = math.floor ((#ypos+1)/2) -- guess index of the lowest suspension point
local A11, A12, A21, A22 = 0, 0, 0, 0
local det, z1, f
local zmin, lowest
for i=1, #ypos-1, 1 do
y[i] = ypos[i+1]-ypos[i]
end
for i=1, #y, 1 do
A11 = A11 + y[i]/y[1]
end
for i=1, #y-1, 1 do
A12 = A12 + i*y[i+1]/y[1]
end
repeat
A21 = 0
A22 = 0
lowest = min_i
for i=1, lowest-1, 1 do
A21 = A21 + y[i]/y[1]
end
for i=1, lowest-2, 1 do
A22 = A22 + i*y[i+1]/y[1]
end
det = A11*A22 - A12*A21
z1 = -A12*zspan/det
f = A11*zspan/det
z[1] = z1
for i=2, #y, 1 do
z[i] = y[i]/y[i-1]*z[i-1] + y[i]/y[1]*f
end
zpos[1] = top
zmin = top
min_i = 1
for i=2, #ypos, 1 do
zpos[i] = zpos[i-1] + z[i-1]
if zpos[i] < zmin then
zmin = zpos[i]
min_i = i
end
end
until (min_i == lowest)
return zpos
end
Display More
Die Benutzung sollte nicht allzu kompliziert sein: Als Eingabewerte verlangt sie erst die Liste der y-Koordinaten (d. h. quer zum Gleis) der Knickpunkte des Seils - dies sind die Punkte, an denen die senkrechten Hängeseile aufgehängt sind, die normalerweise über den einzelnen Gleisen liegen. Der erste und letzte Punkt dieser Liste sind diejenigen, an denen das Seil am Mast hängt. Der zweite Parameter ist die Höhe (z-Koordinate) der Aufhängepunkte und der dritte Parameter der tiefste Punkt des durchhängenden Seils. Die Funktion gibt die Liste der Höhen der Knickpunkte des Seils zurück.
Es gibt ein paar kleine Einschränkungen, deren Beseitigung mir allerdings unnötiger Aufwand (auch an Berechnungen im Spiel) erscheint:
- Die Aufhängepunkte am Mast sind auf beiden Seiten gleich hoch
- An jedem Hängeseil hängt die gleiche Masse.
Anhand der Rechnung im Anhang lassen sie sich beseitigen.
Anbei zwei Bilder: