40 #ifndef PCL_OUTOFCORE_OUTOFCOREOCTREEBASE_H_
41 #define PCL_OUTOFCORE_OUTOFCOREOCTREEBASE_H_
43 #include <pcl/outofcore/boost.h>
44 #include <pcl/common/io.h>
47 #include <pcl/outofcore/octree_base_node.h>
48 #include <pcl/outofcore/octree_disk_container.h>
49 #include <pcl/outofcore/octree_ram_container.h>
52 #include <pcl/outofcore/outofcore_iterator_base.h>
53 #include <pcl/outofcore/outofcore_breadth_first_iterator.h>
54 #include <pcl/outofcore/outofcore_depth_first_iterator.h>
55 #include <pcl/outofcore/impl/outofcore_breadth_first_iterator.hpp>
56 #include <pcl/outofcore/impl/outofcore_depth_first_iterator.hpp>
59 #include <pcl/outofcore/metadata.h>
60 #include <pcl/outofcore/outofcore_base_data.h>
62 #include <pcl/filters/filter.h>
63 #include <pcl/filters/random_sample.h>
65 #include <pcl/PCLPointCloud2.h>
148 template<
typename ContainerT = OutofcoreOctreeDiskContainer<pcl::Po
intXYZ>,
typename Po
intT = pcl::Po
intXYZ>
177 typedef boost::shared_ptr<OutofcoreOctreeBase<ContainerT, PointT> >
Ptr;
178 typedef boost::shared_ptr<const OutofcoreOctreeBase<ContainerT, PointT> >
ConstPtr;
218 OutofcoreOctreeBase (
const Eigen::Vector3d& min,
const Eigen::Vector3d& max,
const double resolution_arg,
const boost::filesystem::path &root_node_name,
const std::string &coord_sys);
233 OutofcoreOctreeBase (
const boost::uint64_t max_depth,
const Eigen::Vector3d &min,
const Eigen::Vector3d &max,
const boost::filesystem::path &root_node_name,
const std::string &coord_sys);
300 queryFrustum (
const double *planes, std::list<std::string>& file_names)
const;
303 queryFrustum (
const double *planes, std::list<std::string>& file_names,
const boost::uint32_t query_depth)
const;
306 queryFrustum (
const double *planes,
const Eigen::Vector3d &eye,
const Eigen::Matrix4d &view_projection_matrix,
307 std::list<std::string>& file_names,
const boost::uint32_t query_depth)
const;
321 queryBBIntersects (
const Eigen::Vector3d &min,
const Eigen::Vector3d &max,
const boost::uint32_t query_depth, std::list<std::string> &bin_name)
const;
378 queryBoundingBox (
const Eigen::Vector3d &min,
const Eigen::Vector3d &max,
const int query_depth, std::list<std::string> &filenames)
const
391 getBoundingBox (Eigen::Vector3d &min, Eigen::Vector3d &max)
const;
397 inline boost::uint64_t
400 return (
metadata_->getLODPoints (depth_index));
412 queryBoundingBoxNumPoints (
const Eigen::Vector3d& min,
const Eigen::Vector3d& max,
const int query_depth,
bool load_from_disk =
true);
418 inline const std::vector<boost::uint64_t>&
426 inline boost::uint64_t
432 inline boost::uint64_t
464 return (
metadata_->getCoordinateSystem ());
504 getOccupiedVoxelCenters(std::vector<Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &voxel_centers,
size_t query_depth)
const;
551 return (sample_percent_);
559 this->sample_percent_ = std::fabs (sample_percent_arg) > 1.0 ? 1.0 : std::fabs (sample_percent_arg);
564 init (
const boost::uint64_t& depth,
const Eigen::Vector3d& min,
const Eigen::Vector3d& max,
const boost::filesystem::path& root_name,
const std::string& coord_sys);
631 boost::shared_ptr<OutofcoreOctreeBaseMetadata>
metadata_;
645 enlargeToCube (Eigen::Vector3d &bb_min, Eigen::Vector3d &bb_max);
649 calculateDepth (
const Eigen::Vector3d& min_bb,
const Eigen::Vector3d& max_bb,
const double leaf_resolution);
651 double sample_percent_;
660 #endif // PCL_OUTOFCORE_OUTOFCOREOCTREEBASE_H_