DGtal  0.9.4beta
Public Types | Public Member Functions | Private Attributes
DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix > Class Template Reference

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

Collaboration diagram for DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >:
[legend]

Public Types

typedef IIPrincipalDirectionsFunctor< TSpace > Self
 
typedef TSpace Space
 
typedef Space::RealVector RealVector
 
typedef RealVector::Component Component
 
typedef TMatrix Matrix
 
typedef Matrix Argument
 
typedef std::pair< RealVector, RealVectorQuantity
 
typedef Quantity Value
 

Public Member Functions

 BOOST_CONCEPT_ASSERT ((concepts::CSpace< TSpace >))
 
 BOOST_STATIC_ASSERT ((Space::dimension >=3))
 
 IIPrincipalDirectionsFunctor ()
 
 IIPrincipalDirectionsFunctor (const Self &)
 
Selfoperator= (const Self &)
 
Value operator() (const Argument &arg) const
 
void init (Component, Component)
 

Private Attributes

Matrix eigenVectors
 
RealVector eigenValues
 

Detailed Description

template<typename TSpace, typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
class DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >

Aim: A functor Matrix -> std::pair<RealVector,RealVector> that returns the first and the second principal curvature directions by diagonalizing the given covariance matrix. This functor is valid starting from 3D space. Note that by second we mean the direction with second greatest curvature in absolute value.

Description of template class 'IIPrincipalDirectionsFunctor'

Template Parameters
TSpacea model of CSpace, for instance SpaceND.
TMatrixa model of CMatrix, for instance SimpleMatrix.
See also
IntegralInvariantCovarianceEstimator

Definition at line 369 of file IIGeometricFunctors.h.

Member Typedef Documentation

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

Definition at line 378 of file IIGeometricFunctors.h.

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

Definition at line 376 of file IIGeometricFunctors.h.

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

Definition at line 377 of file IIGeometricFunctors.h.

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

Definition at line 379 of file IIGeometricFunctors.h.

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

Definition at line 375 of file IIGeometricFunctors.h.

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

Definition at line 373 of file IIGeometricFunctors.h.

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

Definition at line 374 of file IIGeometricFunctors.h.

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

Definition at line 380 of file IIGeometricFunctors.h.

Constructor & Destructor Documentation

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

Default constructor.

Definition at line 387 of file IIGeometricFunctors.h.

387 {}
template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >::IIPrincipalDirectionsFunctor ( const Self )
inline

Copy constructor. Nothing to do.

Definition at line 389 of file IIGeometricFunctors.h.

389 {}

Member Function Documentation

template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >::BOOST_CONCEPT_ASSERT ( (concepts::CSpace< TSpace >)  )
template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >::BOOST_STATIC_ASSERT ( (Space::dimension >=3)  )
template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
void DGtal::functors::IIPrincipalDirectionsFunctor< 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 424 of file IIGeometricFunctors.h.

424 {}
template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
Value DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >::operator() ( const Argument arg) const
inline

Apply operator.

Parameters
argany symmetric positive matrix (covariance matrix
Returns
the first and the second principal curvature direction in a std::pair for the II covariance matrix, which is the eigenvector associated with the highest eigenvalues.

Definition at line 401 of file IIGeometricFunctors.h.

References DGtal::SpaceND< dim, TInteger >::dimension, DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >::eigenValues, and DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >::eigenVectors.

402  {
403  EigenDecomposition<Space::dimension, Component, Matrix>
404  ::getEigenDecomposition( arg, eigenVectors, eigenValues );
405 
406  ASSERT ( !std::isnan(eigenValues[0]) ); // NaN
407 #ifdef DEBUG
408  for( Dimension i_dim = 1; i_dim < Space::dimension; ++i_dim )
409  {
410  ASSERT ( std::abs(eigenValues[i_dim - 1]) <= std::abs(eigenValues[i_dim]) );
411  }
412 #endif
413 
414  return Value(
415  eigenVectors.column( Space::dimension - 1 ),
416  eigenVectors.column( Space::dimension - 2 )
417  );
418  }
static const Dimension dimension
static constants to store the dimension.
Definition: SpaceND.h:132
DGtal::uint32_t Dimension
Definition: Common.h:120
Matrix eigenVectors
A data member only used for temporary calculations.
RealVector eigenValues
A data member only used for temporary calculations.
template<typename TSpace , typename TMatrix = SimpleMatrix< typename TSpace::RealVector::Component, TSpace::dimension, TSpace::dimension>>
Self& DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >::operator= ( const Self )
inline

Assignment. Nothing to do.

Returns
itself

Definition at line 392 of file IIGeometricFunctors.h.

392 { return *this; }

Field Documentation

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

A data member only used for temporary calculations.

Definition at line 430 of file IIGeometricFunctors.h.

Referenced by DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >::operator()().

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

A data member only used for temporary calculations.

Definition at line 428 of file IIGeometricFunctors.h.

Referenced by DGtal::functors::IIPrincipalDirectionsFunctor< TSpace, TMatrix >::operator()().


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