public abstract class CrossSectionElement extends EventProducer implements Locatable, Serializable, Identifiable
Copyright (c) 2013-2018 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.
$LastChangedDate: 2015-09-14 01:33:02 +0200 (Mon, 14 Sep 2015) $, @version $Revision: 1401 $, by $Author: averbraeck $,
initial version Aug 19, 2014
Modifier and Type | Field and Description |
---|---|
protected List<CrossSectionSlice> |
crossSectionSlices
The offsets and widths at positions along the line, relative to the design line of the parent link.
|
protected Length |
length
The length of the line.
|
protected CrossSectionLink |
parentLink
Cross Section Link to which the element belongs.
|
listeners
FIRST_POSITION, LAST_POSITION
Modifier | Constructor and Description |
---|---|
protected |
CrossSectionElement(CrossSectionLink newCrossSectionLink,
SimulatorInterface.TimeDoubleUnit newSimulator,
boolean animation,
CrossSectionElement cse)
Clone a CrossSectionElement for a new network.
|
|
CrossSectionElement(CrossSectionLink parentLink,
String id,
Length lateralOffset,
Length width)
Note: LEFT is seen as a positive lateral direction, RIGHT as a negative lateral direction, with the direction from
the StartNode towards the EndNode as the longitudinal direction.
|
|
CrossSectionElement(CrossSectionLink parentLink,
String id,
Length lateralOffsetAtBegin,
Length lateralOffsetAtEnd,
Length beginWidth,
Length endWidth)
Note: LEFT is seen as a positive lateral direction, RIGHT as a negative lateral direction, with the direction from
the StartNode towards the EndNode as the longitudinal direction.
|
|
CrossSectionElement(CrossSectionLink parentLink,
String id,
List<CrossSectionSlice> crossSectionSlices)
Note: LEFT is seen as a positive lateral direction, RIGHT as a negative lateral direction, with the direction from
the StartNode towards the EndNode as the longitudinal direction.
|
Modifier and Type | Method and Description |
---|---|
abstract CrossSectionElement |
clone(CrossSectionLink newParentLink,
SimulatorInterface.TimeDoubleUnit newSimulator,
boolean animation)
Clone the CrossSectionElement for e.g., copying a network.
|
static OTSShape |
constructContour(CrossSectionElement cse)
Construct a buffer geometry by offsetting the linear geometry line with a distance and constructing a so-called "buffer"
around it.
|
boolean |
equals(Object obj) |
Length |
getBeginWidth()
Retrieve the width at the begin of the parent link.
|
javax.media.j3d.Bounds |
getBounds() |
OTSLine3D |
getCenterLine()
Retrieve the center line of this CrossSectionElement.
|
OTSShape |
getContour()
Retrieve the contour of this CrossSectionElement.
|
Length |
getDesignLineOffsetAtBegin()
Retrieve the offset from the design line at the begin of the parent link.
|
Length |
getDesignLineOffsetAtEnd()
Retrieve the offset from the design line at the end of the parent link.
|
Length |
getEndWidth()
Retrieve the width at the end of the parent link.
|
String |
getFullId()
Retrieve the id of this CrossSectionElement.
|
String |
getId()
Retrieve the id of this CrossSectionElement.
|
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.
|
Length |
getLateralBoundaryPosition(LateralDirectionality lateralDirection,
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.
|
Length |
getLateralCenterPosition(double fractionalPosition)
Retrieve the lateral offset from the Link design line at the specified longitudinal position.
|
Length |
getLateralCenterPosition(Length longitudinalPosition)
Retrieve the lateral offset from the Link design line at the specified longitudinal position.
|
Length |
getLength()
Return the length of this CrossSectionElement as measured along the design line (which equals the center line).
|
DirectedPoint |
getLocation() |
CrossSectionLink |
getParentLink() |
Length |
getWidth(double fractionalPosition)
Return the width of this CrossSectionElement at a specified fractional longitudinal position.
|
Length |
getWidth(Length longitudinalPosition)
Return the width of this CrossSectionElement at a specified longitudinal position.
|
protected abstract double |
getZ()
Retrieve the Z offset (used to determine what covers what when drawing).
|
int |
hashCode() |
String |
toString() |
addListener, addListener, addListener, addListener, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, removeAllListeners, removeAllListeners, removeListener
protected final CrossSectionLink parentLink
protected final List<CrossSectionSlice> crossSectionSlices
protected final Length length
public CrossSectionElement(CrossSectionLink parentLink, String id, List<CrossSectionSlice> crossSectionSlices) throws OTSGeometryException, NetworkException
id
- String; The id of the CrosssSectionElement. Should be unique within the parentLink.parentLink
- CrossSectionLink; Link to which the element belongs.crossSectionSlices
- List<CrossSectionSlice>; the offsets and widths at positions along the line, relative to
the design line of the parent link. If there is just one with and offset, there should just be one element in
the list with Length = 0. If there are more slices, the last one should be at the length of the design line.
If not, a NetworkException is thrown.OTSGeometryException
- when creation of the geometry failsNetworkException
- when id equal to null or not unique, or there are multiple slices and the last slice does not
end at the length of the design line.public CrossSectionElement(CrossSectionLink parentLink, String id, Length lateralOffsetAtBegin, Length lateralOffsetAtEnd, Length beginWidth, Length endWidth) throws OTSGeometryException, NetworkException
id
- String; The id of the CrosssSectionElement. Should be unique within the parentLink.parentLink
- CrossSectionLink; Link to which the element belongs.lateralOffsetAtBegin
- Length; the lateral offset of the design line of the new CrossSectionLink with respect to the
design line of the parent Link at the start of the parent LinklateralOffsetAtEnd
- Length; the lateral offset of the design line of the new CrossSectionLink with respect to the
design line of the parent Link at the end of the parent LinkbeginWidth
- Length; width at start, positioned symmetrically around the design lineendWidth
- Length; width at end, positioned symmetrically around the design lineOTSGeometryException
- when creation of the geometry failsNetworkException
- when id equal to null or not uniqueprotected CrossSectionElement(CrossSectionLink newCrossSectionLink, SimulatorInterface.TimeDoubleUnit newSimulator, boolean animation, CrossSectionElement cse) throws NetworkException
newCrossSectionLink
- the new link to which the clone belongsnewSimulator
- the new simulator for this networkanimation
- whether to (re)create animation or notcse
- the element to clone fromNetworkException
- if link already exists in the network, if name of the link is not unique, or if the start node
or the end node of the link are not registered in the network.public CrossSectionElement(CrossSectionLink parentLink, String id, Length lateralOffset, Length width) throws OTSGeometryException, NetworkException
id
- String; The id of the CrosssSectionElement. Should be unique within the parentLink.parentLink
- CrossSectionLink; Link to which the element belongs.lateralOffset
- Length; the lateral offset of the design line of the new CrossSectionLink with respect to the design
line of the parent Linkwidth
- Length; width, positioned symmetrically around the design lineOTSGeometryException
- when creation of the geometry failsNetworkException
- when id equal to null or not uniquepublic final CrossSectionLink getParentLink()
public final Length getLateralCenterPosition(double fractionalPosition)
fractionalPosition
- double; fractional longitudinal position on this Lanepublic final Length getLateralCenterPosition(Length longitudinalPosition)
longitudinalPosition
- Length; the longitudinal position on this Lanepublic final Length getWidth(Length longitudinalPosition)
longitudinalPosition
- DoubleScalar<LengthUnit>; the longitudinal positionpublic final Length getWidth(double fractionalPosition)
fractionalPosition
- double; the fractional longitudinal positionpublic final Length getLength()
public final Length getDesignLineOffsetAtBegin()
public final Length getDesignLineOffsetAtEnd()
public final Length getBeginWidth()
public final Length getEndWidth()
protected abstract double getZ()
public final OTSLine3D getCenterLine()
public final OTSShape getContour()
public final String getId()
getId
in interface Identifiable
public final String getFullId()
public final Length getLateralBoundaryPosition(LateralDirectionality lateralDirection, double fractionalLongitudinalPosition)
lateralDirection
- LateralDirectionality; LEFT, or RIGHTfractionalLongitudinalPosition
- double; ranges from 0.0 (begin of parentLink) to 1.0 (end of parentLink)public final Length getLateralBoundaryPosition(LateralDirectionality lateralDirection, Length longitudinalPosition)
lateralDirection
- LateralDirectionality; LEFT, or RIGHTlongitudinalPosition
- Length; the position along the length of this CrossSectionElementpublic static OTSShape constructContour(CrossSectionElement cse) throws OTSGeometryException, NetworkException
cse
- CrossSectionElement; the cross section element to construct the contour forOTSGeometryException
- when construction of the geometry failsNetworkException
- when the resulting contour is degenerate (cannot happen; we hope)public DirectedPoint getLocation()
getLocation
in interface Locatable
public abstract CrossSectionElement clone(CrossSectionLink newParentLink, SimulatorInterface.TimeDoubleUnit newSimulator, boolean animation) throws NetworkException
newParentLink
- the new link to which the clone belongsnewSimulator
- the new simulator for this networkanimation
- whether to (re)create animation or notNetworkException
- in case the cloning failsCopyright © 2014–2018 Delft University of Technology. All rights reserved.