DGtal 1.3.0
Searching...
No Matches
DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix > Struct Template Reference

Aim: A functor Matrix -> Real that returns the first principal curvature value by diagonalizing the given covariance matrix. This functor is valid starting from 3D space. Note that by first we mean the value with first greatest curvature in absolute value. More...

#include <DGtal/geometry/surfaces/estimation/IIGeometricFunctors.h>

## Public Types

typedef IIFirstPrincipalCurvature3DFunctor< TSpace > Self

typedef TSpace Space

typedef Space::RealVector RealVector

typedef RealVector::Component Component

typedef TMatrix Matrix

typedef Matrix Argument

typedef Component Quantity

typedef Quantity Value

## Public Member Functions

BOOST_CONCEPT_ASSERT ((concepts::CMatrix< Matrix >))

BOOST_CONCEPT_ASSERT ((concepts::CSpace< TSpace >))

BOOST_STATIC_ASSERT ((Space::dimension==3))

Value operator() (const Argument &arg) const

void init (Component h, Component r)

## Private Attributes

Quantity dh5

Quantity d6_PIr6

Quantity d8_5r

Matrix eigenVectors
A data member only used for temporary calculations. More...

RealVector eigenValues
A data member only used for temporary calculations. More...

## Detailed Description

template<typename TSpace, typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
struct DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >

Aim: A functor Matrix -> Real that returns the first principal curvature value by diagonalizing the given covariance matrix. This functor is valid starting from 3D space. Note that by first we mean the value with first greatest curvature in absolute value.

Description of template class 'IIFirstPrincipalCurvature3DFunctor'

Template Parameters
 TSpace a model of CSpace, for instance SpaceND. TMatrix a model of CMatrix, for instance SimpleMatrix.
IntegralInvariantCovarianceEstimator

Definition at line 749 of file IIGeometricFunctors.h.

## ◆ Argument

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 typedef Matrix DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::Argument

Definition at line 758 of file IIGeometricFunctors.h.

## ◆ Component

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 typedef RealVector::Component DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::Component

Definition at line 756 of file IIGeometricFunctors.h.

## ◆ Matrix

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 typedef TMatrix DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::Matrix

Definition at line 757 of file IIGeometricFunctors.h.

## ◆ Quantity

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 typedef Component DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::Quantity

Definition at line 759 of file IIGeometricFunctors.h.

## ◆ RealVector

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 typedef Space::RealVector DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::RealVector

Definition at line 755 of file IIGeometricFunctors.h.

## ◆ Self

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 typedef IIFirstPrincipalCurvature3DFunctor DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::Self

Definition at line 753 of file IIGeometricFunctors.h.

## ◆ Space

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 typedef TSpace DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::Space

Definition at line 754 of file IIGeometricFunctors.h.

## ◆ Value

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 typedef Quantity DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::Value

Definition at line 760 of file IIGeometricFunctors.h.

## ◆ BOOST_CONCEPT_ASSERT() [1/2]

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::BOOST_CONCEPT_ASSERT ( (concepts::CMatrix< Matrix >) )

## ◆ BOOST_CONCEPT_ASSERT() [2/2]

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::BOOST_CONCEPT_ASSERT ( (concepts::CSpace< TSpace >) )

## ◆ BOOST_STATIC_ASSERT()

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::BOOST_STATIC_ASSERT ( (Space::dimension==3) )

## ◆ init()

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 void DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::init ( Component h, Component r )
inline

Initializes the functor with the gridstep and the ball Euclidean radius.

Parameters
 h the gridstep r the ball radius

Definition at line 794 of file IIGeometricFunctors.h.

795 {
796 double r3 = r * r * r;
797 double r6 = r3 * r3;
798 d6_PIr6 = 6.0 / ( M_PI * r6 );
799 d8_5r = 8.0 / ( 5.0 * r );
800 double h2 = h * h;
801 dh5 = h2 * h2 * h;
802 }

## ◆ operator()()

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 Value DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::operator() ( const Argument & arg ) const
inline

Apply operator.

Parameters
 arg any symmetric positive matrix (covariance matrix
Returns
the first principal curvature value for the II covariance matrix, which is the highest eigenvalue.

Definition at line 773 of file IIGeometricFunctors.h.

774 {
775 Argument cp_arg = arg;
776 cp_arg *= dh5;
777 EigenDecomposition<Space::dimension, Component, Matrix>
778 ::getEigenDecomposition( cp_arg, eigenVectors, eigenValues );
779
780 ASSERT ( !std::isnan(eigenValues[0]) ); // NaN
781 ASSERT ( (std::abs(eigenValues[0]) <= std::abs(eigenValues[1]))
782 && (std::abs(eigenValues[1]) <= std::abs(eigenValues[2])) );
783
784
785 return d6_PIr6 * ( eigenValues[2] - ( 3.0 * eigenValues[1] )) + d8_5r;
786 }
RealVector eigenValues
A data member only used for temporary calculations.
Matrix eigenVectors
A data member only used for temporary calculations.

## ◆ d6_PIr6

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 Quantity DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::d6_PIr6
private

Definition at line 806 of file IIGeometricFunctors.h.

## ◆ d8_5r

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 Quantity DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::d8_5r
private

Definition at line 807 of file IIGeometricFunctors.h.

## ◆ dh5

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 Quantity DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::dh5
private

Definition at line 805 of file IIGeometricFunctors.h.

## ◆ eigenValues

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 RealVector DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::eigenValues
mutableprivate

A data member only used for temporary calculations.

Definition at line 812 of file IIGeometricFunctors.h.

## ◆ eigenVectors

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 Matrix DGtal::functors::IIFirstPrincipalCurvature3DFunctor< TSpace, TMatrix >::eigenVectors
mutableprivate

A data member only used for temporary calculations.

Definition at line 810 of file IIGeometricFunctors.h.

The documentation for this struct was generated from the following file: