18 #include <matrix/vlVector.h>
19 #include <matrix/coordTransform.h>
20 #include <vlpi/appearance.h>
31 #define DT_ROAD_SEGMENT_NO_LANE -1
34 #define CENTERLINE_EPSILON 0.001
62 virtual DtTrafficControlIndication currentIndication()
const;
63 virtual DtString indicationString(DtTrafficControlIndication ind)
const;
67 virtual void setCurrentIndication(
const DtTrafficControlIndication signal);
71 virtual bool isStatic()
const;
72 virtual void setIsStatic(
const bool isStatic);
83 virtual double positionAlongLane()
const;
84 virtual void setPositionAlongLane(
const double p);
88 return app.powerPlantOn();
93 return app.flamesPresent();
98 return app.smokePlumePresent();
234 myRoadSegment = parent;
249 virtual void generateFirstHalfLanePoints(std::vector<DtVector>& pointList,
251 int pointsInCurve = 5);
260 virtual void generateSecondHalfLanePoints(std::vector<DtVector>& pointList,
262 int pointsInCurve = 5);
279 myConnectingDownstreamLane = lane;
284 myConnectingUpstreamLane = lane;
309 virtual double calculateInsideEntryCurveGeometry(
double headingChange,
310 double cosHeadingChange,
double sinHeadingChange,
317 virtual void calculateEntryCurveGeometry(
double segmentLeftEdgeRadius,
318 double headingChange,
352 virtual double calculateInsideExitCurveGeometry(
double segmentLeftEdgeRadius,
353 double headingChange,
354 double cosHeadingChange,
double sinHeadingChange,
361 virtual void calculateExitCurveGeometry(
double segmentLeftEdgeRadius,
362 double headingChange,
464 virtual bool initializeFromRailSegment(
DtRailSegment* railSegment,
495 virtual bool calculateTemporaryExitGeometry(
const double maxSmallBendRadius,
496 const double vehicleWidth,
const double headingChange,
497 const double cosHeadingChange,
const double sinHeadingChange,
512 virtual bool calculateTemporaryEntryGeometry(
const double headingChange,
513 const double cosHeadingChange,
const double sinHeadingChange,
535 virtual bool initializeExitCurve(
536 const double maxSmallBendTurnRadius,
const double vehicleWidth,
537 const double headingChange,
538 const double cosHeadingChange,
const double sinHeadingChange,
556 virtual bool initializeEntryCurve(
const double headingChange,
557 const double cosHeadingChange,
const double sinHeadingChange,
566 virtual void setExitCurvesForEndingLanes();
588 bool isDrivingOnLeft,
590 bool fillOpposingSegment =
true);
598 virtual void connectWithNextConsideringBreakdownLane(
DtRoadSegment* nextSegment,
599 bool isDrivingOnLeft,
601 bool fillOpposingSegment,
602 bool useBreakdownLane);
611 virtual void determineIfIntersectionApproach(
const DtRoadSegment* next);
627 virtual bool computeSegmentToLocalTransform(
629 const bool isDriveOnLeft,
const bool debug =
false);
639 myAllAltitudesDetermined = b;
645 return myDefaultAltitude;
649 myDefaultAltitude = altitude;
664 const double positionAlongLane);
668 virtual double distanceFromLaneEnd(
const int laneN,
669 const double positionAlongLane);
673 virtual double evenPositionAlongLane(
const double positionAlongLaneA,
674 const int laneA,
const int laneB);
696 virtual bool localPositionFromLanePosition(
const int laneN,
697 const double positionAlongLane,
const double lateralOffset,
bool isDrivingOnLeft,
698 DtVector& localPosition,
double& headingOffset,
699 double& distanceBeyond)
const;
706 virtual bool lanePositionFromLocalPosition(
const DtVector localPosition,
707 const int laneN,
bool isDrivingOnLeft,
708 double &positionInLane,
double& laneOffset,
723 virtual int rightmostContinuingLane()
const;
727 virtual int rightmostContinuingTravelLane(
bool bAllowingBreakdownLane=
false)
const;
739 virtual int findNearestContinuingLane(
const int laneN,
740 const double positionAlongLane,
const double lookAheadDistance,
bool debug =
false);
751 virtual bool laneContinuesForDistance(
const int laneN,
752 const double positionAlongLane,
const double lookDistance,
753 double & actualDistance,
bool & pathContinues,
bool debug =
false);
761 virtual int matchingLane(
const double offset);
768 virtual double heading()
const {
return myHeading;}
775 virtual double length()
const {
return myLength;}
795 mySegmentToLocal = xform;
798 virtual int numLanes()
const {
return myNumberLanes;}
799 virtual void setNumLanes(
const int nLanes) {myNumberLanes = nLanes;}
809 virtual void setIsOneWay(
const bool oneWay) {myIsOneWay = oneWay;}
846 virtual double defaultSpeedLimit(
const int numLanes);
861 myOpposingSegment = s;
872 virtual DtTmpGeometry* temporaryGeometry() ;
883 virtual void findRightMostAlignedLane(
DtRoadSegment* nextSegment,
884 int& rightMostLane,
int& nextSegmentRightMostLane,
885 int& numAlignedLanes);
891 virtual void findLeftMostAlignedLane(
DtRoadSegment* nextSegment,
892 int& leftMostLane,
int& nextSegmentLeftMostLane,
893 int& numAlignedLanes);
double myExitCurveStartOffset
Similarly, where the exit curve starts, relative to the end of the segment.
Definition: roadSegment.h:997
virtual bool isIntersectionApproach() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:829
virtual double freeFlowSpeed() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:848
virtual bool isOpposing() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:864
virtual void setExitCurveStartOffset(const double o)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:827
virtual double minIntersectionBendAngle()
This defines how much of an angle between segments is required for the connection to be considered an...
Definition: roadSegment.h:917
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
virtual void setAllAltitudesDetermined(const bool b)
Fills in values for lane width, number of lanes, median width, and so forth from the rail segment...
Definition: roadSegment.h:637
virtual double stopLineSetBack() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:835
DtSimObjectReference myTrafficLight
If and only if the TCD is not static, then consult this for indication:
Definition: roadSegment.h:107
double myDesiredLeftEdgeEntryRadius
Desired R for the segment left edge. R for the inside lane is computed from this by adding/subtractin...
Definition: roadSegment.h:429
virtual int laneNumber() const
Definition: roadSegment.h:228
bool myEntryBendsRight
Refers to the connection from the upstream segment:
Definition: roadSegment.h:989
DtRoadSegment * myOpposingSegment
Only valid if not a one-way segment.
Definition: roadSegment.h:1008
This class is used to interface with the terrain a particular entity is "attached" to...
Definition: attachedTerrain.h:57
virtual double intrxThresholdAngleToConnectAllLanes()
This defines a threshold between segments at an intersection that determines whether all aligned lane...
Definition: roadSegment.h:946
int myConnectingUpstreamLane
Upstream connecting lane.
Definition: roadSegment.h:378
virtual void setRoadName(const DtString &name)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:785
virtual void setParentRoadSegment(DtRoadSegment *parent)
Definition: roadSegment.h:232
virtual bool isModerateExitTurn() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:832
virtual double speedLimit() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:838
virtual int connectingDownstreamLane() const
Definition: roadSegment.h:276
virtual double minimumLaneWidth()
The minimum lane width expected from the feature data. Default value 2.0.
Definition: roadSegment.h:964
virtual void setStopLineSetBack(const double sb)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:836
DtTrafficControlIndication myTrafficControlIndication
Definition: roadSegment.h:105
double myLength
The length of the underlying road feature, ie the rail segment.
Definition: roadSegment.h:972
virtual void setIsModerateExitTurn(bool bYes)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:833
virtual const DtLaneSegment * lanes() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:806
Definition: roadSegment.h:398
virtual bool hasRedIndication(const DtAppearance &app) const
Definition: roadSegment.h:86
Definition: roadSegment.h:396
bool myAllAltitudesDetermined
Definition: roadSegment.h:980
virtual DtRoadSegment * parentRoadSegment() const
Definition: roadSegment.h:231
double myDefaultAltitude
Definition: roadSegment.h:981
virtual void setIsOpposing(const bool opposing)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:865
double myStraightSectionLength
This is the length of the straight section between the entry and exit curves. If this road segment an...
Definition: roadSegment.h:199
double myExitCurveLength
This offset is normally negative, meaning that the curve starts before the end of the segment...
Definition: roadSegment.h:204
virtual double entryCurveEndOffset() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:823
virtual int numLanes() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:798
virtual void setOpposingSegment(DtRoadSegment *s)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:859
virtual bool hasYellowIndication(const DtAppearance &app) const
Definition: roadSegment.h:91
double myMinExitCurveSpace
Ditto for exit curve. Note that offset (or setback) is positive along the positive segment X coordina...
Definition: roadSegment.h:438
double myExitCurveStartOffset
This offset is normally negative, meaning that the curve starts before the end of the segment...
Definition: roadSegment.h:208
virtual void setLength(const double l)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:776
double mySpeedLimit
If available; 0 indicates not set.
Definition: roadSegment.h:1029
virtual DtLaneSegment * lanes()
Lanes is a vector of DtLaneSegment objects, with lane 0 the right-most, and lane myNumberLanes-1 the ...
Definition: roadSegment.h:805
Definition: roadSegment.h:51
DtRailSegment are segments entities can follow when using the rail movement system.
Definition: railSegment.h:20
virtual const DtCoordTransform & segmentToLocalTransform() const
Converts from a road-segment coordinate system to local database coordinates. The road segment coordi...
Definition: roadSegment.h:792
double myDesiredExitCurveSpace
Ditto for exit curve. Note that offset (or setback) is positive along the positive segment X coordina...
Definition: roadSegment.h:437
Definition: roadSegment.h:52
int myNumberLanes
Definition: roadSegment.h:1011
double myExitCurveRadius
This offset is normally negative, meaning that the curve starts before the end of the segment...
Definition: roadSegment.h:203
double myExitLaneIntersectSetback
Ditto for exit curve. Note that offset (or setback) is positive along the positive segment X coordina...
Definition: roadSegment.h:436
int myConnectingDownstreamLane
What lane this connects to in the downstream segment. RoadSegment lanes, ie 0-based numbering...
Definition: roadSegment.h:375
int myExitInsideLaneNum
Ditto for exit curve. Note that offset (or setback) is positive along the positive segment X coordina...
Definition: roadSegment.h:435
virtual double length() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:775
int myEntryInsideLaneNum
The inside lane that connects, ie generates the radius constraint.
Definition: roadSegment.h:419
virtual void setNextRoadSegment(DtRoadSegment *s)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:852
DtTrafficControlIndication
Definition: roadSegment.h:47
std::list< DtRoadSegment * > DtRoadSegmentList
Definition: roadSegment.h:389
virtual void setEntryCurveEndOffset(const double o)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:824
double myEntryCurveRadius
This is the length of the arc from the midpoint of the turn to where it joins the straight part of th...
Definition: roadSegment.h:183
virtual void setNumLanes(const int nLanes)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:799
A class to hold the initially computed geometry for the inside lane of each segment in the path; used...
Definition: roadSegment.h:413
bool myIsOpposing
Indicates that this segment goes in the opposite direction of the related rail segment. The opposing segments are filled out in the current implementation (4.5), but are not used.
Definition: roadSegment.h:1045
bool myIsModerateExitTurn
This indicates a turn into next segment that exceeds a shallow turn threshold. In other words...
Definition: roadSegment.h:1058
virtual double defaultAltitude() const
The default altitude is what is assumed for the segment before the altitude lookups from the terrain ...
Definition: roadSegment.h:644
double myMedianWidth
The width of the median in this (2-way) segment.
Definition: roadSegment.h:1037
double myNextHeading
The segment downstream:
Definition: roadSegment.h:985
virtual void setPreviousRoadSegment(DtRoadSegment *s)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:855
virtual double exitCurveStartOffset() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:826
double myPositionAlongLane
Definition: roadSegment.h:108
Definition: coordSystem.h:54
virtual double medianWidth() const
Width of the median. Only applies to 2-way segments. The lanes are offset half this width from the se...
Definition: roadSegment.h:780
double myStopLineSetback
Distance before end of straight segment where stop line is located. (Note: in VRF 4...
Definition: roadSegment.h:1026
virtual void setSpeedLimit(const double limit)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:839
DtRoadSegment * myNextSegment
These come directly from the rail path, thus there is a connection to only on other road segment befo...
Definition: roadSegment.h:1005
virtual void setMedianWidth(const double w)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:781
virtual DtString roadName() const
Name of the road containing this segment.
Definition: roadSegment.h:784
virtual bool entryIsRightTurn() const
Indicates a positive heading change from the previous segment to this one, and that lanes to the righ...
Definition: roadSegment.h:820
virtual DtRoadSegment * opposingSegment() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:858
bool myIsOneWay
These come directly from the rail path, thus there is a connection to only on other road segment befo...
Definition: roadSegment.h:1006
DtLaneGeometry myGeometry
Definition: roadSegment.h:368
double myWidth
Definition: roadSegment.h:211
virtual double intrxThresholdAngleToConnectEdgeLanes()
This defines a threshold between segments at an intersection that determines how lanes are connected...
Definition: roadSegment.h:933
virtual bool exitIsRightTurn() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:811
double myEntryLaneIntersectSetback
The offset (along the lane) from the start of the segment (straight part) that the inside lane inters...
Definition: roadSegment.h:422
virtual DtRoadSegment * nextRoadSegment() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:851
virtual void setIsOneWay(const bool oneWay)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:809
Description of one lane of a DtRoadSegment.
Definition: roadSegment.h:118
Definition: roadSegment.h:397
virtual void setFreeFlowSpeed(const double ff)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:849
virtual bool allAltitudesDetermined() const
This indicates that the altitude lookups needed to make the mySegmentToLocal transform (start and end...
Definition: roadSegment.h:636
double myEntryCurveEndOffset
The offset in X from the segment origin to the end of the entry arc; marks the beginning of the strai...
Definition: roadSegment.h:191
double myLaneOffsetDistance
This is the lateral offset (in y) from the segment origin to the centerline of this lane...
Definition: roadSegment.h:173
virtual int connectingUpstreamLane() const
Definition: roadSegment.h:281
double myMinEntryCurveSpace
Distance from lane intersection to the end of a curve of min radius.
Definition: roadSegment.h:426
virtual void setConnectingUpstreamLane(const int lane)
Definition: roadSegment.h:282
virtual void setExitIsRightTurn(const bool r)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:812
virtual bool isOneWay() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:808
DtTrafficControlDevice * myTrafficSignal
Not currently used (future work); the traffic control device controlling traffic flow in the lane of ...
Definition: roadSegment.h:372
DtTmpGeometry myTmpGeometry
This information is used when constructing the road path to find modifications to the segments when t...
Definition: roadSegment.h:1053
DtRoadSegmentPart
This enumeration is a convenience for indicating what part of the lane geometry a point is on...
Definition: roadSegment.h:393
DtRoadSegment * myRoadSegment
The road segment this lane belongs to.
Definition: roadSegment.h:381
double myEntryCurveEndOffset
TODO – the following two members aren't used. See comment above. Where the entry curve ends and the s...
Definition: roadSegment.h:994
Definition: roadSegment.h:50
Definition: roadSegment.h:53
virtual void setConnectingDownstreamLane(const int lane)
Definition: roadSegment.h:277
bool myIsStatic
True for fixed indications–none, Stop, Yield, blinkers.
Definition: roadSegment.h:104
virtual DtRoadSegment * previousRoadSegment() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:854
A traffic control device for intersection flow, ie stop and yield signs, traffic lights, etc. Used for DtLaneSegment in DtRoadSegment.
Definition: roadSegment.h:38
DtString myRoadName
The name of the road.
Definition: roadSegment.h:1040
virtual double heading() const
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:768
The geometry of the lane, especially the parameters of the circular arcs that define the entry and ex...
Definition: roadSegment.h:165
double myDesiredEntryCurveSpace
Distance from lane intersection to the end of the curve of desired radius.
Definition: roadSegment.h:424
Description of one segment of a road.
Definition: roadSegment.h:406
double myFreeFlowSpeed
This is the speed traffic flows on average, irrespective of the legal speed limit above...
Definition: roadSegment.h:1034
virtual void setDefaultAltitude(const double altitude)
Fills in values for lane width, number of lanes, median width, and so forth from the rail segment...
Definition: roadSegment.h:647
Definition: roadSegment.h:55
DtPlatformSimObjectFacade myPlatformSimObjectFacade
Member to allow for access to platform specific data.
Definition: roadSegment.h:111
DtLaneSegment * myLanes
A vector of lanes, with lane 0 the right-most, and lane myNumberLanes-1 the left-most (or vice versa ...
Definition: roadSegment.h:1016
Definition: roadSegment.h:395
virtual void setHeading(const double h)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:769
virtual void setIsIntersectionApproach(const bool i)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:830
double myDesiredLeftEdgeExitRadius
Ditto for exit curve. Note that offset (or setback) is positive along the positive segment X coordina...
Definition: roadSegment.h:439
bool myExitBendsRight
Refers to the connection to the downstream segment:
Definition: roadSegment.h:987
int myLaneNumber
The array index of this lane in the road segment's array of lanes.
Definition: roadSegment.h:384
Definition: roadSegment.h:54
virtual void setEntryIsRightTurn(const bool r)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:821
voidpf uLong offset
Definition: ioapi.h:42
virtual void setLaneNumber(const int lane)
Definition: roadSegment.h:229
DtCoordTransform mySegmentToLocal
Coordinate transformation from segment coordinates to local database coordinates. Segment coordinates...
Definition: roadSegment.h:978
DtRoadSegment * myPreviousSegment
These come directly from the rail path, thus there is a connection to only on other road segment befo...
Definition: roadSegment.h:1004
virtual bool hasGreenIndication(const DtAppearance &app) const
Definition: roadSegment.h:96
double myHeading
Definition: roadSegment.h:983
bool myIsIntersectionApproach
Indicates that the connection at the downstream end is an intersection. Set in determineIfIntersectio...
Definition: roadSegment.h:1022
virtual double nonIntrxThresholdAngleToConnectEdgeLanes()
Same as above, but for segments that define a bend in a through street rather than an intersection...
Definition: roadSegment.h:959
Definition: roadSegment.h:49
virtual void setSegmentToLocalTransform(const DtCoordTransform &xform)
This is the length of the associated rail segment. This is the same as the length of the straight par...
Definition: roadSegment.h:793
Definition: roadSegment.h:56
double myEntryCurveLength
This is the length of the arc from the midpoint of the turn to where it joins the straight part of th...
Definition: roadSegment.h:187