1 package org.opentrafficsim.road.definitions;
2
3 import java.awt.Color;
4 import java.util.List;
5 import java.util.Locale;
6
7 import org.djunits.value.vdouble.scalar.Length;
8 import org.djunits.value.vdouble.vector.LengthVector;
9 import org.opentrafficsim.base.StripeElement;
10 import org.opentrafficsim.core.definitions.DefaultsNl;
11 import org.opentrafficsim.road.gtu.generator.GeneratorPositions.LaneBias;
12 import org.opentrafficsim.road.gtu.generator.GeneratorPositions.LaneBiases;
13 import org.opentrafficsim.road.network.lane.LaneType;
14 import org.opentrafficsim.road.network.lane.StripeData;
15 import org.opentrafficsim.road.network.lane.StripeData.StripePhaseSync;
16
17
18
19
20
21
22
23
24
25
26
27 public class DefaultsRoadNl extends DefaultsRoad
28 {
29
30
31
32
33 DefaultsRoadNl()
34 {
35 super(new Locale("nl", "NL"));
36 }
37
38
39
40
41
42
43 public static final LaneType TWO_WAY_LANE = new LaneType("NL.TWO_WAY_LANE");
44
45
46 public static final LaneType PROVINCIAL_ROAD = new LaneType("NL.PROVINCIAL_ROAD", TWO_WAY_LANE);
47
48
49 public static final LaneType RURAL_ROAD = new LaneType("NL.RURAL_ROAD", TWO_WAY_LANE);
50
51
52 public static final LaneType URBAN_ROAD = new LaneType("NL.URBAN_ROAD", TWO_WAY_LANE);
53
54
55 public static final LaneType RESIDENTIAL_ROAD = new LaneType("NL.RESIDENTIAL_ROAD", TWO_WAY_LANE);
56
57
58 public static final LaneType ONE_WAY_LANE = new LaneType("NL.ONE_WAY_LANE");
59
60
61 public static final LaneType FREEWAY = new LaneType("NL.FREEWAY", ONE_WAY_LANE);
62
63
64 public static final LaneType HIGHWAY = new LaneType("NL.HIGHWAY", ONE_WAY_LANE);
65
66
67 public static final LaneType BUS_LANE = new LaneType("NL.BUS_LANE");
68
69
70 public static final LaneType MOPED_PATH = new LaneType("NL.MOPED_PATH");
71
72
73 public static final LaneType BICYCLE_PATH = new LaneType("NL.BICYCLE_PATH", MOPED_PATH);
74
75
76 public static final LaneType FOOTPATH = new LaneType("NL.FOOTPATH");
77
78 static
79 {
80 TWO_WAY_LANE.addCompatibleGtuType(DefaultsNl.ROAD_USER);
81 ONE_WAY_LANE.addCompatibleGtuType(DefaultsNl.ROAD_USER);
82 FREEWAY.addIncompatibleGtuType(DefaultsNl.PEDESTRIAN);
83 FREEWAY.addIncompatibleGtuType(DefaultsNl.BICYCLE);
84 HIGHWAY.addIncompatibleGtuType(DefaultsNl.PEDESTRIAN);
85 HIGHWAY.addIncompatibleGtuType(DefaultsNl.BICYCLE);
86 PROVINCIAL_ROAD.addIncompatibleGtuType(DefaultsNl.PEDESTRIAN);
87 PROVINCIAL_ROAD.addIncompatibleGtuType(DefaultsNl.BICYCLE);
88 BUS_LANE.addCompatibleGtuType(DefaultsNl.BUS);
89 MOPED_PATH.addCompatibleGtuType(DefaultsNl.BICYCLE);
90 BICYCLE_PATH.addIncompatibleGtuType(DefaultsNl.MOPED);
91 FOOTPATH.addCompatibleGtuType(DefaultsNl.PEDESTRIAN);
92 }
93
94
95
96
97
98
99 public static final LaneBiases LANE_BIAS_CAR_TRUCK = new LaneBiases();
100
101 static
102 {
103 LANE_BIAS_CAR_TRUCK.addBias(DefaultsNl.CAR, LaneBias.WEAK_LEFT);
104 LANE_BIAS_CAR_TRUCK.addBias(DefaultsNl.TRUCK, LaneBias.TRUCK_RIGHT);
105 }
106
107
108
109
110
111
112 private static final Length CM20 = Length.ofSI(0.2);
113
114
115 private static final LengthVector DASH = new LengthVector(new double[] {9.0, 3.0});
116
117
118 public static final StripeData SOLID = new StripeData(List.of(StripeElement.continuous(CM20, Color.WHITE)), false, false);
119
120
121 public static final StripeData LEFT = new StripeData(List.of(StripeElement.continuous(CM20, Color.WHITE),
122 StripeElement.gap(CM20), StripeElement.dashed(CM20, Color.WHITE, DASH)), true, false);
123
124
125 public static final StripeData RIGHT = new StripeData(List.of(StripeElement.dashed(CM20, Color.WHITE, DASH),
126 StripeElement.gap(CM20), StripeElement.continuous(CM20, Color.WHITE)), false, true);
127
128
129 public static final StripeData DASHED = new StripeData(List.of(StripeElement.dashed(CM20, Color.WHITE, DASH)), true, true);
130
131
132 public static final StripeData DOUBLE_SOLID = new StripeData(List.of(StripeElement.continuous(CM20, Color.WHITE),
133 StripeElement.gap(CM20), StripeElement.continuous(CM20, Color.WHITE)), false, false);
134
135
136 public static final StripeData DOUBLE_DASHED = new StripeData(List.of(StripeElement.dashed(CM20, Color.WHITE, DASH),
137 StripeElement.gap(CM20), StripeElement.dashed(CM20, Color.WHITE, DASH)), true, true);
138
139
140 public static final StripeData BLOCK = new StripeData(
141 List.of(StripeElement.dashed(CM20.times(2.0), Color.WHITE, new LengthVector(new double[] {3.0, 1.0}))), true, true);
142
143 static
144 {
145 LEFT.setPhaseSync(StripePhaseSync.UPSTREAM);
146 RIGHT.setPhaseSync(StripePhaseSync.UPSTREAM);
147 DASHED.setPhaseSync(StripePhaseSync.UPSTREAM);
148 DOUBLE_DASHED.setPhaseSync(StripePhaseSync.UPSTREAM);
149 BLOCK.setPhaseSync(StripePhaseSync.UPSTREAM);
150 }
151
152 }