8#ifndef SRC_SPATIALHASH_H_
9#define SRC_SPATIALHASH_H_
34 if (this->
operator()(0) < rhs(0))
return true;
35 if (rhs(0) < this->
operator()(0))
return false;
36 if (this->
operator()(1) < rhs(1))
return true;
37 if (rhs(1) < this->
operator()(1))
return false;
38 if (this->
operator()(2) < rhs(2))
return true;
44 std::vector<Triplet> tripletList;
50 tripletList.push_back(s);
66template<
bool flag,
typename T,
typename U>
75template<
typename T,
typename U>
115 for(
int i_point=0; i_point<size; i_point++)
118 this->coordinates.push_back(vector);
127 for(
int i_point=0; i_point<size; i_point++)
130 this->coordinates.push_back(vector);
145 coordinate= coordinate-
origin;
146 coordinate= (coordinate.array()/
step.array()).floor().matrix();
147 base= coordinate.template cast<int>();
183 std::cout <<
"Folding point " << i_point <<
": "
186 shift= ((
hashFunction(i_point).template cast<double>()).array()*
step.array()).matrix();
187 shift= (shift.array()* pbc.template cast<double>().array()).matrix();
SpatialHash< true > ConstSpatialHash
void fold(const Vector3i &pbc)
BoxPoints(Vector3d origin, Vector3d step, MatrixXd &coordinates)
BoxPoints(Vector3d origin, Vector3d step, std::vector< Vector3d > &coordinates)
Select< isConst, constVector3d, Vector3d >::Result B
SpatialHash(Vector3d origin, Vector3d step, C &coordinates)
Select< isConst, conststd::vector< Vector3d >, std::vector< Vector3d > >::Result C
std::vector< Eigen::Map< B > > coordinates
Triplet hashFunction(const int &i) const
SpatialHash(Vector3d origin, Vector3d step, A &coordinates)
Select< isConst, constMatrixXd, MatrixXd >::Result A
std::map< Triplet, std::vector< int > > hashTable
Triplet(int i, int j, int k)
bool operator<(const Triplet &rhs) const
Triplet(const Vector3i &base)
std::vector< Triplet > neighborList()
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > MatrixXd
Eigen::Matrix< double, 1, DIM, Eigen::RowMajor > Vector3d
Eigen::Matrix< int, 1, DIM, Eigen::RowMajor > Vector3i