26template <
typename POINT, std::
size_t MAX_POINTS>
47 Eigen::Vector3d ll, Eigen::Vector3d ur,
48 double eps = std::numeric_limits<double>::epsilon());
74 std::vector<POINT*>& pnts)
const;
91 OctTree(Eigen::Vector3d
const& ll, Eigen::Vector3d
const& ur,
double eps);
141 Eigen::Vector3d
const _ll;
143 Eigen::Vector3d
const _ur;
Implementation of the OctTree class.
Eigen::Vector3d const _ur
upper right back face point of the cube
Eigen::Vector3d const & getLowerLeftCornerPoint() const
bool addPoint(POINT *pnt, POINT *&ret_pnt)
bool addPointToChild(POINT *pnt)
bool addPoint_(POINT *pnt, POINT *&ret_pnt)
void splitNode(POINT *pnt)
void getPointsInRange(T const &min, T const &max, std::vector< POINT * > &pnts) const
bool _is_leaf
flag if this OctTree is a leaf
OctTree(Eigen::Vector3d const &ll, Eigen::Vector3d const &ur, double eps)
Eigen::Vector3d const & getUpperRightCornerPoint() const
std::array< OctTree< POINT, MAX_POINTS > *, 8 > _children
std::vector< POINT * > const & getPointVector() const
std::vector< POINT * > _pnts
vector of pointers to POINT objects
bool isOutside(POINT *pnt) const
double const _eps
threshold for point uniqueness
static OctTree< POINT, MAX_POINTS > * createOctTree(Eigen::Vector3d ll, Eigen::Vector3d ur, double eps=std::numeric_limits< double >::epsilon())
OctTree< POINT, MAX_POINTS > const * getChild(std::size_t i) const
Eigen::Vector3d const _ll
lower left front face point of the cube