VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
roadSegment.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 
12 #pragma once
13 
16 #include <vector>
17 #include <list>
18 #include <matrix/vlVector.h>
19 #include <matrix/coordTransform.h>
20 #include <vlpi/appearance.h>
22 #include "vrfutil/railSegment.h"
23 #include <vrfobjcore/simObject.h>
24 
25 class DtRailSegment;
26 class Coordinate_System;
27 class DtRoadSegment;
28 
31 #define DT_ROAD_SEGMENT_NO_LANE -1
32 
34 #define CENTERLINE_EPSILON 0.001
35 
39 {
40 public:
42  virtual ~DtTrafficControlDevice();
44  DtTrafficControlDevice& operator=(const DtTrafficControlDevice& orig);
45  virtual DtTrafficControlDevice* clone();
46 
48  {
57  DtIndicationRed
58  };
59 
62  virtual DtTrafficControlIndication currentIndication() const;
63  virtual DtString indicationString(DtTrafficControlIndication ind) const;
67  virtual void setCurrentIndication(const DtTrafficControlIndication signal);
68 
71  virtual bool isStatic()const;
72  virtual void setIsStatic(const bool isStatic);
74 
77  virtual DtSimObjectReference trafficLightObject();
78  virtual void setTrafficLightObject(DtSimObjectReference trafficLight);
80 
83  virtual double positionAlongLane() const;
84  virtual void setPositionAlongLane(const double p);
85 
86  virtual bool hasRedIndication(const DtAppearance& app) const
87  {
88  return app.powerPlantOn();
89  }
90 
91  virtual bool hasYellowIndication(const DtAppearance& app) const
92  {
93  return app.flamesPresent();
94  }
95 
96  virtual bool hasGreenIndication(const DtAppearance& app) const
97  {
98  return app.smokePlumePresent();
99  }
100 
101 protected:
102 
109 
112 };
113 
114 
116 
119 {
120 public:
121  DtLaneSegment();
122  virtual ~DtLaneSegment();
123  DtLaneSegment(const DtLaneSegment& orig);
124  DtLaneSegment& operator=(const DtLaneSegment& orig);
125  virtual DtLaneSegment* clone();
126 
166  {
174 
184 
188 
193 
200 
205 
210 
211  double myWidth;
212 
213  //Lane line traffic control would go here
214  };
215 
218  virtual DtLaneGeometry& laneGeometry();
219  virtual const DtLaneGeometry& laneGeometry() const;
220 
223  virtual DtTrafficControlDevice* trafficControlDevice();
225  virtual void setTrafficControlDevice(DtTrafficControlDevice* device);
226 
227  //@ Get /set the lane. The right lane is lane 0.
228  virtual int laneNumber()const { return myLaneNumber; }
229  virtual void setLaneNumber(const int lane){ myLaneNumber = lane; }
230 
231  virtual DtRoadSegment* parentRoadSegment() const { return myRoadSegment; }
232  virtual void setParentRoadSegment(DtRoadSegment* parent)
233  {
234  myRoadSegment = parent;
235  }
236 
241 
249  virtual void generateFirstHalfLanePoints(std::vector<DtVector>& pointList,
250  bool drivingOnLeft,
251  int pointsInCurve = 5);
252 
260  virtual void generateSecondHalfLanePoints(std::vector<DtVector>& pointList,
261  bool drivingOnLeft,
262  int pointsInCurve = 5);
264 
276  virtual int connectingDownstreamLane() const {return myConnectingDownstreamLane;}
277  virtual void setConnectingDownstreamLane(const int lane)
278  {
279  myConnectingDownstreamLane = lane;
280  }
281  virtual int connectingUpstreamLane() const {return myConnectingUpstreamLane;}
282  virtual void setConnectingUpstreamLane(const int lane)
283  {
284  myConnectingUpstreamLane = lane;
285  }
287 
290 
309  virtual double calculateInsideEntryCurveGeometry(double headingChange,
310  double cosHeadingChange, double sinHeadingChange,
311  bool debug = false);
312 
317  virtual void calculateEntryCurveGeometry(double segmentLeftEdgeRadius,
318  double headingChange,
319  bool debug = false);
320 
352  virtual double calculateInsideExitCurveGeometry(double segmentLeftEdgeRadius,
353  double headingChange,
354  double cosHeadingChange, double sinHeadingChange,
355  bool debug = false);
356 
361  virtual void calculateExitCurveGeometry(double segmentLeftEdgeRadius,
362  double headingChange,
363  bool debug = false);
364 
366 
367 protected:
376 
379 
382 
385 
386 };
388 
389 typedef std::list<DtRoadSegment *> DtRoadSegmentList;
390 
394 {
399 };
400 
407 {
408 
409 public:
414  {
415  public:
416  DtTmpGeometry();
417 
430 
441  };
442 
443  DtRoadSegment(const double defaultAltitude = 0.0);
444 
445  virtual ~DtRoadSegment();
446 
447  DtRoadSegment(const DtRoadSegment& orig);
448  DtRoadSegment& operator=(const DtRoadSegment& orig);
449  virtual DtRoadSegment* clone();
450 
454 
464  virtual bool initializeFromRailSegment(DtRailSegment* railSegment,
465  const Coordinate_System* localCoordinateSystem, bool isDrivingOnLeft,
466  DtRoadSegment* opposingSegment, bool debug = false);
467 
495  virtual bool calculateTemporaryExitGeometry(const double maxSmallBendRadius,
496  const double vehicleWidth, const double headingChange,
497  const double cosHeadingChange, const double sinHeadingChange,
498  bool debug);
499 
512  virtual bool calculateTemporaryEntryGeometry(const double headingChange,
513  const double cosHeadingChange, const double sinHeadingChange,
514  bool debug);
515 
535  virtual bool initializeExitCurve(
536  const double maxSmallBendTurnRadius, const double vehicleWidth,
537  const double headingChange,
538  const double cosHeadingChange, const double sinHeadingChange,
539  bool debug = false);
540 
556  virtual bool initializeEntryCurve(const double headingChange,
557  const double cosHeadingChange, const double sinHeadingChange,
558  bool debug = false);
559 
566  virtual void setExitCurvesForEndingLanes();
567 
587  virtual void connectWithNext(DtRoadSegment* nextSegment,
588  bool isDrivingOnLeft,
589  bool debug,
590  bool fillOpposingSegment = true);
591 
598  virtual void connectWithNextConsideringBreakdownLane(DtRoadSegment* nextSegment,
599  bool isDrivingOnLeft,
600  bool debug,
601  bool fillOpposingSegment,
602  bool useBreakdownLane);
603 
611  virtual void determineIfIntersectionApproach(const DtRoadSegment* next);
612 
627  virtual bool computeSegmentToLocalTransform(
628  const DtRoadSegment* previous, const DtAttachedTerrain* terrain,
629  const bool isDriveOnLeft, const bool debug = false);
630 
636  virtual bool allAltitudesDetermined() const { return myAllAltitudesDetermined; }
637  virtual void setAllAltitudesDetermined(const bool b)
638  {
639  myAllAltitudesDetermined = b;
640  }
641 
644  virtual double defaultAltitude() const {
645  return myDefaultAltitude;
646  };
647  virtual void setDefaultAltitude(const double altitude)
648  {
649  myDefaultAltitude = altitude;
650  }
651 
653 
654  //---------------------
655 
660 
663  virtual DtRoadSegmentPart segmentPart(const int laneN,
664  const double positionAlongLane);
665 
668  virtual double distanceFromLaneEnd(const int laneN,
669  const double positionAlongLane);
670 
673  virtual double evenPositionAlongLane(const double positionAlongLaneA,
674  const int laneA, const int laneB);
675 
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;
700 
706  virtual bool lanePositionFromLocalPosition(const DtVector localPosition,
707  const int laneN, bool isDrivingOnLeft,
708  double &positionInLane, double& laneOffset,
709  bool debug) const;
711 
712  //---------------------------
713 
718 
723  virtual int rightmostContinuingLane() const;
724 
725 
727  virtual int rightmostContinuingTravelLane(bool bAllowingBreakdownLane=false) const;
728 
739  virtual int findNearestContinuingLane(const int laneN,
740  const double positionAlongLane, const double lookAheadDistance, bool debug = false);
741 
751  virtual bool laneContinuesForDistance(const int laneN,
752  const double positionAlongLane, const double lookDistance,
753  double & actualDistance, bool & pathContinues, bool debug = false);
754 
761  virtual int matchingLane(const double offset);
762 
764 
767 
768  virtual double heading() const {return myHeading;}
769  virtual void setHeading(const double h) {myHeading = h;}
770 
775  virtual double length() const {return myLength;}
776  virtual void setLength(const double l){myLength = l;}
777 
780  virtual double medianWidth() const { return myMedianWidth; }
781  virtual void setMedianWidth(const double w) { myMedianWidth = w; }
782 
784  virtual DtString roadName() const { return myRoadName; }
785  virtual void setRoadName(const DtString& name) { myRoadName = name; }
786 
792  virtual const DtCoordTransform& segmentToLocalTransform() const {return mySegmentToLocal;}
793  virtual void setSegmentToLocalTransform(const DtCoordTransform& xform)
794  {
795  mySegmentToLocal = xform;
796  }
797 
798  virtual int numLanes() const {return myNumberLanes;}
799  virtual void setNumLanes(const int nLanes) {myNumberLanes = nLanes;}
800 
805  virtual DtLaneSegment* lanes() {return myLanes;}
806  virtual const DtLaneSegment* lanes() const { return myLanes;}
807 
808  virtual bool isOneWay() const {return myIsOneWay;}
809  virtual void setIsOneWay(const bool oneWay) {myIsOneWay = oneWay;}
810 
811  virtual bool exitIsRightTurn() const {return myExitBendsRight;}
812  virtual void setExitIsRightTurn(const bool r) {myExitBendsRight = r;}
813 
820  virtual bool entryIsRightTurn() const {return myEntryBendsRight;}
821  virtual void setEntryIsRightTurn(const bool r) {myEntryBendsRight = r;}
822 
823  virtual double entryCurveEndOffset() const {return myEntryCurveEndOffset;}
824  virtual void setEntryCurveEndOffset(const double o){myEntryCurveEndOffset = o;}
825 
826  virtual double exitCurveStartOffset() const {return myExitCurveStartOffset;}
827  virtual void setExitCurveStartOffset(const double o){myExitCurveStartOffset = o;}
828 
829  virtual bool isIntersectionApproach() const {return myIsIntersectionApproach;}
830  virtual void setIsIntersectionApproach(const bool i) {myIsIntersectionApproach = i;}
831 
832  virtual bool isModerateExitTurn() const { return myIsModerateExitTurn; }
833  virtual void setIsModerateExitTurn(bool bYes) { myIsModerateExitTurn = true; }
834 
835  virtual double stopLineSetBack() const {return myStopLineSetback;}
836  virtual void setStopLineSetBack(const double sb) {myStopLineSetback = sb;}
837 
838  virtual double speedLimit() const {return mySpeedLimit;}
839  virtual void setSpeedLimit(const double limit) {mySpeedLimit = limit;}
840 
846  virtual double defaultSpeedLimit(const int numLanes);
847 
848  virtual double freeFlowSpeed() const { return myFreeFlowSpeed; }
849  virtual void setFreeFlowSpeed(const double ff) {myFreeFlowSpeed = ff;}
850 
851  virtual DtRoadSegment* nextRoadSegment()const {return myNextSegment;}
852  virtual void setNextRoadSegment(DtRoadSegment* s) {myNextSegment = s;}
853 
854  virtual DtRoadSegment* previousRoadSegment() const {return myPreviousSegment;}
856  DtRoadSegment* s) {myPreviousSegment = s;}
857 
858  virtual DtRoadSegment* opposingSegment() const {return myOpposingSegment;}
860  {
861  myOpposingSegment = s;
862  }
863 
864  virtual bool isOpposing() const {return myIsOpposing;}
865  virtual void setIsOpposing(const bool opposing) {myIsOpposing = opposing;}
866 
872  virtual DtTmpGeometry* temporaryGeometry() ;
873 
875 
876 
877 
878 protected:
883  virtual void findRightMostAlignedLane(DtRoadSegment* nextSegment,
884  int& rightMostLane, int& nextSegmentRightMostLane,
885  int& numAlignedLanes);
886 
891  virtual void findLeftMostAlignedLane(DtRoadSegment* nextSegment,
892  int& leftMostLane, int& nextSegmentLeftMostLane,
893  int& numAlignedLanes);
894 
895  //------------------------------------------------------------------------
896 
897 public:
898 
905 
917  virtual double minIntersectionBendAngle(){ return 0.7854; }
918 
933  virtual double intrxThresholdAngleToConnectEdgeLanes(){ return 0.3; }
934 
946  virtual double intrxThresholdAngleToConnectAllLanes() { return 0.2; }
947 
959  virtual double nonIntrxThresholdAngleToConnectEdgeLanes(){ return 0.7854; }
960 
964  virtual double minimumLaneWidth(){ return 2.0; }
966 
967  //------------------------------------------------------------------------
968 
969 protected:
970 
972  double myLength;
973 
978  DtCoordTransform mySegmentToLocal;
979 
982 
983  double myHeading;
985  double myNextHeading;
990 
998 
1010 
1017 
1023 
1027 
1030 
1035 
1038 
1041 
1046 
1054 
1059 };
1060 
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 &quot;attached&quot; 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
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&#39;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&#39;s array of lanes.
Definition: roadSegment.h:384
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
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

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)