How will collision detection work then? If you have a segment what is the start point? A segment has actually two ends you can start from...
In the following text I assume that each track-part have a double linked list of all trains on it (since we allow trains to go in both dirrections).
Trains can only collide with next train and the previous train. If two trains collide there is at least one train that head into the other in its driving dirrection. So you can for each train check if you are colliding with the next train (in driving dirrection) by comparing their L-coordinates. Asuming that L-coordinates are the traveled distance.
When there is no next train on the current track-part it becomes a bit more difficullt. Especially if there are many coices where to go. But the problem to find the next train at a split is not really related to if the L-axis is used or not.
I am not sure if it's good have an additonal system L,
and if it is from 0..100% you still need to lookup the lenght of the segment.
And transforming between coordinate systems can always add some conversation failures ...
I don't know if the L-system is the best way to go. I've implemented it in a program where all "tracks" are one-way which makes the situation a bit different. The program also have very strict build/simulation mode which discards all traffic when changing to build mode. Still I don't know if the L system is better. It simplify the simulation part of my program but require some extra calculations to export the L-coordinates to XYZ for the graphics engine.
I just wanted to share this idea since it might be usable for TE. Still I don't know if it is a good way to go.
_________________My OpenTTD contributions
(AIs, Game Scripts, patches, OpenTTD Auto Updater, and some sprites)Junctioneer
(a traffic intersection simulator)