#include <greatGathering.h>
Inheritance diagram for greatGathering:
Public Member Functions | |
greatGathering (double areaDimension, double speed, std::map< TransportAddress, Vector > *Neighbors, Repository *repository) | |
virtual void | move () |
Defined in subclasses only. | |
Protected Attributes | |
Repository * | repository |
greatGathering::greatGathering | ( | double | areaDimension, | |
double | speed, | |||
std::map< TransportAddress, Vector > * | Neighbors, | |||
Repository * | repository | |||
) |
00027 :MovementGenerator(areaDimension, speed, Neighbors) 00028 { 00029 // get access to the repository 00030 this->repository = repository; 00031 00032 position.setValue(uniform(-areaDimension, areaDimension), uniform(-areaDimension, areaDimension)); 00033 flock(); 00034 testBounds(); 00035 00036 if(repository->getPosition_size() == 0) { 00037 target.setValue(uniform(-areaDimension/2, areaDimension/2), uniform(-areaDimension/2, areaDimension/2)); 00038 repository->setPosition_size(1); 00039 repository->setPosition(0, target); 00040 } 00041 else { 00042 Vector temp; 00043 target = repository->getPosition(0); 00044 temp.setValue(uniform(-20.0*speed, 20.0*speed), uniform(-20.0*speed, 20.0*speed)); 00045 target += temp; 00046 } 00047 direction = target - position; 00048 direction.normalize(); 00049 }
void greatGathering::move | ( | ) | [virtual] |
Defined in subclasses only.
Implements MovementGenerator.
00052 { 00053 position += direction * speed; 00054 flock(); 00055 testBounds(); 00056 if(target.distsqr(position) < 4.0*speed*speed) { 00057 Vector temp; 00058 target = repository->getPosition(0); 00059 temp.setValue(uniform(-20.0*speed, 20.0*speed), uniform(-20.0*speed, 20.0*speed)); 00060 target += temp; 00061 } 00062 direction = target - position; 00063 direction.normalize(); 00064 }
Repository* greatGathering::repository [protected] |