Interface LaneChange.LaneChangePath
- All Known Implementing Classes:
LaneChange.LaneChangePath.InterpolatedLaneChangePath
,LaneChange.LaneChangePath.SequentialLaneChangePath
- Enclosing class:
- LaneChange
public static interface LaneChange.LaneChangePath
Provides a (partial) path during lane changes.
Copyright (c) 2013-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.
- Author:
- Alexander Verbraeck, Peter Knoppers, Wouter Schakel
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic class
Helper class for interpolation between the from and to center lines.static class
A helper class to allow a lane change to follow a sequential determination of the target position (including rotation) for each time step. -
Field Summary
Modifier and TypeFieldDescriptionstatic final LaneChange.LaneChangePath
A simple Bezier curve directly to the lane change target position.static final LaneChange.LaneChangePath
Linear interpolation between center lines.static final LaneChange.LaneChangePath
The target point (including rotation) for the coming time step is based on a 3rd-degree polynomial.static final LaneChange.LaneChangePath
The target point (including rotation) for the coming time step is based on a sine wave.static final LaneChange.LaneChangePath
Sine-shaped interpolation between center lines. -
Method Summary
Modifier and TypeMethodDescriptiongetPath
(org.djunits.value.vdouble.scalar.Duration timeStep, org.djunits.value.vdouble.scalar.Length planDistance, org.djunits.value.vdouble.scalar.Speed meanSpeed, LanePosition from, org.djutils.draw.point.OrientedPoint2d startPosition, LateralDirectionality laneChangeDirection, OtsLine2d fromLine, OtsLine2d toLine, org.djunits.value.vdouble.scalar.Duration laneChangeDuration, double lcFraction) Returns a (partial) path for a lane change.
-
Field Details
-
SINE_INTERP
Sine-shaped interpolation between center lines. -
LINEAR
Linear interpolation between center lines. -
BEZIER
A simple Bezier curve directly to the lane change target position. -
SINE
The target point (including rotation) for the coming time step is based on a sine wave. -
POLY3
The target point (including rotation) for the coming time step is based on a 3rd-degree polynomial.
-
-
Method Details
-
getPath
OtsLine2d getPath(org.djunits.value.vdouble.scalar.Duration timeStep, org.djunits.value.vdouble.scalar.Length planDistance, org.djunits.value.vdouble.scalar.Speed meanSpeed, LanePosition from, org.djutils.draw.point.OrientedPoint2d startPosition, LateralDirectionality laneChangeDirection, OtsLine2d fromLine, OtsLine2d toLine, org.djunits.value.vdouble.scalar.Duration laneChangeDuration, double lcFraction) throws OtsGeometryException Returns a (partial) path for a lane change. The method is called both at the start and during a lane change, and should return a valid path. This path should at least have a length ofplanDistance
, unless the lane change will be finished during the coming time step. In that case, the caller of this method is to lengthen the path along the center line of the target lane.- Parameters:
timeStep
- Duration; time stepplanDistance
- Length; distance covered during the operational planmeanSpeed
- Speed; mean speed during time stepfrom
- LanePosition; current position on the from-lanesstartPosition
- OrientedPoint2d; current 2D positionlaneChangeDirection
- LateralDirectionality; lane change directionfromLine
- OtsLine2d; from linetoLine
- OtsLine2d; to linelaneChangeDuration
- Duration; current considered duration of the entire lane changelcFraction
- double; fraction of lane change done so far- Returns:
- OtsLine2d a (partial) path for a lane change
- Throws:
OtsGeometryException
- on wrong fractional position
-