\( \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 5.0 - 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 std::array< float, 3 > Eigenvalues
 Eigenvalues (sorted in ascending order)
 

Named Constructors

template<typename PointRange , typename PointMap , typename NeighborQuery , typename ConcurrencyTag , typename DiagonalizeTraits >
static Local_eigen_analysis create_from_point_set (const PointRange &input, PointMap point_map, const NeighborQuery &neighbor_query, const ConcurrencyTag &=ConcurrencyTag(), const DiagonalizeTraits &=DiagonalizeTraits())
 Computes the local eigen analysis of an input point set based on a local neighborhood. More...
 
template<typename FaceListGraph , typename NeighborQuery , typename ConcurrencyTag , typename DiagonalizeTraits >
static Local_eigen_analysis create_from_face_graph (const FaceListGraph &input, const NeighborQuery &neighbor_query, const ConcurrencyTag &=ConcurrencyTag(), const DiagonalizeTraits &=DiagonalizeTraits())
 Computes the local eigen analysis of an input face graph based on a local neighborhood. More...
 
template<typename ClusterRange , typename ConcurrencyTag , typename DiagonalizeTraits >
static Local_eigen_analysis create_from_point_clusters (const ClusterRange &input, const ConcurrencyTag &=ConcurrencyTag(), const DiagonalizeTraits &=DiagonalizeTraits())
 Computes the local eigen analysis of an input set of point clusters based on a local neighborhood. More...
 

Analysis

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...
 
Eigenvalues eigenvalue (std::size_t index) const
 Returns the normalized eigenvalues of the point at position index.
 

Member Function Documentation

◆ create_from_face_graph()

template<typename FaceListGraph , typename NeighborQuery , typename ConcurrencyTag , typename DiagonalizeTraits >
static Local_eigen_analysis CGAL::Classification::Local_eigen_analysis::create_from_face_graph ( const FaceListGraph input,
const NeighborQuery neighbor_query,
const ConcurrencyTag &  = ConcurrencyTag(),
const DiagonalizeTraits = DiagonalizeTraits() 
)
static

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

Template Parameters
FaceListGraphmodel of FaceListGraph.
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
inputface graph.
neighbor_queryobject used to access neighborhoods of points.

◆ create_from_point_clusters()

template<typename ClusterRange , typename ConcurrencyTag , typename DiagonalizeTraits >
static Local_eigen_analysis CGAL::Classification::Local_eigen_analysis::create_from_point_clusters ( const ClusterRange &  input,
const ConcurrencyTag &  = ConcurrencyTag(),
const DiagonalizeTraits = DiagonalizeTraits() 
)
static

Computes the local eigen analysis of an input set of point clusters based on a local neighborhood.

Template Parameters
ClusterRangemodel of ConstRange. Its iterator type is RandomAccessIterator and its value type is the key type of PointMap.
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
inputcluster range.

◆ create_from_point_set()

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

Computes the local eigen analysis of an input point set 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. In that case, an overload using Eigen_diagonalize_traits is provided.
Parameters
inputpoint range.
point_mapproperty map to access the input points.
neighbor_queryobject used to access neighborhoods of points.
Examples:
Classification/example_feature.cpp.

◆ 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.