00001 00011 #include "SpatialSimObjectPopulation.h" 00012 00013 SpatialSimObjectPopulation::~SpatialSimObjectPopulation() 00014 { 00015 } 00016 00017 SimObject::ID SpatialSimObjectPopulation::getIdAt( Point3D<double> const &p ) { 00018 return SimObjectPopulation::getID( locations->getIndex( p ) ); 00019 } 00020 00021 SimObject::ID SpatialSimObjectPopulation::getIdAt( double const& x, double const& y, double const& z ) { 00022 return SimObjectPopulation::getID( locations->getIndex( x, y, z ) ); 00023 } 00024 00025 SimObject* SpatialSimObjectPopulation::objectAt( Point3D<double> const& p ) { 00026 return SimObjectPopulation::object( locations->getIndex( p ) ); 00027 } 00028 00029 SimObject* SpatialSimObjectPopulation::objectAt( double const& x, double const& y, double const& z ) { 00030 return SimObjectPopulation::object( locations->getIndex( x, y, z ) ); 00031 } 00032 00033 Point3D<double> SpatialSimObjectPopulation::getLocation( size_t index ) const { 00034 return (*locations)[ index ]; 00035 } 00036 00037 shared_ptr<SpatialSimObjectPopulation> SpatialSimObjectPopulation::subPopulation( SubSpaceConstraint const& cnstr ) { 00038 return shared_ptr<SpatialSimObjectPopulation>( SpatialSimObjectPopulation::new_subset( (*locations->subspace_index( cnstr )) ) ); 00039 } 00040 00041 SpatialSimObjectPopulation* SpatialSimObjectPopulation::new_subset( vector< size_t > const& subindices ) const { 00042 size_t s; 00043 vector<SimObject::ID::Packed> objIDs( subindices.size() ); 00044 for( size_t i=0; i<subindices.size(); i++ ) { 00045 s = subindices[i]; 00046 objIDs[i] = (*id_vec)[ s ]; 00047 } 00048 return new SpatialSimObjectPopulation( *net, objIDs, locations->subset( subindices ) ); 00049 } 00050 00051 00052