7#include <Eigen/Geometry>
8#include <gtsam_points/ann/knn_result.hpp>
9#include <gtsam_points/types/point_cloud.hpp>
10#include <gtsam_points/types/frame_traits.hpp>
12namespace gtsam_points {
35 this->points.
size() >= setting.max_num_points_in_cell ||
39 [&](
const auto& pt) { return (pt - points.points[i]).squaredNorm() < setting.min_sq_dist_in_cell; })
44 this->points.emplace_back(
points.points[i]);
49 this->
covs.emplace_back(points.
covs[i]);
62 template <
typename Result>
63 void knn_search(
const Eigen::Vector4d& pt, Result& result)
const {
68 for (
size_t i = 0; i <
points.size(); i++) {
69 const double sq_dist = (
points[i] - pt).squaredNorm();
70 result.push(i, sq_dist);
77 std::vector<Eigen::Matrix4d>
covs;
92 static const Eigen::Vector4d& point(
const FlatContainer& frame,
size_t i) {
return frame.
points[i]; }
93 static const Eigen::Vector4d& normal(
const FlatContainer& frame,
size_t i) {
return frame.
normals[i]; }
94 static const Eigen::Matrix4d& cov(
const FlatContainer& frame,
size_t i) {
return frame.
covs[i]; }
FlatContainer setting.
Definition flat_container.hpp:18
double min_sq_dist_in_cell
Minimum squared distance between points in a cell.
Definition flat_container.hpp:22
size_t max_num_points_in_cell
Maximum number of points in a cell.
Definition flat_container.hpp:23
Point container with a flat vector.
Definition flat_container.hpp:15
void knn_search(const Eigen::Vector4d &pt, Result &result) const
Find k nearest neighbors.
Definition flat_container.hpp:63
size_t size() const
Number of points.
Definition flat_container.hpp:30
std::vector< Eigen::Matrix4d > covs
Covariances.
Definition flat_container.hpp:77
std::vector< double > intensities
Intensities.
Definition flat_container.hpp:78
std::vector< Eigen::Vector4d > normals
Normals.
Definition flat_container.hpp:76
FlatContainer()
Constructor.
Definition flat_container.hpp:27
std::vector< Eigen::Vector4d > points
Points.
Definition flat_container.hpp:75
void add(const Setting &setting, const PointCloud &points, size_t i)
Add a point to the container.
Definition flat_container.hpp:33
void finalize()
Finalize the container (Nothing to do for FlatContainer).
Definition flat_container.hpp:57
Standard point cloud class that holds only pointers to point attributes.
Definition point_cloud.hpp:19
Eigen::Vector4d * normals
Point normals (nx, ny, nz, 0)
Definition point_cloud.hpp:107
Eigen::Matrix4d * covs
Point covariances cov(3, 3) = 0.
Definition point_cloud.hpp:108
size_t size() const
Number of points.
Definition point_cloud.hpp:43
double * intensities
Point intensities.
Definition point_cloud.hpp:109
Definition frame_traits.hpp:17