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-2019 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 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&lt;AccelerationUnit&gt;; 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&lt;AccelerationUnit&gt;; 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&lt;TimeUnit&gt;; 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&lt;TimeUnit&gt;; 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 }