#include <greatGathering.h>
Inheritance diagram for greatGathering:
Public Member Functions | |
greatGathering (double areaDimension, double speed, std::map< NodeHandle, Vector > *Neighbors, Repository *repository) | |
virtual void | move () |
Defined in subclasses only. | |
Protected Attributes | |
Repository * | repository |
greatGathering::greatGathering | ( | double | areaDimension, | |
double | speed, | |||
std::map< NodeHandle, Vector > * | Neighbors, | |||
Repository * | repository | |||
) |
00004 :MovementGenerator(areaDimension, speed, Neighbors) 00005 { 00006 // get access to the repository 00007 this->repository = repository; 00008 00009 position.setValue(uniform(-areaDimension, areaDimension), uniform(-areaDimension, areaDimension)); 00010 flock(); 00011 testBounds(); 00012 00013 if(repository->getPosition_size() == 0) { 00014 target.setValue(uniform(-areaDimension/2, areaDimension/2), uniform(-areaDimension/2, areaDimension/2)); 00015 repository->setPosition_size(1); 00016 repository->setPosition(0, target); 00017 } 00018 else { 00019 Vector temp; 00020 target = repository->getPosition(0); 00021 temp.setValue(uniform(-20.0*speed, 20.0*speed), uniform(-20.0*speed, 20.0*speed)); 00022 target += temp; 00023 } 00024 direction = target - position; 00025 direction.normalize(); 00026 }
void greatGathering::move | ( | ) | [virtual] |
Defined in subclasses only.
Implements MovementGenerator.
00029 { 00030 position += direction * speed; 00031 flock(); 00032 testBounds(); 00033 if(target.distsqr(position) < 4.0*speed*speed) { 00034 Vector temp; 00035 target = repository->getPosition(0); 00036 temp.setValue(uniform(-20.0*speed, 20.0*speed), uniform(-20.0*speed, 20.0*speed)); 00037 target += temp; 00038 } 00039 direction = target - position; 00040 direction.normalize(); 00041 }
Repository* greatGathering::repository [protected] |