CGAL 6.0.2 - Classification

Loading...
Searching...
No Matches
List of all members | Classes | Public Types
CGAL::Classification::Local_eigen_analysis Class Reference
Classification Reference » Common Data Structures

`#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
using | Eigenvalues = std::array< float, 3 >
| 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.
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.
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.

## 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`.
template<typename GeomTraits >
GeomTraits::Plane_3 | plane (std::size_t index) const
| returns the estimated local tangent plane of the point at position `index`.
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

  FaceListGraph | model of `FaceListGraph`.
  NeighborQuery | model of `NeighborQuery`
  ConcurrencyTag | enables sequential versus parallel algorithm. Possible values are `Parallel_tag` (default value if CGAL is linked with TBB) or `Sequential_tag` (default value otherwise).
  DiagonalizeTraits | model 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

  input | face graph.
  neighbor_query | object 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

  ClusterRange | model of `ConstRange`. Its iterator type is `RandomAccessIterator` and its value type is the key type of `PointMap`.
  ConcurrencyTag | enables sequential versus parallel algorithm. Possible values are `Parallel_tag` (default value if CGAL is linked with TBB) or `Sequential_tag` (default value otherwise).
  DiagonalizeTraits | model 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

  input | cluster 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

  PointRange | model of `ConstRange`. Its iterator type is `RandomAccessIterator` and its value type is the key type of `PointMap`.
  PointMap | model of `ReadablePropertyMap` whose key type is the value type of the iterator of `PointRange` and value type is `CGAL::Point_3`.
  NeighborQuery | model of `NeighborQuery`
  ConcurrencyTag | enables sequential versus parallel algorithm. Possible values are `Parallel_tag` (default value if CGAL is linked with TBB) or `Sequential_tag` (default value otherwise).
  DiagonalizeTraits | model 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

  input | point range.
  point_map | property map to access the input points.
  neighbor_query | object used to access neighborhoods of points.

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

  GeomTraits | model 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

  GeomTraits | model of CGAL Kernel.