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
Direct Known Subclasses:
Lane, Stripe

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

    Fields
    Modifier and Type
    Field
    Description
    protected final CrossSectionLink
    Cross Section Link to which the element belongs.

    Fields inherited from interface org.djutils.event.EventProducer

    FIRST_POSITION, LAST_POSITION
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
     
    final org.djunits.value.vdouble.scalar.Length
    Retrieve the width at the begin of the parent link.
    org.djutils.draw.bounds.Bounds2d
     
    final org.opentrafficsim.base.geometry.OtsLine2d
    Retrieve the center line of this CrossSectionElement.
    final org.djutils.draw.line.Polygon2d
     
    org.djunits.value.vdouble.scalar.Length
    getElevation(double fractionalPosition)
    Returns the elevation at the given fractional position.
    org.djunits.value.vdouble.scalar.Length
    getElevation(org.djunits.value.vdouble.scalar.Length position)
    Returns the elevation at the given position.
    final org.djunits.value.vdouble.scalar.Length
    Retrieve the width at the end of the parent link.
    final String
    Retrieve the id of this CrossSectionElement.
    double
    getGrade(double fractionalPosition)
    Returns the grade at the given fractional position, given as delta_h / delta_f, where f is fractional position.
    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.
    final String
     
    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.
    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.
    final org.djunits.value.vdouble.scalar.Length
    getLateralCenterPosition(double fractionalPosition)
    Retrieve the lateral offset from the Link design line at the specified longitudinal position.
    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.
    final org.djunits.value.vdouble.scalar.Length
    Return the length of this CrossSectionElement as measured along the design line (which equals the center line).
    Returns the link of this cross-section element.
    org.djutils.draw.point.OrientedPoint2d
     
     
    final org.djunits.value.vdouble.scalar.Length
    Retrieve the offset from the design line at the begin of the parent link.
    final org.djunits.value.vdouble.scalar.Length
    Retrieve the offset from the design line at the end of the parent link.
    final org.opentrafficsim.base.geometry.OtsShape
     
    final org.djunits.value.vdouble.scalar.Length
    getWidth(double fractionalPosition)
    Return the width of this CrossSectionElement at a specified fractional longitudinal position.
    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.
    double
    Retrieve the Z offset (used to determine what covers what when drawing).
    int
     
     

    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, removeListener

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface nl.tudelft.simulation.dsol.animation.Locatable

    getDirZ
  • Field Details

  • Constructor Details

  • Method Details

    • getLink

      public final CrossSectionLink getLink()
      Returns the link of this cross-section element.
      Returns:
      link of this cross-section element.
    • getNetwork

      public final RoadNetwork 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:
      getZ in interface nl.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:
      getContour in interface org.opentrafficsim.base.geometry.SpatialObject
    • getShape

      public final org.opentrafficsim.base.geometry.OtsShape getShape()
      Specified by:
      getShape in interface org.opentrafficsim.base.geometry.OtsLocatable
    • getId

      public final String getId()
      Specified by:
      getId in interface org.djutils.base.Identifiable
    • getFullId

      public final String 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 RIGHT
      fractionalLongitudinalPosition - ranges from 0.0 (begin of parentLink) to 1.0 (end of parentLink)
      Returns:
      Length
      Throws:
      IllegalArgumentException - when lateral direction is null or 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 RIGHT
      longitudinalPosition - the position along the length of this CrossSectionElement
      Returns:
      Length
    • getLocation

      public org.djutils.draw.point.OrientedPoint2d getLocation()
      Specified by:
      getLocation in interface nl.tudelft.simulation.dsol.animation.Locatable
      Specified by:
      getLocation in interface org.opentrafficsim.base.geometry.OtsLocatable
    • getBounds

      public org.djutils.draw.bounds.Bounds2d getBounds()
      Specified by:
      getBounds in interface nl.tudelft.simulation.dsol.animation.Locatable
      Specified by:
      getBounds in interface org.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

      public String toString()
      Overrides:
      toString in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object