17#include <spdlog/fmt/ostr.h> 
   63    template <
typename PNT_TYPE>
 
   64    AABB(std::vector<PNT_TYPE*> 
const& pnts,
 
   65         std::vector<std::size_t> 
const& ids)
 
   69        for (std::size_t i = 1; i < ids.size(); ++i)
 
 
   86    template <
typename InputIterator>
 
   87    AABB(InputIterator first, InputIterator last)
 
   89        if (std::distance(first, last) <= 0)
 
   92                "AABB::AABB(InputIterator first, InputIterator last): first > " 
   96        InputIterator it(first);
 
 
  107    template <
typename PNT_TYPE>
 
  113        std::pair<bool, std::bitset<3>> updated(
false, 0);
 
  114        for (std::size_t k(0); k < 3; k++)
 
  120                updated.first = 
true;
 
  127                updated.second[k] = 
true;
 
  131        if (updated.second.any())
 
  136        return updated.first;
 
 
  142    template <
typename T>
 
  160    template <
typename T>
 
  205        os << 
"\tx [" << min[0] << 
", " << max[0] << 
") (extent " 
  206           << max[0] - min[0] << 
")\n";
 
  207        os << 
"\ty [" << min[1] << 
", " << max[1] << 
") (extent " 
  208           << max[1] - min[1] << 
")\n";
 
  209        os << 
"\tz [" << min[2] << 
", " << max[2] << 
") (extent " 
  210           << max[2] - min[2] << 
")";
 
 
  215    Eigen::Vector3d 
_min_pnt{std::numeric_limits<double>::max(),
 
  216                             std::numeric_limits<double>::max(),
 
  217                             std::numeric_limits<double>::max()};
 
 
  218    Eigen::Vector3d 
_max_pnt{std::numeric_limits<double>::lowest(),
 
  219                             std::numeric_limits<double>::lowest(),
 
  220                             std::numeric_limits<double>::lowest()};
 
 
  228        for (std::size_t k = 0; k < 3; ++k)
 
  233                    _max_pnt[k], std::numeric_limits<double>::max());
 
 
  238    template <
typename PNT_TYPE>
 
  246    template <
typename PNT_TYPE>
 
  247    void init(PNT_TYPE* 
const& pnt)
 
 
  257    template <
typename PNT_TYPE>
 
  260        for (std::size_t k(0); k < 3; k++)
 
 
  273    template <
typename PNT_TYPE>
 
  279    template <
typename PNT_TYPE>
 
 
Class AABB is an axis aligned bounding box around a given set of geometric points of (template) type ...
 
void updateWithoutEnlarge(PNT_TYPE *const &pnt)
 
Eigen::Vector3d const & getMaxPoint() const
 
AABB(InputIterator first, InputIterator last)
 
friend std::ostream & operator<<(std::ostream &os, AABB const &aabb)
 
AABB(std::vector< PNT_TYPE * > const &pnts, std::vector< std::size_t > const &ids)
 
bool containsPoint(T const &pnt, double eps) const
 
void update(PNT_TYPE const *pnt)
 
void init(PNT_TYPE const &pnt)
 
void updateWithoutEnlarge(PNT_TYPE const &p)
 
Eigen::Vector3d const & getMinPoint() const
 
void init(PNT_TYPE *const &pnt)
 
MinMaxPoints getMinMaxPoints() const
 
bool update(PNT_TYPE const &p)
 
bool containsAABB(AABB const &other_aabb) const
 
bool containsPointXY(T const &pnt) const
 
void enlarge(std::bitset< 3 > to_update=7)