10 #define SE_VISITOR_HPP 40 template<
typename OctreeT>
41 inline typename OctreeT::DataType
getData(
const OctreeT& octree,
42 const Eigen::Vector3i& voxel_coord);
58 template<
typename OctreeT,
typename BlockT>
59 inline typename OctreeT::DataType
60 getData(
const OctreeT& octree, BlockT* block_ptr,
const Eigen::Vector3i& voxel_coord);
78 template<
typename OctreeT>
79 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Multi, typename OctreeT::DataType>
81 const Eigen::Vector3i& voxel_coord,
82 const int scale_desired,
100 template<
typename OctreeT,
typename BlockT>
101 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Multi, typename OctreeT::DataType>
104 const Eigen::Vector3i& voxel_coord,
105 const int scale_desired,
106 int& scale_returned);
117 template<
typename OctreeT>
119 typename OctreeT::DataType>
120 getMaxData(
const OctreeT& octree,
const Eigen::Vector3i& voxel_coord,
const int scale_desired);
136 template<
typename OctreeT>
137 inline std::optional<se::field_t>
getField(
const OctreeT& octree,
138 const Eigen::Vector3i& voxel_coord);
153 template<
typename OctreeT,
typename BlockT>
154 inline std::optional<se::field_t>
155 getField(
const OctreeT& octree, BlockT* block_ptr,
const Eigen::Vector3i& voxel_coord);
173 template<
typename OctreeT>
174 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Multi, std::optional<se::field_t>>
176 const Eigen::Vector3i& voxel_coord,
177 const int scale_desired,
178 int& scale_returned);
195 template<
typename OctreeT,
typename BlockT>
196 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Multi, std::optional<se::field_t>>
199 const Eigen::Vector3i& voxel_coord,
200 const int scale_desired,
201 int& scale_returned);
217 template<
typename OctreeT>
218 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Single, std::optional<se::field_t>>
219 getFieldInterp(
const OctreeT& octree,
const Eigen::Vector3f& voxel_coord_f);
236 template<
typename OctreeT>
237 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Multi, std::optional<se::field_t>>
238 getFieldInterp(
const OctreeT& octree,
const Eigen::Vector3f& voxel_coord_f);
252 template<
typename OctreeT>
253 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Multi, std::optional<se::field_t>>
254 getFieldInterp(
const OctreeT& octree,
const Eigen::Vector3f& voxel_coord_f,
int& scale_returned);
269 template<
typename OctreeT>
272 std::optional<se::field_t>>
274 const Eigen::Vector3f& voxel_coord_f,
275 const int scale_desired,
276 int& scale_returned);
291 template<
typename OctreeT>
294 std::optional<se::field_t>>
296 const Eigen::Vector3f& voxel_coord_f,
297 const int scale_desired,
298 int& scale_returned);
314 template<
typename OctreeT>
315 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Single, std::optional<se::field_vec_t>>
316 getFieldGrad(
const OctreeT& octree,
const Eigen::Vector3f& voxel_coord_f);
332 template<
typename OctreeT>
333 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Multi, std::optional<se::field_vec_t>>
334 getFieldGrad(
const OctreeT& octree,
const Eigen::Vector3f& voxel_coord_f);
347 template<
typename OctreeT>
348 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Multi, std::optional<se::field_vec_t>>
349 getFieldGrad(
const OctreeT& octree,
const Eigen::Vector3f& voxel_coord_f,
int& scale_returned);
363 template<
typename OctreeT>
364 inline typename std::enable_if_t<OctreeT::res_ == se::Res::Multi, std::optional<se::field_vec_t>>
366 const Eigen::Vector3f& voxel_coord_f,
367 const int scale_desired,
368 int& scale_returned);
373 #include "impl/visitor_impl.hpp" 375 #endif // SE_VISITOR_HPP std::optional< se::field_t > getField(const OctreeT &octree, const Eigen::Vector3i &voxel_coord)
Single/Multi-res get field functions.
OctreeT::DataType getData(const OctreeT &octree, const Eigen::Vector3i &voxel_coord)
Single/multi-res get data functions.
std::enable_if_t<(OctreeT::fld_==se::Field::TSDF &&OctreeT::res_==se::Res::Multi), std::optional< se::field_t > > getFieldInterp(const OctreeT &octree, const Eigen::Vector3f &voxel_coord_f, const int scale_desired, int &scale_returned)
Get the interplated field value for a given coordinate [float voxel coordinates] and desired scale...
Definition: visitor.hpp:273
std::enable_if_t< OctreeT::DataType::fld_==se::Field::Occupancy, typename OctreeT::DataType > getMaxData(const OctreeT &octree, const Eigen::Vector3i &voxel_coord, const int scale_desired)
Get the max occupancy data at a given scale.
std::enable_if_t< OctreeT::res_==se::Res::Single, std::optional< se::field_vec_t > > getFieldGrad(const OctreeT &octree, const Eigen::Vector3f &voxel_coord_f)
Single-res get gradient functions.
Helper wrapper to allocate and de-allocate octants in the octree.
Definition: colour_utils.hpp:17