Züge folgen dem Gleis statt gerader Linien, Mindesthaltezeit 40 s, osmium renumber
- Server schickt pro Zug die Gleispunkte der nächsten 12 s mit Zeitstempel (gerade Stücke auf ~3 m vereinfacht); Browser fährt sie ab, Richtung aus dem aktuellen Gleisstück - Halte mit Ankunft = Abfahrt werden für die Animation auf 40 s verlängert - OSM-IDs durchnummerieren: osmium extract braucht sonst ~4 GB RAM Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X48pE4bzjHej8w9HyZXCjb
This commit is contained in:
@@ -114,6 +114,17 @@ def test_all():
|
||||
assert abs(v[0]["properties"]["heading"] - 90) < 15, v[0]["properties"]["heading"] # Scheitel: Richtung Osten
|
||||
assert f.vehicles(at(8, 11), {})[0]["properties"]["heading"] is not None # auch im Stillstand
|
||||
|
||||
# Gleisverlauf für den Browser: folgt der Kurve über den Umweg-Scheitel, Zeiten steigen an
|
||||
tr = f.track(0, [3000, 4500, 6000], 2)
|
||||
assert tr[0][2] == 0 and tr[-1][2] == 4 and [p[2] for p in tr] == sorted(p[2] for p in tr)
|
||||
assert any(abs(p[0] - 8.05) < 1e-4 and abs(p[1] - 46.98) < 1e-4 for p in tr), tr # Scheitelpunkt drin
|
||||
assert len(f.track(0, [5000, 5000, 5000], 2)) == 3 # steht: Punkte bleiben (Zeit läuft)
|
||||
|
||||
# Mindesthaltezeit: 0 s Halt wird für die Animation verlängert, Endhalte bleiben
|
||||
from trainpulse.feed import with_min_dwell
|
||||
pa, pd = with_min_dwell([0, 600, 1200], [0, 600, 1200])
|
||||
assert pa[1] == 580 and pd[1] == 620 and pa[0] == 0 and pd[2] == 1200
|
||||
|
||||
# Anfahren/Bremsen: symmetrisch, am Anfang/Ende langsamer als linear, Gesamtstrecke stimmt
|
||||
from trainpulse.feed import travelled
|
||||
assert travelled(8000, 600, 0) == 0 and abs(travelled(8000, 600, 600) - 8000) < 1e-6
|
||||
|
||||
Reference in New Issue
Block a user