DGtal  1.2.0
DGtal::detail::DistanceFromDCA Struct Reference

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

## Public Types

typedef std::pair< double, double > Value

## Public Member Functions

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

## Detailed Description

Description of class 'DistanceFromDCA'

Aim: estimates the distance of a given pair of points to the separating circle of a DCA.

Definition at line 925 of file SegmentComputerEstimators.h.

## ◆ Value

 typedef std::pair DGtal::detail::DistanceFromDCA::Value

Definition at line 928 of file SegmentComputerEstimators.h.

## ◆ operator()()

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

Operator()

Returns
distances (in a pair) of the inner and outer points pointed by it to the separating circle of aDCA
Parameters
 it position where the estimation has to be done aDCA an instance of segment computer devoted to the DCA recognition. aH grid step
Template Parameters
 DCA a model of segment computer devoted to the DCA recognition, basically geometricDCA.

Definition at line 947 of file SegmentComputerEstimators.h.

949  {
950  typedef typename DCA::Pair Pair;
951  typedef typename DCA::Point Point;
952  typedef typename Point::Coordinate Coordinate;
953
955  {
956  //separating circle center
957  double c0, c1, r;
959  //points
960  Pair pair = *it;
961  Point i = pair.first;
962  Point o = pair.second;
963  //distances
964  double distI0 = NumberTraits<Coordinate>::castToDouble(i) - c0;
965  double distI1 = NumberTraits<Coordinate>::castToDouble(i) - c1;
966  double distI = std::sqrt( distI0*distI0 + distI1*distI1 ) - r;
967  double distO0 = NumberTraits<Coordinate>::castToDouble(o) - c0;
968  double distO1 = NumberTraits<Coordinate>::castToDouble(o) - c1;
969  double distO = std::sqrt( distO0*distO0 + distO1*distO1 ) - r;
970  return Value( distI*aH, distO*aH );
971  }
972  else
973  {
974  //separating straight line
975  double a, b, c;
977  //norm
978  double n = std::sqrt(a*a + b*b);
979  //points
980  Pair pair = *it;
981  Point i = pair.first;
982  Point o = pair.second;
983  //distances
984  double rI = NumberTraits<Coordinate>::castToDouble(i)*a +
986  double distI = rI / n;
987  double rO = NumberTraits<Coordinate>::castToDouble(o)*a +
989  double distO = rO / n;
990  return Value( distI*aH, distO*aH );
991  }
992  }
static double castToDouble(const std::decay< T >::type &aT)
Cast method to double (for I/O or board export uses only).
Definition: NumberTraits.h:154
MyPointD Point
Definition: testClone2.cpp:383

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