17 #include <matrix/vlVector.h>
18 #include <matrix/coordTransform.h>
29 #define DT_ROAD_SEGMENT_NO_LANE -1
57 virtual DtTrafficControlIndication currentIndication()
const;
58 virtual DtString indicationString(DtTrafficControlIndication ind)
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);
78 virtual double positionAlongLane()
const;
79 virtual void setPositionAlongLane(
const double p);
81 virtual bool hasRedIndication(DtAppearance* app)
const
83 return app->powerPlantOn();
86 virtual bool hasYellowIndication(DtAppearance *app)
const
88 return app->flamesPresent();
91 virtual bool hasGreenIndication(DtAppearance *app)
const
93 return app->smokePlumePresent();
214 myRoadSegment = parent;
229 virtual void generateFirstHalfLanePoints(std::vector<DtVector>& pointList,
231 int pointsInCurve = 5);
240 virtual void generateSecondHalfLanePoints(std::vector<DtVector>& pointList,
242 int pointsInCurve = 5);
257 virtual void setConnectingDownstreamLane(
const int lane)
259 myConnectingDownstreamLane = lane;
262 virtual void setConnectingUpstreamLane(
const int lane)
264 myConnectingUpstreamLane = lane;
289 virtual double calculateInsideEntryCurveGeometry(
double headingChange,
290 double cosHeadingChange,
double sinHeadingChange,
297 virtual void calculateEntryCurveGeometry(
double segmentLeftEdgeRadius,
298 double headingChange,
332 virtual double calculateInsideExitCurveGeometry(
double segmentLeftEdgeRadius,
333 double headingChange,
334 double cosHeadingChange,
double sinHeadingChange,
341 virtual void calculateExitCurveGeometry(
double segmentLeftEdgeRadius,
342 double headingChange,
444 virtual bool initializeFromRailSegment(
DtRailSegment* railSegment,
475 virtual bool calculateTemporaryExitGeometry(
const double maxSmallBendRadius,
476 const double vehicleWidth,
const double headingChange,
477 const double cosHeadingChange,
const double sinHeadingChange,
492 virtual bool calculateTemporaryEntryGeometry(
const double headingChange,
493 const double cosHeadingChange,
const double sinHeadingChange,
515 virtual bool initializeExitCurve(
516 const double maxSmallBendTurnRadius,
const double vehicleWidth,
517 const double headingChange,
518 const double cosHeadingChange,
const double sinHeadingChange,
536 virtual bool initializeEntryCurve(
const double headingChange,
537 const double cosHeadingChange,
const double sinHeadingChange,
546 virtual void setExitCurvesForEndingLanes();
568 bool isDrivingOnLeft,
570 bool fillOpposingSegment =
true);
579 virtual void determineIfIntersectionApproach(
const DtRoadSegment* next);
588 virtual void setAllAltitudesDetermined(
const bool b)
590 myAllAltitudesDetermined = b;
604 const double positionAlongLane);
608 virtual double distanceFromLaneEnd(
const int laneN,
609 const double positionAlongLane);
613 virtual double evenPositionAlongLane(
const double positionAlongLaneA,
614 const int laneA,
const int laneB);
636 virtual bool localPositionFromLanePosition(
const int laneN,
637 const double positionAlongLane,
const double lateralOffset,
bool isDrivingOnLeft,
638 DtVector& localPosition,
double& headingOffset,
639 double& distanceBeyond)
const;
645 virtual bool lanePositionFromLocalPosition(
const DtVector localPosition,
646 const int laneN,
bool isDrivingOnLeft,
647 double &positionInLane,
double& laneOffset,
662 virtual int rightmostContinuingLane()
const;
674 virtual int findNearestContinuingLane(
const int laneN,
675 const double positionAlongLane,
const double lookAheadDistance,
bool debug =
false);
686 virtual bool laneContinuesForDistance(
const int laneN,
687 const double positionAlongLane,
const double lookDistance,
688 double & actualDistance,
bool & pathContinues,
bool debug =
false);
692 virtual int matchingLane(
const double offset);
699 virtual double heading()
const {
return myHeading;}
706 virtual double length()
const {
return myLength;}
724 virtual void setSegmentToLocalTransform(
const DtCoordTransform& xform)
726 mySegmentToLocal = xform;
729 virtual int numLanes()
const {
return myNumberLanes;}
730 virtual void setNumLanes(
const int nLanes) {myNumberLanes = nLanes;}
736 virtual void setIsOneWay(
const bool oneWay) {myIsOneWay = oneWay;}
770 virtual double defaultSpeedLimit(
const int numLanes);
779 virtual void setPreviousRoadSegment(
785 myOpposingSegment = s;
796 virtual DtTmpGeometry* temporaryGeometry() ;
807 virtual void findRightMostAlignedLane(
DtRoadSegment* nextSegment,
808 int& rightMostLane,
int& nextSegmentRightMostLane,
809 int& numAlignedLanes);
815 virtual void findLeftMostAlignedLane(
DtRoadSegment* nextSegment,
816 int& leftMostLane,
int& nextSegmentLeftMostLane,
817 int& numAlignedLanes);