diff --git a/Train/SimpleTrainTrack.mch b/Train/SimpleTrainTrack.mch index eec275545bc87d6ab29819c8641e3b89fa5bdc40..9896b709b5123d9da32f4c87beb04cc0e72671db 100644 --- a/Train/SimpleTrainTrack.mch +++ b/Train/SimpleTrainTrack.mch @@ -4,7 +4,7 @@ MACHINE TrainTrack SETS TTDS = {ttd1,ttd2,ttd3} CONSTANTS - TrackElementNumber, TRACK, TTD_TrackElements + TrackElementNumber, TRACK, TTD_TrackElements, train_length PROPERTIES TrackElementNumber : NATURAL1 & TRACK = 0..TrackElementNumber @@ -13,17 +13,23 @@ PROPERTIES & TrackElementNumber = 30 & TTD_TrackElements = {ttd1 |-> 0..10 , ttd2 |-> 11..25 , ttd3 |-> 26..30} +& train_length = 2 VARIABLES - occ + occ, + train_rear_end INVARIANT - occ <: TTDS -INITIALISATION occ := {} + occ <: TTDS & + train_rear_end : TRACK +INITIALISATION occ := {} || train_rear_end := 0 OPERATIONS TTD_Occupied(ttd) = PRE ttd:TTDS \ occ THEN occ := occ \/ {ttd} END; TTD_Free(ttd) = PRE ttd:occ THEN occ := occ \ {ttd} + END; + TrainMoveForward = PRE train_rear_end+1:TRACK THEN + train_rear_end := train_rear_end + 1 END DEFINITIONS "LibrarySVG.def"; // enable to use the external functions in the VisB json file diff --git a/Train/Track.json b/Train/Track.json index 549086d04f744fb4d577444257b8dd2de6768c60..b8927fe267f39086bf873ceaa295c69916f3a072 100644 --- a/Train/Track.json +++ b/Train/Track.json @@ -2,6 +2,13 @@ "svg":"Track.svg", "items":[ + { + "id":"train_polygon", + "attr":"points", + "value":"svg_train(train_rear_end, train_length ,100.0/real(TrackElementNumber+1),1.0,3.0)", + "comment":"show train position using a slanted polygon" + }, + { "id":"track_polyline", "attr":"points", @@ -18,13 +25,13 @@ "id":"occupied_ttd_polygon", "attr":"points", "value":"svg_set_polygon(OCC_TE,100.0/real(TrackElementNumber+1),100.0,2.0)", - "comment":"show ticks for TTD Limits" + "comment":"show occupied TTD zones" }, { "id":"cleared_ttd_polygon", "attr":"points", "value":"svg_set_polygon(FREE_TE,100.0/real(TrackElementNumber+1),100.0,2.0)", - "comment":"show ticks for TTD Limits" + "comment":"show free TTD zones" } ], "events":[ @@ -41,6 +48,13 @@ "optional" : true, "hovers": [{ "attr":"stroke", "enter":"black", "leave":"none"}, { "attr":"opacity", "enter":"0.5", "leave":"1.0"}] + }, + { + "id":"train_polygon", + "event":"TrainMoveForward", + "optional" : true, + "hovers": [{ "attr":"fill", "enter":"red", "leave":"lightgray"}, + { "attr":"stroke-width", "enter":"0.5", "leave":"0.3"}] } ] } \ No newline at end of file diff --git a/Train/Track.svg b/Train/Track.svg index 5abc6de7e82a6a165e30200a8a0b76286b2774fe..7758860e73b19fb2fcaccdcfc508fce583274bab 100644 --- a/Train/Track.svg +++ b/Train/Track.svg @@ -7,6 +7,12 @@ version="1.1" id="svg5154"> + <polygon id = "train_polygon" + points="0,0 100,0" + style="stroke-width: 0.3" + stroke="black" fill="lightgray" + transform="translate(10,16.8)" /> + <polygon id = "track_polyline" points="0,0 1,0, 1,1 1,0 50,0 50,1 50,0 100,0" style="stroke-width: 0.3"