VR-Forces 4.0.4 Class Documentation
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
DtMaintainFormationMonitor Class Reference

class DtMaintainFormationMonitor: More...

List of all members.

Public Types

enum  DtPositionStatus { DtUndefinedPosition = -1, DtInPosition, DtBehindPosition, DtAheadOfPosition }
typedef std::map< DtVrfObject
*, DtPositionStatus
DtAggregatePositionStatusMap
 Map of subordinate to its position status in an aggregate.

Public Member Functions

 DtMaintainFormationMonitor (DtVrfObject *entity)
 DtMaintainFormationMonitor (const DtMaintainFormationMonitor &orig)
DtMaintainFormationMonitoroperator= (const DtMaintainFormationMonitor &orig)
virtual ~DtMaintainFormationMonitor ()
virtual void tick ()
virtual void setCatchupFactor (double catchUpFactor)
 Sets and gets the speed multiplier factor set in its subordinates when they are falling behind in formation.
virtual double catchupFactor () const
virtual void setSlowDownFactor (double slowDownFactor)
 Sets and gets the speed multiplier the aggregate uses to send speed control messages to a subordinate when it is ahead of where it should be in formation.
virtual double slowDownFactor () const
virtual void setInPositionTolerance (double tolerance)
 Tolerance about which an entity is considered to be 'in position' while moving in formation.
virtual double inPositionTolerance () const
virtual bool positionStatusHasChanged (DtVrfObject *subordinate, DtPositionStatus status)
 Check if give status is different from stored value.
virtual DtPositionStatus getPositionStatus (DtVrfObject *subordinate)
 Get the stored position status for a given subordinate.
virtual void setPositionStatus (DtVrfObject *entity, DtMaintainFormationMonitor::DtPositionStatus status)
 Set the position status for given subordinate.
virtual void printPositionStatus ()
 Prints the position status of all subordinates.

Protected Member Functions

virtual DtPositionStatus positionStatus (const DtVector &geocentricOrigin, const DtDcm &geocentricOrientation, const DtVector &geocentricTestPosition, const DtVector &idealBodyCoordinatesPosition, double inPositionTolerance)
virtual void sendSpeedControl (DtVrfObject *entity, DtPositionStatus status)
virtual void sendSetSpeedRequest (const DtVrfObject &entity, double speed)

Protected Attributes

double myCatchupFactor
double mySlowDownFactor
double myInPositionTolerance
DtVrfObjectmyEntity
DtVrfAggregateStateRepositorymyAggregateStateRepository
DtFormationStatemyFormationState
DtAggregatePositionStatusMap myAggregatePositionStatusMap

Detailed Description

class DtMaintainFormationMonitor:

Instances of DtMaintainFormationMonitor are used to monitor an aggregate moving in formation. It checks for entities out of formation position, and sends set speed requests to tell them to slow down or speed up as needed, to correct the formation.


Member Typedef Documentation

Map of subordinate to its position status in an aggregate.


Member Enumeration Documentation

Enumerator:
DtUndefinedPosition 
DtInPosition 
DtBehindPosition 
DtAheadOfPosition 

Constructor & Destructor Documentation


Member Function Documentation

DtMaintainFormationMonitor& DtMaintainFormationMonitor::operator= ( const DtMaintainFormationMonitor orig)
virtual void DtMaintainFormationMonitor::tick ( ) [virtual]
virtual void DtMaintainFormationMonitor::setCatchupFactor ( double  catchUpFactor) [virtual]

Sets and gets the speed multiplier factor set in its subordinates when they are falling behind in formation.

The default catchup factor is 1.5. Catchup factor is multiplied by ordered speed.

virtual double DtMaintainFormationMonitor::catchupFactor ( ) const [virtual]
virtual void DtMaintainFormationMonitor::setSlowDownFactor ( double  slowDownFactor) [virtual]

Sets and gets the speed multiplier the aggregate uses to send speed control messages to a subordinate when it is ahead of where it should be in formation.

The default slowdown factor is 0.1. times the ordered speeed. Factor is multiplied by ordered speed.

virtual double DtMaintainFormationMonitor::slowDownFactor ( ) const [virtual]
virtual void DtMaintainFormationMonitor::setInPositionTolerance ( double  tolerance) [virtual]

Tolerance about which an entity is considered to be 'in position' while moving in formation.

Expressed as a fraction of formation spacing (distance between an entity and the entity it is relative to in formation). If entity is +/- (0.5 * tolerance * formation spacing), aggregate sends a set speed message to the subordinate, indicating it should slow down or speed up, accordingly. Default is 0.2 (20 percent).

virtual double DtMaintainFormationMonitor::inPositionTolerance ( ) const [virtual]

Check if give status is different from stored value.

Get the stored position status for a given subordinate.

Set the position status for given subordinate.

This value will be used for comparison with a future value to determine if a 'set speed' request needs to be sent out.

Prints the position status of all subordinates.

virtual DtPositionStatus DtMaintainFormationMonitor::positionStatus ( const DtVector geocentricOrigin,
const DtDcm &  geocentricOrientation,
const DtVector geocentricTestPosition,
const DtVector idealBodyCoordinatesPosition,
double  inPositionTolerance 
) [protected, virtual]
virtual void DtMaintainFormationMonitor::sendSpeedControl ( DtVrfObject entity,
DtPositionStatus  status 
) [protected, virtual]
virtual void DtMaintainFormationMonitor::sendSetSpeedRequest ( const DtVrfObject entity,
double  speed 
) [protected, virtual]

Member Data Documentation


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

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)