MovementGenerator Class Reference

#include <MovementGenerator.h>

Inheritance diagram for MovementGenerator:

greatGathering groupRoaming randomRoaming List of all members.

Detailed Description

An interface for different movement generation set-ups.


Public Member Functions

 MovementGenerator (double areaDimension, double speed, std::map< TransportAddress, Vector > *Neighbors)
 
Parameters:
areaDimension Movement range from [-areaDimension, -areaDimension] to [areaDimension, areaDimension].

virtual ~MovementGenerator ()
 Standard destructor.
virtual void move ()=0
 Defined in subclasses only.
Vector getPosition ()
 
Returns:
Returns the current node position.


Protected Member Functions

void testBounds ()
 Prevents the node from leaving the defined area.
void flock ()

Protected Attributes

double areaDimension
double speed
Vector direction
Vector position
Vector target
std::map< TransportAddress,
Vector > * 
Neighbors
std::map< TransportAddress,
Vector >::iterator 
itNeighbors


Constructor & Destructor Documentation

MovementGenerator::MovementGenerator ( double  areaDimension,
double  speed,
std::map< TransportAddress, Vector > *  Neighbors 
)

Parameters:
areaDimension Movement range from [-areaDimension, -areaDimension] to [areaDimension, areaDimension].

Parameters:
speed Movement speed in units per movement.
00027 {
00028     this->areaDimension = areaDimension;
00029     this->speed = speed;
00030     this->Neighbors = Neighbors;
00031 }

virtual MovementGenerator::~MovementGenerator (  )  [inline, virtual]

Standard destructor.

00046 {}


Member Function Documentation

virtual void MovementGenerator::move (  )  [pure virtual]

Defined in subclasses only.

Implemented in greatGathering, groupRoaming, and randomRoaming.

Vector MovementGenerator::getPosition (  )  [inline]

Returns:
Returns the current node position.

00053 { return position; }

void MovementGenerator::testBounds (  )  [protected]

Prevents the node from leaving the defined area.

void MovementGenerator::flock (  )  [protected]

00042 {
00043     Vector vFlock;
00044     vFlock.setValue(0.0, 0.0);
00045     for(itNeighbors = Neighbors->begin(); itNeighbors != Neighbors->end(); ++itNeighbors) {
00046         if(position.distsqr(itNeighbors->second) < 4.0*speed*speed) {
00047             Vector temp;
00048             temp = itNeighbors->second - position;
00049             temp.normalize();
00050             vFlock += temp;
00051         }
00052     }
00053     vFlock.normalize();
00054     vFlock = vFlock * (speed/2.0);
00055     position -= vFlock;
00056 }


Member Data Documentation

double MovementGenerator::areaDimension [protected]

double MovementGenerator::speed [protected]

Vector MovementGenerator::direction [protected]

Vector MovementGenerator::position [protected]

Vector MovementGenerator::target [protected]

std::map<TransportAddress, Vector>* MovementGenerator::Neighbors [protected]

std::map<TransportAddress, Vector>::iterator MovementGenerator::itNeighbors [protected]


The documentation for this class was generated from the following files:
Generated on Tue Jul 24 16:51:18 2007 for ITM OverSim by  doxygen 1.5.1