From c223936743ca1815fb68d59cd13617c66debba8c Mon Sep 17 00:00:00 2001 From: Paul ALNET Date: Fri, 26 Apr 2024 18:24:06 +0200 Subject: [PATCH] feat: add bicycle filter --- .../graphs/algorithm/ArcInspectorFactory.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java index ddbcb63..4c6cda7 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java @@ -143,6 +143,42 @@ public class ArcInspectorFactory { } } ; + // Non-private roads for bicycles: + static ArcInspector forBicyclesCustomT = new ArcInspector() { + + static final int maxPedestrianSpeed = 25 ; // need for speed + + @Override + public boolean isAllowed(Arc arc) { + return arc.getRoadInformation().getAccessRestrictions() + .isAllowedForAny(AccessMode.BICYCLE, EnumSet.complementOf(EnumSet + .of(AccessRestriction.FORBIDDEN, AccessRestriction.PRIVATE))); + } + + @Override + public double getCost(Arc arc) { + return arc.getTravelTime( + Math.min(maxPedestrianSpeed, arc.getRoadInformation().getMaximumSpeed())); + } + + @Override + public String toString() { + return "Fastest path for cyclists"; + } + + /* + @Override + public int getMaximumSpeed() { + return 5; + } + */ + + @Override + public Mode getMode() { + return Mode.TIME; + } + } ; + /** * @return List of all arc filters in this factory. */ @@ -156,6 +192,7 @@ public class ArcInspectorFactory { filters.add(forCarsL) ; filters.add(forCarsT) ; filters.add(forBicyclesT); + filters.add(forBicyclesCustomT); // Add your own filters here (do not forget to implement toString() // to get an understandable output!):