From faa5d7ca4b9b16442de4bd3c3cc49567cfd56598 Mon Sep 17 00:00:00 2001 From: Markus Koch Date: Fri, 26 Feb 2021 19:33:21 +0100 Subject: [PATCH] Introduce a penalty for entering / leaving the train Done by upping the cost for walking on an access layer. --- src/dijkstragraph.c | 3 ++- src/geojson.c | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/dijkstragraph.c b/src/dijkstragraph.c index 0d6259c..1f908f2 100644 --- a/src/dijkstragraph.c +++ b/src/dijkstragraph.c @@ -175,7 +175,8 @@ dijkstra_cost dijkstra_get_weight_from_distance(struct dijkstra_node *node_a, float scale; switch (net_type) { - case TRAINLINE: + case TRAINLINE: // Trainlines and access types use the z-coordinate + case ACCESS: // for cost scaling. scale = (float)node_a->position.z; scale += (float)node_b->position.z; scale /= 200; diff --git a/src/geojson.c b/src/geojson.c index 0db8f15..9372d24 100644 --- a/src/geojson.c +++ b/src/geojson.c @@ -102,7 +102,10 @@ int add_geojson_to_dijkstra(struct dijkstra_solver *solver, z_last = 0; // By default, let's assume height 0 break; case TRAINLINE: - z_last = 1000; // By default, let's assume 5x normal speed + z_last = 1000; // By default, let's assume 10x normal speed + break; + case ACCESS: + z_last = 10; // By default, let's introduce a penalty to get on the train (ACCESS walk 10x slower) break; default: z_last = -1;