1 package org.opentrafficsim.draw.graphs;
2
3 import org.djunits.value.vdouble.scalar.Acceleration;
4 import org.djunits.value.vdouble.scalar.Length;
5 import org.djunits.value.vdouble.scalar.Speed;
6 import org.opentrafficsim.base.parameters.ParameterException;
7 import org.opentrafficsim.base.parameters.ParameterSet;
8 import org.opentrafficsim.base.parameters.Parameters;
9 import org.opentrafficsim.core.gtu.GtuType;
10 import org.opentrafficsim.draw.graphs.FixedCarFollowing.FixedCarFollowingModel;
11 import org.opentrafficsim.road.gtu.lane.perception.PerceptionIterable;
12 import org.opentrafficsim.road.gtu.lane.perception.object.PerceivedObject;
13 import org.opentrafficsim.road.gtu.lane.tactical.following.CarFollowingModel;
14 import org.opentrafficsim.road.gtu.lane.tactical.following.CarFollowingModelFactory;
15 import org.opentrafficsim.road.network.speed.SpeedLimitInfo;
16
17
18
19
20
21
22
23
24
25
26 public class FixedCarFollowing implements CarFollowingModelFactory<FixedCarFollowingModel>
27 {
28
29 private final Acceleration acceleration;
30
31
32 private final Speed desiredSpeed;
33
34
35 private final Length desiredHeadway;
36
37
38
39
40 public FixedCarFollowing()
41 {
42 this(Acceleration.ZERO, Speed.ONE, Length.ONE);
43 }
44
45
46
47
48
49 public FixedCarFollowing(final Acceleration acceleration)
50 {
51 this(acceleration, Speed.ONE, Length.ONE);
52 }
53
54
55
56
57
58
59
60 public FixedCarFollowing(final Acceleration acceleration, final Speed desiredSpeed, final Length desiredHeadway)
61 {
62 this.acceleration = acceleration;
63 this.desiredHeadway = desiredHeadway;
64 this.desiredSpeed = desiredSpeed;
65 }
66
67 @Override
68 public Parameters getParameters(final GtuType gtuType) throws ParameterException
69 {
70 return new ParameterSet();
71 }
72
73 @Override
74 public FixedCarFollowingModel get()
75 {
76 return new FixedCarFollowingModel();
77 }
78
79
80
81
82 public class FixedCarFollowingModel implements CarFollowingModel
83 {
84
85
86
87
88 public FixedCarFollowingModel()
89 {
90
91 }
92
93 @Override
94 public Length desiredHeadway(final Parameters parameters, final Speed speed) throws ParameterException
95 {
96 return FixedCarFollowing.this.desiredHeadway;
97 }
98
99 @Override
100 public Speed desiredSpeed(final Parameters parameters, final SpeedLimitInfo speedInfo) throws ParameterException
101 {
102 return FixedCarFollowing.this.desiredSpeed;
103 }
104
105 @Override
106 public Acceleration followingAcceleration(final Parameters parameters, final Speed speed,
107 final SpeedLimitInfo speedLimitInfo, final PerceptionIterable<? extends PerceivedObject> leaders)
108 throws ParameterException
109 {
110 return FixedCarFollowing.this.acceleration;
111 }
112
113 @Override
114 public String getName()
115 {
116 return "FixedAcceleration";
117 }
118
119 @Override
120 public String getLongName()
121 {
122 return "FixedAcceleration";
123 }
124
125 }
126 }