17 #include <matrix/vlVector.h>
18 #include <matrix/coordTransform.h>
29 #define DT_ROAD_SEGMENT_NO_LANE -1
58 virtual DtTrafficControlIndication currentIndication()
const;
62 virtual void setCurrentIndication(
const DtTrafficControlIndication
signal);
66 virtual bool isStatic()
const;
67 virtual void setIsStatic(
const bool isStatic);
73 virtual void setTrafficLightObject(
DtVrfObject* trafficLight);
191 myRoadSegment = parent;
206 virtual void generateFirstHalfLanePoints(std::vector<DtVector>& pointList,
208 int pointsInCurve = 5);
217 virtual void generateSecondHalfLanePoints(std::vector<DtVector>& pointList,
219 int pointsInCurve = 5);
234 virtual void setConnectingDownstreamLane(
const int lane)
236 myConnectingDownstreamLane = lane;
239 virtual void setConnectingUpstreamLane(
const int lane)
241 myConnectingUpstreamLane = lane;
266 virtual double calculateInsideEntryCurveGeometry(
double headingChange,
267 double cosHeadingChange,
double sinHeadingChange,
274 virtual void calculateEntryCurveGeometry(
double segmentLeftEdgeRadius,
275 double headingChange,
309 virtual double calculateInsideExitCurveGeometry(
double segmentLeftEdgeRadius,
310 double headingChange,
311 double cosHeadingChange,
double sinHeadingChange,
318 virtual void calculateExitCurveGeometry(
double segmentLeftEdgeRadius,
319 double headingChange,
419 virtual bool initializeFromRailSegment(
DtRailSegment* railSegment,
450 virtual bool calculateTemporaryExitGeometry(
const double maxSmallBendRadius,
451 const double vehicleWidth,
const double headingChange,
452 const double cosHeadingChange,
const double sinHeadingChange,
467 virtual bool calculateTemporaryEntryGeometry(
const double headingChange,
468 const double cosHeadingChange,
const double sinHeadingChange,
490 virtual bool initializeExitCurve(
491 const double maxSmallBendTurnRadius,
const double vehicleWidth,
492 const double headingChange,
493 const double cosHeadingChange,
const double sinHeadingChange,
511 virtual bool initializeEntryCurve(
const double headingChange,
512 const double cosHeadingChange,
const double sinHeadingChange,
521 virtual void setExitCurvesForEndingLanes();
543 bool isDrivingOnLeft,
545 bool fillOpposingSegment =
true);
554 virtual void determineIfIntersectionApproach(
const DtRoadSegment* next);
563 virtual void setAllAltitudesDetermined(
const bool b)
565 myAllAltitudesDetermined = b;
579 const double positionAlongLane);
583 virtual double distanceFromLaneEnd(
const int laneN,
584 const double positionAlongLane);
588 virtual double evenPositionAlongLane(
const double positionAlongLaneA,
589 const int laneA,
const int laneB);
608 virtual bool localPositionFromLanePosition(
const int laneN,
609 const double positionAlongLane,
const double lateralOffset,
bool isDrivingOnLeft,
610 DtVector& localPosition,
double& headingOffset,
611 double& distanceBeyond)
const;
626 virtual int rightmostContinuingLane()
const;
638 virtual int findNearestContinuingLane(
const int laneN,
639 const double positionAlongLane,
const double lookAheadDistance,
bool debug =
false);
650 virtual bool laneContinuesForDistance(
const int laneN,
651 const double positionAlongLane,
const double lookDistance,
652 double & actualDistance,
bool & pathContinues,
bool debug =
false);
656 virtual int matchingLane(
const double offset);
663 virtual double heading()
const {
return myHeading;}
670 virtual double length()
const {
return myLength;}
683 virtual void setSegmentToLocalTransform(
const DtCoordTransform& xform)
685 mySegmentToLocal = xform;
688 virtual int numLanes()
const {
return myNumberLanes;}
689 virtual void setNumLanes(
const int nLanes) {myNumberLanes = nLanes;}
695 virtual void setIsOneWay(
const bool oneWay) {myIsOneWay = oneWay;}
723 virtual double defaultSpeedLimit(
const int numLanes);
732 virtual void setPreviousRoadSegment(
738 myOpposingSegment = s;
749 virtual DtTmpGeometry* temporaryGeometry() ;
760 virtual void findRightMostAlignedLane(
DtRoadSegment* nextSegment,
761 int& rightMostLane,
int& nextSegmentRightMostLane,
762 int& numAlignedLanes);
768 virtual void findLeftMostAlignedLane(
DtRoadSegment* nextSegment,
769 int& leftMostLane,
int& nextSegmentLeftMostLane,
770 int& numAlignedLanes);