groupRoaming Class Reference

groupRoaming class More...

#include <groupRoaming.h>

Inheritance diagram for groupRoaming:
MovementGenerator

List of all members.

Public Member Functions

 groupRoaming (double areaDimension, double speed, NeighborMap *Neighbors, GlobalCoordinator *coordinator, CollisionList *CollisionRect, int groupSize)
virtual ~groupRoaming ()
virtual void move ()
 Defined in subclasses only.

Protected Attributes

int groupNr

Detailed Description

groupRoaming class

Simulates nodes roaming the area in groups.

Definition at line 34 of file groupRoaming.h.


Constructor & Destructor Documentation

groupRoaming::groupRoaming ( double  areaDimension,
double  speed,
NeighborMap Neighbors,
GlobalCoordinator coordinator,
CollisionList CollisionRect,
int  groupSize 
)

Definition at line 26 of file groupRoaming.cc.

00027              :MovementGenerator(areaDimension, speed, Neighbors, coordinator, CollisionRect)
00028 {
00029     groupNr = coordinator->getPeerCount() / groupSize;
00030 
00031     if((coordinator->getPeerCount() % groupSize) == 0) {
00032         target.x = uniform(0.0, areaDimension);
00033         target.y = uniform(0.0, areaDimension);
00034         coordinator->increasePositionSize();
00035         coordinator->setPosition(groupNr, target);
00036     }
00037     else {
00038         target = coordinator->getPosition(groupNr);
00039     }
00040 
00041     coordinator->increasePeerCount();
00042 }

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

Definition at line 38 of file groupRoaming.h.

00038 {}


Member Function Documentation

void groupRoaming::move (  )  [virtual]

Defined in subclasses only.

Implements MovementGenerator.

Definition at line 45 of file groupRoaming.cc.

00046 {
00047     if(coordinator->getPosition(groupNr) != target) {
00048         target = coordinator->getPosition(groupNr);
00049     }
00050 
00051     flock();
00052     position += direction * speed;
00053     if(testBounds()) {
00054         position += direction * speed * 2;
00055         testBounds();
00056     }
00057 
00058     if(target.distanceSqr(position) < speed * speed) {
00059         target.x = uniform(0.0, areaDimension);
00060         target.y = uniform(0.0, areaDimension);
00061         coordinator->setPosition(groupNr, target);
00062     }
00063 }


Member Data Documentation

int groupRoaming::groupNr [protected]

Definition at line 42 of file groupRoaming.h.

Referenced by groupRoaming(), and move().


The documentation for this class was generated from the following files:
Generated on Wed May 26 16:21:17 2010 for OverSim by  doxygen 1.6.3