\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.12 - Classification
CGAL::Classification::Local_eigen_analysis Class Reference

#include <CGAL/Classification/Local_eigen_analysis.h>

Definition

Class that precomputes and stores the eigenvectors and eigenvalues of the covariance matrices of all points of a point set using a local neighborhood.

This class can be used to compute eigen features (see Predefined Features) and to estimate local normal vectors and tangent planes.

Public Types

typedef CGAL::cpp11::array< float, 3 > Eigenvalues
 Eigenvalues (sorted in ascending order)
 

Public Member Functions

template<typename PointRange , typename PointMap , typename NeighborQuery , typename ConcurrencyTag , typename DiagonalizeTraits >
 Local_eigen_analysis (const PointRange &input, PointMap point_map, const NeighborQuery &neighbor_query, const ConcurrencyTag &=ConcurrencyTag(), const DiagonalizeTraits &=DiagonalizeTraits())
 Computes the local eigen analysis of an input range based on a local neighborhood. More...
 
template<typename GeomTraits >
GeomTraits::Vector_3 normal_vector (std::size_t index) const
 Returns the estimated unoriented normal vector of the point at position index. More...
 
template<typename GeomTraits >
GeomTraits::Plane_3 plane (std::size_t index) const
 Returns the estimated local tangent plane of the point at position index. More...
 
const Eigenvalueseigenvalue (std::size_t index) const
 Returns the normalized eigenvalues of the point at position index.
 
float sum_of_eigenvalues (std::size_t index) const
 Returns the sum of eigenvalues of the point at position index.
 

Constructor & Destructor Documentation

◆ Local_eigen_analysis()

template<typename PointRange , typename PointMap , typename NeighborQuery , typename ConcurrencyTag , typename DiagonalizeTraits >
CGAL::Classification::Local_eigen_analysis::Local_eigen_analysis ( const PointRange &  input,
PointMap  point_map,
const NeighborQuery neighbor_query,
const ConcurrencyTag &  = ConcurrencyTag(),
const DiagonalizeTraits = DiagonalizeTraits() 
)

Computes the local eigen analysis of an input range based on a local neighborhood.

Template Parameters
PointRangemodel of ConstRange. Its iterator type is RandomAccessIterator and its value type is the key type of PointMap.
PointMapmodel of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is CGAL::Point_3.
NeighborQuerymodel of NeighborQuery
ConcurrencyTagenables sequential versus parallel algorithm. Possible values are Parallel_tag (default value is CGAL is linked with TBB) or Sequential_tag (default value otherwise).
DiagonalizeTraitsmodel of DiagonalizeTraits used for matrix diagonalization. It can be omitted: if Eigen 3 (or greater) is available and CGAL_EIGEN3_ENABLED is defined then an overload using Eigen_diagonalize_traits is provided. Otherwise, the internal implementation Diagonalize_traits is used.
Parameters
inputpoint range.
point_mapproperty map to access the input points.
neighbor_queryobject used to access neighborhoods of points.

Member Function Documentation

◆ normal_vector()

template<typename GeomTraits >
GeomTraits::Vector_3 CGAL::Classification::Local_eigen_analysis::normal_vector ( std::size_t  index) const

Returns the estimated unoriented normal vector of the point at position index.

Template Parameters
GeomTraitsmodel of CGAL Kernel.

◆ plane()

template<typename GeomTraits >
GeomTraits::Plane_3 CGAL::Classification::Local_eigen_analysis::plane ( std::size_t  index) const

Returns the estimated local tangent plane of the point at position index.

Template Parameters
GeomTraitsmodel of CGAL Kernel.