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< NodeHandle, Vector > *Neighbors)
virtual ~MovementGenerator ()
 Standard destructor.
virtual void move ()=0
 Defined in subclasses only.
Vector getPosition ()

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< NodeHandle, Vector > * Neighbors
std::map< NodeHandle, Vector
>::iterator 
itNeighbors


Constructor & Destructor Documentation

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

Parameters:
areaDimension Movement range from [-areaDimension, -areaDimension] to [areaDimension, areaDimension].
speed Movement speed in units per movement.
00004 {
00005     this->areaDimension = areaDimension;
00006     this->speed = speed;
00007     this->Neighbors = Neighbors;
00008 }

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

Standard destructor.

00023 {}


Member Function Documentation

void MovementGenerator::flock (  )  [protected]

00019 {
00020     Vector vFlock;
00021     vFlock.setValue(0.0, 0.0);
00022     for(itNeighbors = Neighbors->begin(); itNeighbors != Neighbors->end(); ++itNeighbors) {
00023         if(position.distsqr(itNeighbors->second) < 4.0*speed*speed) {
00024             Vector temp;
00025             temp = itNeighbors->second - position;
00026             temp.normalize();
00027             vFlock += temp;
00028         }
00029     }
00030     vFlock.normalize();
00031     vFlock = vFlock * (speed/2.0);
00032     position -= vFlock;
00033 }

Vector MovementGenerator::getPosition (  )  [inline]

Returns:
Returns the current node position.
00030 { return position; }

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

Defined in subclasses only.

Implemented in greatGathering, groupRoaming, and randomRoaming.

void MovementGenerator::testBounds (  )  [protected]

Prevents the node from leaving the defined area.


Member Data Documentation

double MovementGenerator::areaDimension [protected]

Vector MovementGenerator::direction [protected]

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

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

Vector MovementGenerator::position [protected]

double MovementGenerator::speed [protected]

Vector MovementGenerator::target [protected]


The documentation for this class was generated from the following files:
Generated on Wed Apr 4 13:37:06 2007 for ITM OverSim by  doxygen 1.4.7