10 #pragma warning(disable : 4267)
18 #include <nanoflann.hpp>
21 #include "HalfEdgeTriangleMesh.h"
42 return SetRawData(Eigen::Map<const Eigen::MatrixXd>(
49 const auto &cloud =
dynamic_cast<const ccPointCloud &
>(geometry);
50 std::vector<Eigen::Vector3d>
points = cloud.getEigenPoints();
51 return SetRawData(Eigen::Map<const Eigen::MatrixXd>(
55 const auto &mesh =
dynamic_cast<const ccMesh &
>(geometry);
56 std::vector<Eigen::Vector3d>
points = mesh.getEigenVertices();
57 return SetRawData(Eigen::Map<const Eigen::MatrixXd>(
63 return SetRawData(Eigen::Map<const Eigen::MatrixXd>(
64 (
const double *)mesh.vertices_.data(), 3,
65 mesh.vertices_.size()));
71 "[KDTreeFlann::SetGeometry] Unsupported Geometry type.");
80 bool KDTreeFlann::SetRawData(
const Eigen::Map<const Eigen::MatrixXd> &
data) {
98 template int KDTreeFlann::Search<Eigen::Vector3d>(
99 const Eigen::Vector3d &query,
101 std::vector<int> &indices,
102 std::vector<double> &distance2)
const;
103 template int KDTreeFlann::Query<Eigen::Vector3d>(
104 const std::vector<Eigen::Vector3d> &queries,
106 std::vector<std::vector<int>> &indices,
107 std::vector<std::vector<double>> &distance2)
const;
108 template int KDTreeFlann::SearchKNN<Eigen::Vector3d>(
109 const Eigen::Vector3d &query,
111 std::vector<int> &indices,
112 std::vector<double> &distance2)
const;
113 template int KDTreeFlann::SearchRadius<Eigen::Vector3d>(
114 const Eigen::Vector3d &query,
116 std::vector<int> &indices,
117 std::vector<double> &distance2)
const;
118 template int KDTreeFlann::SearchHybrid<Eigen::Vector3d>(
119 const Eigen::Vector3d &query,
122 std::vector<int> &indices,
123 std::vector<double> &distance2)
const;
125 template int KDTreeFlann::Search<Eigen::VectorXd>(
126 const Eigen::VectorXd &query,
128 std::vector<int> &indices,
129 std::vector<double> &distance2)
const;
130 template int KDTreeFlann::Query<Eigen::VectorXd>(
131 const std::vector<Eigen::VectorXd> &queries,
133 std::vector<std::vector<int>> &indices,
134 std::vector<std::vector<double>> &distance2)
const;
135 template int KDTreeFlann::SearchKNN<Eigen::VectorXd>(
136 const Eigen::VectorXd &query,
138 std::vector<int> &indices,
139 std::vector<double> &distance2)
const;
140 template int KDTreeFlann::SearchRadius<Eigen::VectorXd>(
141 const Eigen::VectorXd &query,
143 std::vector<int> &indices,
144 std::vector<double> &distance2)
const;
145 template int KDTreeFlann::SearchHybrid<Eigen::VectorXd>(
146 const Eigen::VectorXd &query,
149 std::vector<int> &indices,
150 std::vector<double> &distance2)
const;
Hierarchical CLOUDVIEWER Object.
CV_CLASS_ENUM getClassID() const override
Returns class ID.
A 3D cloud and its associated features (color, normals, scalar fields, etc.)
HalfEdgeTriangleMesh inherits TriangleMesh class with the addition of HalfEdge data structure for eac...
bool SetMatrixData(const Eigen::MatrixXd &data)
bool SetFeature(const utility::Feature &feature)
std::unique_ptr< KDTree_t > nanoflann_index_
KDTreeFlann()
Default Constructor.
std::unique_ptr< Eigen::Map< const Eigen::MatrixXd > > data_interface_
bool SetGeometry(const ccHObject &geometry)
std::vector< double > data_
nanoflann::KDTreeEigenMatrixAdaptor< Eigen::Map< const Eigen::MatrixXd >, -1, nanoflann::metric_L2, false > KDTree_t
Base class for KDTree search parameters.
Class to store featrues for registration.
Eigen::MatrixXd data_
Data buffer storing features.
Generic file read and write utility for python interface.