1 package org.opentrafficsim.core.gtu.following; 2 3 import org.opentrafficsim.core.unit.AccelerationUnit; 4 import org.opentrafficsim.core.unit.TimeUnit; 5 import org.opentrafficsim.core.value.vdouble.scalar.DoubleScalar; 6 7 /** 8 * Container for two instances of an AccelerationStep. 9 * <p> 10 * Copyright (c) 2013-2014 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights 11 * reserved. <br> 12 * BSD-style license. See <a href="http://opentrafficsim.org/node/13">OpenTrafficSim License</a>. 13 * <p> 14 * @version 11 mrt. 2015 <br> 15 * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a> 16 */ 17 public class DualAccelerationStep 18 { 19 /** AccelerationStep for the leader. */ 20 private final AccelerationStep leaderAccelerationStep; 21 22 /** AccelerationStep for the (new) follower. */ 23 private final AccelerationStep followerAccelerationStep; 24 25 /** 26 * Create a new DualAccelerationStep. 27 * @param leaderAccelerationStep AccelerationStep; the acceleration and time step size for the leader 28 * @param followerAccelerationStep AccelerationStep; the acceleration and time step size for the (new) follower 29 */ 30 public DualAccelerationStep(final AccelerationStep leaderAccelerationStep, 31 final AccelerationStep followerAccelerationStep) 32 { 33 this.leaderAccelerationStep = leaderAccelerationStep; 34 this.followerAccelerationStep = followerAccelerationStep; 35 } 36 37 /** 38 * Retrieve the AccelerationStep for the leader GTU. 39 * @return AccelerationStep; the acceleration and time step size for the leader 40 */ 41 public final AccelerationStep getLeaderAccelerationStep() 42 { 43 return this.leaderAccelerationStep; 44 } 45 46 /** 47 * Retrieve the AccelerationStep for the (new) follower GTU. 48 * @return AccelerationStep; the acceleration and time step size for the (new) follower 49 */ 50 public final AccelerationStep getFollowerAccelerationStep() 51 { 52 return this.followerAccelerationStep; 53 } 54 55 /** 56 * Return the acceleration of the leader. 57 * @return DoubleScalar<AccelerationUnit>; the acceleration of the leader 58 */ 59 public final DoubleScalar.Abs<AccelerationUnit> getLeaderAcceleration() 60 { 61 return getLeaderAccelerationStep().getAcceleration(); 62 } 63 64 /** 65 * Return the acceleration of the follower. 66 * @return DoubleScalar<AccelerationUnit>; the acceleration of the follower 67 */ 68 public final DoubleScalar.Abs<AccelerationUnit> getFollowerAcceleration() 69 { 70 return getFollowerAccelerationStep().getAcceleration(); 71 } 72 73 /** 74 * Return the time up to which the result of the leader is valid. 75 * @return DoubleScalar<TimeUnit>; the time up to which the result of the leader is valid 76 */ 77 public final DoubleScalar.Abs<TimeUnit> getLeaderValidUntil() 78 { 79 return getLeaderAccelerationStep().getValidUntil(); 80 } 81 82 /** 83 * Return the time up to which the result of the follower is valid. 84 * @return DoubleScalar<TimeUnit>; the time up to which the result of the follower is valid 85 */ 86 public final DoubleScalar.Abs<TimeUnit> getFollowerValidUntil() 87 { 88 return getFollowerAccelerationStep().getValidUntil(); 89 } 90 91 }