Class CrossSectionElement
java.lang.Object
org.djutils.event.LocalEventProducer
org.opentrafficsim.road.network.lane.CrossSectionElement
- All Implemented Interfaces:
Serializable,Remote,nl.tudelft.simulation.dsol.animation.Locatable,org.djutils.base.Identifiable,org.djutils.event.EventProducer,org.opentrafficsim.base.geometry.OtsLocatable,org.opentrafficsim.base.geometry.SpatialObject
public abstract class CrossSectionElement
extends org.djutils.event.LocalEventProducer
implements org.opentrafficsim.base.geometry.OtsLocatable, Serializable, org.djutils.base.Identifiable
Cross section elements are used to compose a CrossSectionLink.
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, Guus Tamminga
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final CrossSectionLinkCross Section Link to which the element belongs.Fields inherited from interface org.djutils.event.EventProducer
FIRST_POSITION, LAST_POSITION -
Constructor Summary
ConstructorsConstructorDescriptionCrossSectionElement(CrossSectionLink link, String id, CrossSectionGeometry geometry) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionbooleanfinal org.djunits.value.vdouble.scalar.LengthRetrieve the width at the begin of the parent link.org.djutils.draw.bounds.Bounds2dfinal org.opentrafficsim.base.geometry.OtsLine2dRetrieve the center line of this CrossSectionElement.final org.djutils.draw.line.Polygon2dorg.djunits.value.vdouble.scalar.LengthgetElevation(double fractionalPosition) Returns the elevation at the given fractional position.org.djunits.value.vdouble.scalar.LengthgetElevation(org.djunits.value.vdouble.scalar.Length position) Returns the elevation at the given position.final org.djunits.value.vdouble.scalar.LengthRetrieve the width at the end of the parent link.final StringRetrieve the id of this CrossSectionElement.doublegetGrade(double fractionalPosition) Returns the grade at the given fractional position, given as delta_h / delta_f, where f is fractional position.doublegetGrade(org.djunits.value.vdouble.scalar.Length position) Returns the grade at the given position, given as delta_h / delta_f, where f is fractional position.final StringgetId()final org.djunits.value.vdouble.scalar.LengthgetLateralBoundaryPosition(LateralDirectionality lateralDirection, double fractionalLongitudinalPosition) Return the lateral offset from the design line of the parent Link of the Left or Right boundary of this CrossSectionElement at the specified fractional longitudinal position.final org.djunits.value.vdouble.scalar.LengthgetLateralBoundaryPosition(LateralDirectionality lateralDirection, org.djunits.value.vdouble.scalar.Length longitudinalPosition) Return the lateral offset from the design line of the parent Link of the Left or Right boundary of this CrossSectionElement at the specified longitudinal position.final org.djunits.value.vdouble.scalar.LengthgetLateralCenterPosition(double fractionalPosition) Retrieve the lateral offset from the Link design line at the specified longitudinal position.final org.djunits.value.vdouble.scalar.LengthgetLateralCenterPosition(org.djunits.value.vdouble.scalar.Length longitudinalPosition) Retrieve the lateral offset from the Link design line at the specified longitudinal position.final org.djunits.value.vdouble.scalar.LengthReturn the length of this CrossSectionElement as measured along the design line (which equals the center line).final CrossSectionLinkgetLink()Returns the link of this cross-section element.org.djutils.draw.point.OrientedPoint2dfinal RoadNetworkfinal org.djunits.value.vdouble.scalar.LengthRetrieve the offset from the design line at the begin of the parent link.final org.djunits.value.vdouble.scalar.LengthRetrieve the offset from the design line at the end of the parent link.final org.opentrafficsim.base.geometry.OtsShapegetShape()final org.djunits.value.vdouble.scalar.LengthgetWidth(double fractionalPosition) Return the width of this CrossSectionElement at a specified fractional longitudinal position.final org.djunits.value.vdouble.scalar.LengthgetWidth(org.djunits.value.vdouble.scalar.Length longitudinalPosition) Return the width of this CrossSectionElement at a specified longitudinal position.doublegetZ()Retrieve the Z offset (used to determine what covers what when drawing).inthashCode()toString()Methods inherited from class org.djutils.event.LocalEventProducer
addListener, addListener, addListener, addListener, fireEvent, fireEvent, fireEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, getEventListenerMap, getEventTypesWithListeners, getListenerReferences, hasListeners, numberOfListeners, removeAllListeners, removeAllListeners, removeListenerMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface nl.tudelft.simulation.dsol.animation.Locatable
getDirZ
-
Field Details
-
link
Cross Section Link to which the element belongs.
-
-
Constructor Details
-
CrossSectionElement
Constructor.- Parameters:
link- linkid- idgeometry- geometry
-
-
Method Details
-
getLink
Returns the link of this cross-section element.- Returns:
- link of this cross-section element.
-
getNetwork
- Returns:
- the road network to which the lane belongs
-
getLateralCenterPosition
public final org.djunits.value.vdouble.scalar.Length getLateralCenterPosition(double fractionalPosition) Retrieve the lateral offset from the Link design line at the specified longitudinal position.- Parameters:
fractionalPosition- fractional longitudinal position on this Lane- Returns:
- the lateralCenterPosition at the specified longitudinal position
-
getLateralCenterPosition
public final org.djunits.value.vdouble.scalar.Length getLateralCenterPosition(org.djunits.value.vdouble.scalar.Length longitudinalPosition) Retrieve the lateral offset from the Link design line at the specified longitudinal position.- Parameters:
longitudinalPosition- the longitudinal position on this Lane- Returns:
- the lateralCenterPosition at the specified longitudinal position
-
getWidth
public final org.djunits.value.vdouble.scalar.Length getWidth(org.djunits.value.vdouble.scalar.Length longitudinalPosition) Return the width of this CrossSectionElement at a specified longitudinal position.- Parameters:
longitudinalPosition- the longitudinal position- Returns:
- the width of this CrossSectionElement at the specified longitudinal position.
-
getWidth
public final org.djunits.value.vdouble.scalar.Length getWidth(double fractionalPosition) Return the width of this CrossSectionElement at a specified fractional longitudinal position.- Parameters:
fractionalPosition- the fractional longitudinal position- Returns:
- the width of this CrossSectionElement at the specified fractional longitudinal position.
-
getLength
public final org.djunits.value.vdouble.scalar.Length getLength()Return the length of this CrossSectionElement as measured along the design line (which equals the center line).- Returns:
- the length of this CrossSectionElement
-
getOffsetAtBegin
public final org.djunits.value.vdouble.scalar.Length getOffsetAtBegin()Retrieve the offset from the design line at the begin of the parent link.- Returns:
- the offset of this CrossSectionElement at the begin of the parent link
-
getOffsetAtEnd
public final org.djunits.value.vdouble.scalar.Length getOffsetAtEnd()Retrieve the offset from the design line at the end of the parent link.- Returns:
- the offset of this CrossSectionElement at the end of the parent link
-
getBeginWidth
public final org.djunits.value.vdouble.scalar.Length getBeginWidth()Retrieve the width at the begin of the parent link.- Returns:
- the width of this CrossSectionElement at the begin of the parent link
-
getEndWidth
public final org.djunits.value.vdouble.scalar.Length getEndWidth()Retrieve the width at the end of the parent link.- Returns:
- the width of this CrossSectionElement at the end of the parent link
-
getZ
public double getZ()Retrieve the Z offset (used to determine what covers what when drawing).- Specified by:
getZin interfacenl.tudelft.simulation.dsol.animation.Locatable- Returns:
- the Z-offset for drawing (what's on top, what's underneath).
-
getCenterLine
public final org.opentrafficsim.base.geometry.OtsLine2d getCenterLine()Retrieve the center line of this CrossSectionElement.- Returns:
- the center line of this CrossSectionElement
-
getContour
public final org.djutils.draw.line.Polygon2d getContour()- Specified by:
getContourin interfaceorg.opentrafficsim.base.geometry.SpatialObject
-
getShape
public final org.opentrafficsim.base.geometry.OtsShape getShape()- Specified by:
getShapein interfaceorg.opentrafficsim.base.geometry.OtsLocatable
-
getId
- Specified by:
getIdin interfaceorg.djutils.base.Identifiable
-
getFullId
Retrieve the id of this CrossSectionElement.- Returns:
- the id of this CrossSectionElement
-
getLateralBoundaryPosition
public final org.djunits.value.vdouble.scalar.Length getLateralBoundaryPosition(LateralDirectionality lateralDirection, double fractionalLongitudinalPosition) Return the lateral offset from the design line of the parent Link of the Left or Right boundary of this CrossSectionElement at the specified fractional longitudinal position.- Parameters:
lateralDirection- LEFT, or RIGHTfractionalLongitudinalPosition- ranges from 0.0 (begin of parentLink) to 1.0 (end of parentLink)- Returns:
- Length
- Throws:
IllegalArgumentException- when lateral direction isnullor NONE.
-
getLateralBoundaryPosition
public final org.djunits.value.vdouble.scalar.Length getLateralBoundaryPosition(LateralDirectionality lateralDirection, org.djunits.value.vdouble.scalar.Length longitudinalPosition) Return the lateral offset from the design line of the parent Link of the Left or Right boundary of this CrossSectionElement at the specified longitudinal position.- Parameters:
lateralDirection- LEFT, or RIGHTlongitudinalPosition- the position along the length of this CrossSectionElement- Returns:
- Length
-
getLocation
public org.djutils.draw.point.OrientedPoint2d getLocation()- Specified by:
getLocationin interfacenl.tudelft.simulation.dsol.animation.Locatable- Specified by:
getLocationin interfaceorg.opentrafficsim.base.geometry.OtsLocatable
-
getBounds
public org.djutils.draw.bounds.Bounds2d getBounds()- Specified by:
getBoundsin interfacenl.tudelft.simulation.dsol.animation.Locatable- Specified by:
getBoundsin interfaceorg.opentrafficsim.base.geometry.OtsLocatable
-
getElevation
public org.djunits.value.vdouble.scalar.Length getElevation(org.djunits.value.vdouble.scalar.Length position) Returns the elevation at the given position.- Parameters:
position- position.- Returns:
- elevation at the given position.
-
getElevation
public org.djunits.value.vdouble.scalar.Length getElevation(double fractionalPosition) Returns the elevation at the given fractional position.- Parameters:
fractionalPosition- fractional position.- Returns:
- elevation at the given fractional position.
-
getGrade
public double getGrade(org.djunits.value.vdouble.scalar.Length position) Returns the grade at the given position, given as delta_h / delta_f, where f is fractional position.- Parameters:
position- position.- Returns:
- grade at the given position.
-
getGrade
public double getGrade(double fractionalPosition) Returns the grade at the given fractional position, given as delta_h / delta_f, where f is fractional position.- Parameters:
fractionalPosition- fractional position.- Returns:
- grade at the given fractional position.
-
toString
-
hashCode
public int hashCode() -
equals
-