View Javadoc
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-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
13   * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
14   * </p>
15   * @author <a href="https://tudelft.nl/staff/p.knoppers-1">Peter Knoppers</a>
16   */
17  public class DualAccelerationStep implements Serializable
18  {
19      /** */
20      private static final long serialVersionUID = 20150311L;
21  
22      /** AccelerationStep for the leader. */
23      private final AccelerationStep leaderAccelerationStep;
24  
25      /** AccelerationStep for the (new) follower. */
26      private final AccelerationStep followerAccelerationStep;
27  
28      /**
29       * Create a new DualAccelerationStep.
30       * @param leaderAccelerationStep AccelerationStep; the acceleration and time step size for the leader
31       * @param followerAccelerationStep AccelerationStep; the acceleration and time step size for the (new) follower
32       */
33      public DualAccelerationStep(final AccelerationStep leaderAccelerationStep, final AccelerationStep followerAccelerationStep)
34      {
35          this.leaderAccelerationStep = leaderAccelerationStep;
36          this.followerAccelerationStep = followerAccelerationStep;
37      }
38  
39      /**
40       * Retrieve the AccelerationStep for the leader GTU.
41       * @return AccelerationStep; the acceleration and time step size for the leader
42       */
43      public final AccelerationStep getLeaderAccelerationStep()
44      {
45          return this.leaderAccelerationStep;
46      }
47  
48      /**
49       * Retrieve the AccelerationStep for the (new) follower GTU.
50       * @return AccelerationStep; the acceleration and time step size for the (new) follower
51       */
52      public final AccelerationStep getFollowerAccelerationStep()
53      {
54          return this.followerAccelerationStep;
55      }
56  
57      /**
58       * Return the acceleration of the leader.
59       * @return DoubleScalar&lt;AccelerationUnit&gt;; the acceleration of the leader
60       */
61      public final Acceleration getLeaderAcceleration()
62      {
63          return getLeaderAccelerationStep().getAcceleration();
64      }
65  
66      /**
67       * Return the acceleration of the follower.
68       * @return DoubleScalar&lt;AccelerationUnit&gt;; the acceleration of the follower
69       */
70      public final Acceleration getFollowerAcceleration()
71      {
72          return getFollowerAccelerationStep().getAcceleration();
73      }
74  
75      /**
76       * Return the time up to which the result of the leader is valid.
77       * @return DoubleScalar&lt;TimeUnit&gt;; the time up to which the result of the leader is valid
78       */
79      public final Time getLeaderValidUntil()
80      {
81          return getLeaderAccelerationStep().getValidUntil();
82      }
83  
84      /**
85       * Return the time up to which the result of the follower is valid.
86       * @return DoubleScalar&lt;TimeUnit&gt;; the time up to which the result of the follower is valid
87       */
88      public final Time getFollowerValidUntil()
89      {
90          return getFollowerAccelerationStep().getValidUntil();
91      }
92  
93      /** {@inheritDoc} */
94      @Override
95      public final String toString()
96      {
97          return "Follower: " + getFollowerAccelerationStep() + ", Leader: " + getLeaderAccelerationStep();
98      }
99  
100 }