DGtal  1.3.beta
DGtal::functors::IIFirstPrincipalDirectionFunctor< TSpace, TMatrix > Class Template Reference

Aim: A functor Matrix -> RealVector that returns the first principal curvature direction by diagonalizing the given covariance matrix. This functor is valid starting from 2D space and is equivalent to IITangentDirectionFunctor in 2D. Note that by first we mean the direction with greatest curvature in absolute value. More...

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

## Public Types

typedef IIFirstPrincipalDirectionFunctor< TSpace > Self

typedef TSpace Space

typedef Space::RealVector RealVector

typedef RealVector::Component Component

typedef TMatrix Matrix

typedef Matrix Argument

typedef RealVector Quantity

typedef Quantity Value

## Public Member Functions

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

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

BOOST_STATIC_ASSERT ((Space::dimension >=2))

IIFirstPrincipalDirectionFunctor ()
Default constructor. More...

IIFirstPrincipalDirectionFunctor (const Self &)
Copy constructor. Nothing to do. More...

Selfoperator= (const Self &)

Value operator() (const Argument &arg) const

void init (Component, Component)

## Private Attributes

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>> class DGtal::functors::IIFirstPrincipalDirectionFunctor< TSpace, TMatrix >

Aim: A functor Matrix -> RealVector that returns the first principal curvature direction by diagonalizing the given covariance matrix. This functor is valid starting from 2D space and is equivalent to IITangentDirectionFunctor in 2D. Note that by first we mean the direction with greatest curvature in absolute value.

Description of template class 'IIFirstPrincipalDirectionFunctor'

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

Definition at line 219 of file IIGeometricFunctors.h.

## ◆ Argument

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

Definition at line 228 of file IIGeometricFunctors.h.

## ◆ Component

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

Definition at line 226 of file IIGeometricFunctors.h.

## ◆ Matrix

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

Definition at line 227 of file IIGeometricFunctors.h.

## ◆ Quantity

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

Definition at line 229 of file IIGeometricFunctors.h.

## ◆ RealVector

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

Definition at line 225 of file IIGeometricFunctors.h.

## ◆ Self

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

Definition at line 223 of file IIGeometricFunctors.h.

## ◆ Space

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

Definition at line 224 of file IIGeometricFunctors.h.

## ◆ Value

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

Definition at line 230 of file IIGeometricFunctors.h.

## ◆ IIFirstPrincipalDirectionFunctor() [1/2]

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 DGtal::functors::IIFirstPrincipalDirectionFunctor< TSpace, TMatrix >::IIFirstPrincipalDirectionFunctor ( )
inline

Default constructor.

Definition at line 237 of file IIGeometricFunctors.h.

237 {}

## ◆ IIFirstPrincipalDirectionFunctor() [2/2]

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 DGtal::functors::IIFirstPrincipalDirectionFunctor< TSpace, TMatrix >::IIFirstPrincipalDirectionFunctor ( const Self & )
inline

Copy constructor. Nothing to do.

Definition at line 239 of file IIGeometricFunctors.h.

239 {}

## ◆ BOOST_CONCEPT_ASSERT() [1/2]

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 DGtal::functors::IIFirstPrincipalDirectionFunctor< 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::IIFirstPrincipalDirectionFunctor< 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::IIFirstPrincipalDirectionFunctor< TSpace, TMatrix >::BOOST_STATIC_ASSERT ( (Space::dimension >=2) )

## ◆ init()

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

Initializes the functor with the gridstep and the ball Euclidean radius. Not used for this estimator.

Definition at line 271 of file IIGeometricFunctors.h.

271 {}

## ◆ operator()()

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

Apply operator.

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

Definition at line 251 of file IIGeometricFunctors.h.

252  {
255
256  ASSERT ( !std::isnan(eigenValues) ); // NaN
257 #ifdef DEBUG
258  for( Dimension i_dim = 1; i_dim < Space::dimension; ++i_dim )
259  {
260  ASSERT ( std::abs(eigenValues[i_dim - 1]) <= std::abs(eigenValues[i_dim]) );
261  }
262 #endif
263
264  return eigenVectors.column( Space::dimension - 1 ); // first principal curvature direction is associated to greatest eigenvalue.
265  }

## ◆ operator=()

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
 Self& DGtal::functors::IIFirstPrincipalDirectionFunctor< TSpace, TMatrix >::operator= ( const Self & )
inline

Assignment. Nothing to do.

Returns
itself

Definition at line 242 of file IIGeometricFunctors.h.

242 { return *this; }

## ◆ eigenValues

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

A data member only used for temporary calculations.

Definition at line 277 of file IIGeometricFunctors.h.

## ◆ eigenVectors

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

A data member only used for temporary calculations.

Definition at line 275 of file IIGeometricFunctors.h.

The documentation for this class was generated from the following file:
DGtal::EigenDecomposition::getEigenDecomposition
static void getEigenDecomposition(const Matrix &matrix, Matrix &eigenVectors, Vector &eigenValues)
Compute both eigen vectors and eigen values from an input matrix.
DGtal::Dimension
DGtal::uint32_t Dimension
Definition: Common.h:137
DGtal::functors::IIFirstPrincipalDirectionFunctor::eigenVectors
Matrix eigenVectors
A data member only used for temporary calculations.
Definition: IIGeometricFunctors.h:275
DGtal::SpaceND::dimension
static const Dimension dimension
static constants to store the dimension.
Definition: SpaceND.h:132
DGtal::functors::IIFirstPrincipalDirectionFunctor::eigenValues
RealVector eigenValues
A data member only used for temporary calculations.
Definition: IIGeometricFunctors.h:277