1 package org.opentrafficsim.road.gtu.lane.tactical.following;
2
3 import java.io.Serializable;
4
5 import org.djunits.value.vdouble.scalar.Acceleration;
6 import org.djunits.value.vdouble.scalar.Time;
7
8 /**
9 * Container for two instances of an AccelerationStep. One for the GTU that is deciding its move (the leader); one for the GTU
10 * that will/would be the (new) follower of that GTU.
11 * <p>
12 * Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
13 * BSD-style license. See <a href="http://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
14 * <p>
15 * @version $Revision: 1368 $, $LastChangedDate: 2015-09-02 00:20:20 +0200 (Wed, 02 Sep 2015) $, by $Author: averbraeck $,
16 * initial version 11 mrt. 2015 <br>
17 * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
18 */
19 public class DualAccelerationStep implements Serializable
20 {
21 /** */
22 private static final long serialVersionUID = 20150311L;
23
24 /** AccelerationStep for the leader. */
25 private final AccelerationStep leaderAccelerationStep;
26
27 /** AccelerationStep for the (new) follower. */
28 private final AccelerationStep followerAccelerationStep;
29
30 /**
31 * Create a new DualAccelerationStep.
32 * @param leaderAccelerationStep AccelerationStep; the acceleration and time step size for the leader
33 * @param followerAccelerationStep AccelerationStep; the acceleration and time step size for the (new) follower
34 */
35 public DualAccelerationStep(final AccelerationStepowing/AccelerationStep.html#AccelerationStep">AccelerationStep leaderAccelerationStep, final AccelerationStep followerAccelerationStep)
36 {
37 this.leaderAccelerationStep = leaderAccelerationStep;
38 this.followerAccelerationStep = followerAccelerationStep;
39 }
40
41 /**
42 * Retrieve the AccelerationStep for the leader GTU.
43 * @return AccelerationStep; the acceleration and time step size for the leader
44 */
45 public final AccelerationStep getLeaderAccelerationStep()
46 {
47 return this.leaderAccelerationStep;
48 }
49
50 /**
51 * Retrieve the AccelerationStep for the (new) follower GTU.
52 * @return AccelerationStep; the acceleration and time step size for the (new) follower
53 */
54 public final AccelerationStep getFollowerAccelerationStep()
55 {
56 return this.followerAccelerationStep;
57 }
58
59 /**
60 * Return the acceleration of the leader.
61 * @return DoubleScalar<AccelerationUnit>; the acceleration of the leader
62 */
63 public final Acceleration getLeaderAcceleration()
64 {
65 return getLeaderAccelerationStep().getAcceleration();
66 }
67
68 /**
69 * Return the acceleration of the follower.
70 * @return DoubleScalar<AccelerationUnit>; the acceleration of the follower
71 */
72 public final Acceleration getFollowerAcceleration()
73 {
74 return getFollowerAccelerationStep().getAcceleration();
75 }
76
77 /**
78 * Return the time up to which the result of the leader is valid.
79 * @return DoubleScalar<TimeUnit>; the time up to which the result of the leader is valid
80 */
81 public final Time getLeaderValidUntil()
82 {
83 return getLeaderAccelerationStep().getValidUntil();
84 }
85
86 /**
87 * Return the time up to which the result of the follower is valid.
88 * @return DoubleScalar<TimeUnit>; the time up to which the result of the follower is valid
89 */
90 public final Time getFollowerValidUntil()
91 {
92 return getFollowerAccelerationStep().getValidUntil();
93 }
94
95 /** {@inheritDoc} */
96 @Override
97 public final String toString()
98 {
99 return "Follower: " + getFollowerAccelerationStep() + ", Leader: " + getLeaderAccelerationStep();
100 }
101
102 }