VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
DtRoadPathFunctions Class Reference

Public Member Functions

 DtRoadPathFunctions (DtRoadMovementController *parentController)
 
 ~DtRoadPathFunctions ()
 
virtual bool setupRoadFromRailPath (const DtRailSegmentList &railPath, const Coordinate_System *localCoordinateSystem, bool drivingOnLeft, DtRoadSegmentList &roadPath, const bool debug=false)
 
virtual bool getRoadPathAltitudes (DtRoadSegmentList &roadPath, const DtAttachedTerrain *terrain, bool &allTerrainAvailable, bool debug=false)
 
virtual bool generatePathCenterlinePoints (const DtRoadSegmentList &roadPath, bool drivingOnLeft, std::vector< DtVector > &pointList, std::map< DtRoadSegment *, unsigned > &segmentToPointsMap)
 
virtual void findIntersectionControlAlongPath (DtRoadSegmentList &roadPath, bool drivingOnLeft, bool debug)
 

Protected Member Functions

virtual bool makeRoadPathListFromRailPath (const DtRailSegmentList &railPath, DtRoadSegmentList &roadPath, const Coordinate_System *localCoordinateSystem, bool isDrivingOnLeft, int &roadSegNum, bool debug)
 
virtual void connectSegmentLanes (const DtRoadSegmentList &roadPath, bool drivingOnLeft, bool debug)
 
virtual void calculatePathTemporaryGeometry (DtRoadSegmentList &roadPath, bool isDrivingOnLeft, double maxSmallBendTurnRadius, bool debug)
 
virtual void reconnectRoadSegments (DtRoadSegment *prevRoadSegment, DtRoadSegment *nextRoadSegment, const bool isDrivingOnLeft, const double maxSmallBendTurnRadius, const bool debug)
 
virtual bool adjustShortSegmentsInCurve (DtRoadSegmentList &roadPath, const bool isDrivingOnLeft, const Coordinate_System *localCoordinateSystem, const double maxSmallBendTurnRadius, const bool debug)
 
virtual bool adjustShortSegmentInS (DtRoadSegmentList &roadPath, bool isDrivingOnLeft, const Coordinate_System *localCoordinateSystem, double maxSmallBendTurnRadius, bool debug)
 
virtual void calculateCurvesBetweenSegments (DtRoadSegmentList &roadPath, bool isDrivingOnLeft, double maxSmallBendTurnRadius, bool debug)
 
virtual DtObjectType trafficLightType () const
 
virtual double trafficLightFacingOffset ()
 
virtual DtObjectType stopSignType () const
 
virtual double stopSignFacingOffset ()
 
virtual DtObjectType stopLineType () const
 
virtual void intersectionControlObjectTypes (std::vector< DtObjectType > &tcdTypes)
 
virtual bool isIntersectionControlDevice (const DtObjectType &objType)
 

Protected Attributes

DtRoadMovementControllermyController
 

Constructor & Destructor Documentation

DtRoadPathFunctions::DtRoadPathFunctions ( DtRoadMovementController parentController)
DtRoadPathFunctions::~DtRoadPathFunctions ( )

Member Function Documentation

virtual bool DtRoadPathFunctions::setupRoadFromRailPath ( const DtRailSegmentList railPath,
const Coordinate_System localCoordinateSystem,
bool  drivingOnLeft,
DtRoadSegmentList roadPath,
const bool  debug = false 
)
virtual

Generate a road path from the rail path, including computing the geometry of the curves connecting lane centerlines in adjacent segments. If drivingOnLeft is true, then a mirror image geometry will be set up. Return true if successful.

virtual bool DtRoadPathFunctions::getRoadPathAltitudes ( DtRoadSegmentList roadPath,
const DtAttachedTerrain terrain,
bool allTerrainAvailable,
bool  debug = false 
)
virtual

Compute the coordinate transform from road segment to local coordinates, as well as the side slope at the beginning and end of the segment. These values will be used to compute positions in local coordinates of locations on the segment. Fills in value of mySegmentToLocal.
The function loops through all of the segments, and for each that does have myAllAltitudesDetermined == true, it generates the xy location of points in the left and right lanes at the beginning and end of the segment and looks up altitude for them. If (and only if) all altitude data is available, it sets the segment coordinate transform and sets myAllAltitudesDetermined to true.

Parameters
roadPathis the road path whose segment-to-local coordinate transform and edge altitudes are being set. This path must match the rail path above.
terrainis the terrain the entity is attached to.
terrainAvailablea flag that indicates if the elevations were all found, vs. at least one terrain call returning "not available."
Returns
False if there was an error, other than terrain not available. True if no error, although possibly terrain might not have been available. In this case the transform is not computed for those segments.
virtual bool DtRoadPathFunctions::generatePathCenterlinePoints ( const DtRoadSegmentList roadPath,
bool  drivingOnLeft,
std::vector< DtVector > &  pointList,
std::map< DtRoadSegment *, unsigned > &  segmentToPointsMap 
)
virtual

Generate a vector of points that indicate the road path. This is used for visualization.

virtual void DtRoadPathFunctions::findIntersectionControlAlongPath ( DtRoadSegmentList roadPath,
bool  drivingOnLeft,
bool  debug 
)
virtual

Place holder– does nothing but return. Possible use:
Finds traffic control objects (lights and stop signs) and the associated stop lines along the path. Puts the data into the relevant road segments. The lights and signs are only accepted if there is a corresponding stop line to indicate where the TCD takes effect.

virtual bool DtRoadPathFunctions::makeRoadPathListFromRailPath ( const DtRailSegmentList railPath,
DtRoadSegmentList roadPath,
const Coordinate_System localCoordinateSystem,
bool  isDrivingOnLeft,
int roadSegNum,
bool  debug 
)
protectedvirtual

This function creates road segment objects from the rail path objects and puts them in a list. It fills in basic attributes such as # lanes, lane width, one-way, etc. This is used by setupRoadFromRailPath.

virtual void DtRoadPathFunctions::connectSegmentLanes ( const DtRoadSegmentList roadPath,
bool  drivingOnLeft,
bool  debug 
)
protectedvirtual

Fill in the upstream and downstream lane numbers for all of the lanes in each segment. Depending on segment geometry, all of the lanes may be connected, or only one. If the road bends enough where the segments join, then only the inner lane will connect. This function accounts for alignment offsets where one-way segments meet two-way segments too. This is used by setupRoadFromRailPath.

virtual void DtRoadPathFunctions::calculatePathTemporaryGeometry ( DtRoadSegmentList roadPath,
bool  isDrivingOnLeft,
double  maxSmallBendTurnRadius,
bool  debug 
)
protectedvirtual

Calculates the desired radius and desired intersection points of the curves connecting the road segments. The desired intersection points are where lanes centerlines with possibly different offsets from the rail segment (ie left edge) intersect. The "desired" radii are as large as possible without causing the design vehicle to go outside the lane, and are at least as large as the design vehicle minimum turn radius. These parameters may be adjusted later if the segments are not long enough to use them. This is used by setupRoadFromRailPath.

virtual void DtRoadPathFunctions::reconnectRoadSegments ( DtRoadSegment prevRoadSegment,
DtRoadSegment nextRoadSegment,
const bool  isDrivingOnLeft,
const double  maxSmallBendTurnRadius,
const bool  debug 
)
protectedvirtual

This function is run to connect two road segments that have already been initialized. It calls DtRoadSegment::connectWithNext, and DtRoadSegment::calculateTemporaryExit(and Entry)Geometry. This is used by adjustShortSegmentsInCurve and adjustShortSegmentInS.

virtual bool DtRoadPathFunctions::adjustShortSegmentsInCurve ( DtRoadSegmentList roadPath,
const bool  isDrivingOnLeft,
const Coordinate_System localCoordinateSystem,
const double  maxSmallBendTurnRadius,
const bool  debug 
)
protectedvirtual

Looks for segments that are too short for the intersection point and desired turn radius identified in #calculatePathTemoraryGeometry, and that have entry and exit heading changes in the same direction (i.e. are part of a curve). Attempts to improve the path by lengthening or removing such segments.

Returns
true when no short curve segments are found in the path.
virtual bool DtRoadPathFunctions::adjustShortSegmentInS ( DtRoadSegmentList roadPath,
bool  isDrivingOnLeft,
const Coordinate_System localCoordinateSystem,
double  maxSmallBendTurnRadius,
bool  debug 
)
protectedvirtual

Looks for segments that are too short for the intersection point and desired turn radius identified in #calculatePathTemoraryGeometry, and that have entry and exit heading changes in different directions (i.e., the path makes a small S at this segment). Attempts to improve the path by lengthening or removing such segments.

Returns
true when no short S segments are found in the path.
virtual void DtRoadPathFunctions::calculateCurvesBetweenSegments ( DtRoadSegmentList roadPath,
bool  isDrivingOnLeft,
double  maxSmallBendTurnRadius,
bool  debug 
)
protectedvirtual

Calculates the curves connecting segments– calculates the radius and how far from the end of the straight road feature the curve must start.

virtual DtObjectType DtRoadPathFunctions::trafficLightType ( ) const
inlineprotectedvirtual

Indicates whether the given object type is a traffic light.

virtual double DtRoadPathFunctions::trafficLightFacingOffset ( )
inlineprotectedvirtual

This is the offset of the facing of a light from its entity heading.

virtual DtObjectType DtRoadPathFunctions::stopSignType ( ) const
inlineprotectedvirtual

Indicates whether the given object type is a stop sign.

virtual double DtRoadPathFunctions::stopSignFacingOffset ( )
inlineprotectedvirtual

This is the offset of the facing of a sign from its entity heading.

virtual DtObjectType DtRoadPathFunctions::stopLineType ( ) const
inlineprotectedvirtual

Provides the type of a stop line object.

virtual void DtRoadPathFunctions::intersectionControlObjectTypes ( std::vector< DtObjectType > &  tcdTypes)
protectedvirtual

Provides the types of available intersection control objects.

virtual bool DtRoadPathFunctions::isIntersectionControlDevice ( const DtObjectType objType)
protectedvirtual

Returns true if the given type matches any of the known intersection control types.

Member Data Documentation

DtRoadMovementController* DtRoadPathFunctions::myController
protected

This member is made available so that this class can refer to controller data including the descriptor.


The documentation for this class was generated from the following file:

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)