cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
base_norm.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cpp-toolbox/cpp-toolbox_export.hpp>
6
7namespace toolbox::pcl
8{
9
41template<typename Derived, typename DataType, typename KNN>
42class CPP_TOOLBOX_EXPORT base_norm_extractor_t
43{
44public:
45 using data_type = DataType;
46 using knn_type = KNN;
50 std::shared_ptr<toolbox::types::point_cloud_t<data_type>>;
51
54
60 std::size_t set_input(const point_cloud& cloud)
61 {
62 return static_cast<Derived*>(this)->set_input_impl(cloud);
63 }
64
70 std::size_t set_input(const point_cloud_ptr& cloud)
71 {
72 return static_cast<Derived*>(this)->set_input_impl(cloud);
73 }
74
84 std::size_t set_num_neighbors(std::size_t num_neighbors)
85 {
86 m_num_neighbors = num_neighbors;
87 return static_cast<Derived*>(this)->set_num_neighbors_impl(num_neighbors);
88 }
89
94 [[nodiscard]] std::size_t get_num_neighbors() const noexcept
95 {
96 return m_num_neighbors;
97 }
98
110 std::size_t set_knn(const knn_type& knn)
111 {
112 return static_cast<Derived*>(this)->set_knn_impl(knn);
113 }
114
131 point_cloud extract() { return static_cast<Derived*>(this)->extract_impl(); }
132
138 {
139 return static_cast<Derived*>(this)->extract_impl(output);
140 }
141
146
147private:
148 std::size_t m_num_neighbors = 0;
149}; // class base_norm_extractor_t
150
151} // namespace toolbox::pcl
法向量提取器的基类(CRTP模式) / Base class for normal extractors (CRTP pattern)
Definition base_norm.hpp:43
std::size_t get_num_neighbors() const noexcept
获取当前的近邻数量设置 / Get current number of neighbors setting
Definition base_norm.hpp:94
KNN knn_type
Definition base_norm.hpp:46
std::shared_ptr< toolbox::types::point_cloud_t< data_type > > point_cloud_ptr
Definition base_norm.hpp:50
base_norm_extractor_t(base_norm_extractor_t &&)=delete
base_norm_extractor_t & operator=(const base_norm_extractor_t &)=delete
DataType data_type
Definition base_norm.hpp:45
std::size_t set_knn(const knn_type &knn)
设置KNN搜索算法 / Set KNN search algorithm
Definition base_norm.hpp:110
point_cloud extract()
提取法向量 / Extract normals
Definition base_norm.hpp:131
base_norm_extractor_t(const base_norm_extractor_t &)=delete
std::size_t set_num_neighbors(std::size_t num_neighbors)
设置用于法向量估计的近邻数量 / Set number of neighbors for normal estimation
Definition base_norm.hpp:84
std::size_t set_input(const point_cloud_ptr &cloud)
设置输入点云(智能指针版本) / Set input point cloud (smart pointer version)
Definition base_norm.hpp:70
std::size_t set_input(const point_cloud &cloud)
设置输入点云 / Set input point cloud
Definition base_norm.hpp:60
void extract(point_cloud_ptr output)
提取法向量到指定输出 / Extract normals to specified output
Definition base_norm.hpp:137
base_norm_extractor_t & operator=(base_norm_extractor_t &&)=delete
包含点和相关数据的点云类 / A point cloud class containing points and associated data
Definition point.hpp:268
Definition base_correspondence_generator.hpp:18