Class Conflict
java.lang.Object
org.djutils.event.LocalEventProducer
org.opentrafficsim.core.object.StaticObject
org.opentrafficsim.road.network.lane.object.AbstractLaneBasedObject
org.opentrafficsim.road.network.lane.conflict.Conflict
- All Implemented Interfaces:
Serializable,Remote,EventListener,nl.tudelft.simulation.dsol.animation.Locatable,org.djutils.base.Identifiable,org.djutils.event.EventListener,org.djutils.event.EventProducer,org.opentrafficsim.base.geometry.OtsLocatable,Drawable,LocatedObject,LaneBasedObject
public final class Conflict
extends AbstractLaneBasedObject
implements org.djutils.event.EventListener
Conflicts deal with traffic on different links/roads that need to consider each other as their paths may be in conflict
spatially. A single
This class provides easy access to upstream and downstream GTUs through
Conflict represents the one-sided consideration of a conflicting situation. I.e., what is
considered a single conflict in traffic theory, is represented by two Conflicts, one on each of the
conflicting Lanes.This class provides easy access to upstream and downstream GTUs through
PerceptionIterables using methods
getUpstreamGtus and getDownstreamGtus. These methods are efficient in that they reuse underlying data
structures if the GTUs are requested at the same time by another GTU.
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
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassLight-weight lane based object to indicate the end of a conflict. -
Field Summary
Fields inherited from interface org.djutils.event.EventProducer
FIRST_POSITION, LAST_POSITION -
Method Summary
Modifier and TypeMethodDescriptionstatic voidgenerateConflictPair(ConflictType conflictType, ConflictRule conflictRule, boolean permitted, Lane lane1, org.djunits.value.vdouble.scalar.Length longitudinalPosition1, org.djunits.value.vdouble.scalar.Length length1, org.djutils.draw.line.Polygon2d geometry1, Lane lane2, org.djunits.value.vdouble.scalar.Length longitudinalPosition2, org.djunits.value.vdouble.scalar.Length length2, org.djutils.draw.line.Polygon2d geometry2, OtsSimulatorInterface simulator) Creates a pair of conflicts.getDownstreamGtus(LaneBasedGtu perceivingGtu, HeadwayGtuType headwayGtuType, org.djunits.value.vdouble.scalar.Length visibility) Provides the downstream GTUs.org.djutils.draw.line.Polygon2dorg.djunits.value.vdouble.scalar.LengthReturns the length of the object.org.djunits.value.vdouble.scalar.LengthgetTrafficLightDistance(org.djunits.value.vdouble.scalar.Length maxDistance) Returns the distance to an upstream traffic light.getUpstreamGtus(LaneBasedGtu perceivingGtu, HeadwayGtuType headwayGtuType, org.djunits.value.vdouble.scalar.Length visibility) Provides the upstream GTUs.doublegetZ()protected voidinit()booleanIf permitted, traffic upstream of traffic lights may not be ignored, as these can have green light.voidnotify(org.djutils.event.Event event) toString()Methods inherited from class org.opentrafficsim.road.network.lane.object.AbstractLaneBasedObject
getFullId, getLane, getLongitudinalPositionMethods inherited from class org.opentrafficsim.core.object.StaticObject
create, create, getBounds, getHeight, getId, getLocationMethods 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, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.djutils.event.EventProducer
addListener, addListener, addListener, addListener, fireEvent, fireEvent, fireEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, getEventListenerMap, getEventTypesWithListeners, getListenerReferences, hasListeners, numberOfListeners, removeAllListeners, removeAllListeners, removeListenerMethods inherited from interface org.djutils.base.Identifiable
getIdMethods inherited from interface org.opentrafficsim.road.network.lane.object.LaneBasedObject
getLocationMethods inherited from interface nl.tudelft.simulation.dsol.animation.Locatable
getDirZMethods inherited from interface org.opentrafficsim.core.object.LocatedObject
getHeightMethods inherited from interface org.opentrafficsim.base.geometry.OtsLocatable
getBounds
-
Method Details
-
init
- Overrides:
initin classAbstractLaneBasedObject- Throws:
NetworkException
-
getUpstreamGtus
public PerceptionCollectable<HeadwayGtu,LaneBasedGtu> getUpstreamGtus(LaneBasedGtu perceivingGtu, HeadwayGtuType headwayGtuType, org.djunits.value.vdouble.scalar.Length visibility) Provides the upstream GTUs.- Parameters:
perceivingGtu- LaneBasedGtu; perceiving GTUheadwayGtuType- HeadwayGtuType; headway GTU type to usevisibility- Length; distance over which GTU's are provided- Returns:
- PerceptionIterable<HeadwayGtU>; iterable over the upstream GTUs
-
getDownstreamGtus
public PerceptionCollectable<HeadwayGtu,LaneBasedGtu> getDownstreamGtus(LaneBasedGtu perceivingGtu, HeadwayGtuType headwayGtuType, org.djunits.value.vdouble.scalar.Length visibility) Provides the downstream GTUs.- Parameters:
perceivingGtu- LaneBasedGtu; perceiving GTUheadwayGtuType- HeadwayGtuType; headway GTU type to usevisibility- Length; distance over which GTU's are provided- Returns:
- PerceptionIterable<HeadwayGtU>; iterable over the downstream GTUs
-
notify
- Specified by:
notifyin interfaceorg.djutils.event.EventListener- Throws:
RemoteException
-
getConflictType
- Returns:
- conflictType.
-
getConflictRule
- Returns:
- conflictRule.
-
conflictPriority
- Returns:
- conflictPriority.
-
getGeometry
public org.djutils.draw.line.Polygon2d getGeometry()- Specified by:
getGeometryin interfaceLocatedObject- Overrides:
getGeometryin classStaticObject
-
getLength
public org.djunits.value.vdouble.scalar.Length getLength()Returns the length of the object. The default value is zero.- Specified by:
getLengthin interfaceLaneBasedObject- Returns:
- Length; length of the object.
-
getOtherConflict
- Returns:
- otherConflict.
-
isPermitted
public boolean isPermitted()If permitted, traffic upstream of traffic lights may not be ignored, as these can have green light.- Returns:
- permitted.
-
getTrafficLightDistance
public org.djunits.value.vdouble.scalar.Length getTrafficLightDistance(org.djunits.value.vdouble.scalar.Length maxDistance) Returns the distance to an upstream traffic light.- Parameters:
maxDistance- Length; maximum distance of traffic light- Returns:
- Length; distance to upstream traffic light, infinite if beyond maximum distance
-
generateConflictPair
public static void generateConflictPair(ConflictType conflictType, ConflictRule conflictRule, boolean permitted, Lane lane1, org.djunits.value.vdouble.scalar.Length longitudinalPosition1, org.djunits.value.vdouble.scalar.Length length1, org.djutils.draw.line.Polygon2d geometry1, Lane lane2, org.djunits.value.vdouble.scalar.Length longitudinalPosition2, org.djunits.value.vdouble.scalar.Length length2, org.djutils.draw.line.Polygon2d geometry2, OtsSimulatorInterface simulator) throws NetworkException Creates a pair of conflicts.- Parameters:
conflictType- ConflictType; conflict type, i.e. crossing, merge or splitconflictRule- ConflictRule; conflict rulepermitted- boolean; whether the conflict is permitted in traffic light controllane1- Lane; lane of conflict 1longitudinalPosition1- Length; longitudinal position of conflict 1length1- Length;Lengthof conflict 1geometry1- Polygon2d; geometry of conflict 1lane2- Lane; lane of conflict 2longitudinalPosition2- Length; longitudinal position of conflict 2length2- Length;Lengthof conflict 2geometry2- Polygon2d; geometry of conflict 2simulator- OtsSimulatorInterface; the simulator for animation and timed events- Throws:
NetworkException- if the combination of conflict type and both conflict rules is not correct
-
getZ
- Specified by:
getZin interfacenl.tudelft.simulation.dsol.animation.Locatable- Throws:
RemoteException
-
toString
- Overrides:
toStringin classAbstractLaneBasedObject
-