DGtal  1.3.beta
Public Types | Public Member Functions
DGtal::detail::NormalVectorFromDCA Struct Reference

#include <DGtal/geometry/curves/estimation/SegmentComputerEstimators.h>

Public Types

typedef PointVector< 2, double > Value
 

Public Member Functions

template<typename DCA >
Value operator() (const typename DCA::ConstIterator &it, const DCA &aDCA) const
 

Detailed Description

Description of class 'NormalVectorFromDCA'

Aim: estimates the normal at a given position from a geometricDCA.

Definition at line 829 of file SegmentComputerEstimators.h.

Member Typedef Documentation

◆ Value

Definition at line 832 of file SegmentComputerEstimators.h.

Member Function Documentation

◆ operator()()

template<typename DCA >
Value DGtal::detail::NormalVectorFromDCA::operator() ( const typename DCA::ConstIterator it,
const DCA &  aDCA 
) const
inline

Operator()

Returns
normal at it
Parameters
itposition where the estimation has to be done
aDCAan instance of segment computer devoted to the DCA recognition.
Template Parameters
DCAa model of segment computer devoted to the DCA recognition, basically geometricDCA.

Definition at line 849 of file SegmentComputerEstimators.h.

851  {
852  typedef typename DCA::Pair Pair;
853  typedef typename DCA::Point Point;
854  typedef typename Point::Coordinate Coordinate;
855 
856  if ( !aDCA.isStraight() )
857  {
858  //separating circle center
859  double c0, c1, r;
860  aDCA.getSeparatingCircle().getParameters(c0, c1, r);
861  //point
862  Pair pair = *it;
863  Point i = pair.first;
864  Point o = pair.second;
865  double m0 = NumberTraits<Coordinate>::castToDouble(i[0]+o[0]) / 2.0;
866  double m1 = NumberTraits<Coordinate>::castToDouble(i[1]+o[1]) / 2.0;
867  //normal vector
868  double v0 = m0 - c0;
869  double v1 = m1 - c1;
870  //norm
871  double n = std::sqrt(v0*v0 + v1*v1);
872  return Value( v0/n, v1/n );
873  }
874  else
875  {
876  //separating straight line and normal vector
877  double a, b, c;
878  aDCA.getStabbingLineComputerPtr()->getParameters(a, b, c);
879  //norm
880  double n = std::sqrt(a*a + b*b);
881  return Value( a/n, b/n );
882  }
883  }

References DGtal::NumberTraitsImpl< std::decay< T >::type >::castToDouble().


The documentation for this struct was generated from the following file:
DGtal::detail::NormalVectorFromDCA::Value
PointVector< 2, double > Value
Definition: SegmentComputerEstimators.h:832
DGtal::NumberTraitsImpl< std::decay< T >::type >::castToDouble
static double castToDouble(const std::decay< T >::type &aT)
Cast method to double (for I/O or board export uses only).
Definition: NumberTraits.h:164
Point
MyPointD Point
Definition: testClone2.cpp:383