DGtal  0.9.4beta
DGtal::concepts::CMetricSpace< T > Struct Template Reference

#include <DGtal/geometry/volumes/distance/CMetricSpace.h>

Inheritance diagram for DGtal::concepts::CMetricSpace< T >:
[legend]
Collaboration diagram for DGtal::concepts::CMetricSpace< T >:
[legend]

## Public Types

typedef T::Point Point

typedef T::Space Space

typedef T::Value Value

typedef T::RawValue RawValue

## Public Member Functions

BOOST_CONCEPT_ASSERT ((CSpace< Space >))

BOOST_CONCEPT_ASSERT ((CQuantity< Value >))

BOOST_CONCEPT_ASSERT ((CQuantity< RawValue >))

BOOST_CONCEPT_USAGE (CMetricSpace)

void checkConstConstraints () const

## Private Attributes

myX

Point myPoint

Point myPoint2

Point myPoint3

Value myValue

RawValue myRawValue

DGtal::Closest myClosest

## Detailed Description

### template<typename T> struct DGtal::concepts::CMetricSpace< T >

Aim: defines the concept of metric spaces.

Description of concept 'CMetricSpace'

Models of metric spaces must satsify metric space conditions as described in Metric Spaces, Digital Metric Spaces and Related Concepts. For short, models must have a Point inner type and a distance Value type.

In addition, CMetricSpace models should implement a distance function (operator ()) on points satisfying the metric conditions:

• d(x,y) >= 0
• d(x,y) == 0 <=> x==y
• d(x,y) == d(y,x) (symmetry)
• d(x,y) <= d(x,z) + d(z,y) (triangle inequality)

Two additional methods must be implemented:

• rawDistance(x,y) method provides internal distance representation between two points. For example, a convenient way to have an exact representation of hte Euclidean metric is to consider its square which can be represented error free on a CInteger type for example. In this case, the rawDistance method returns the square of the Euclidean distance between the two points in an exact way as soon as the internal RawValue type is error free and can represents sum of squares of Point::Coordiante values.
• closest(a,x,y) decides which point between x and y is closest to a. This method is required for performance purposes.

### Associated types :

• Space: type of space on which the metric is defined (model of CSpace).
• Point: type of points associated with the underlying metric space.
• Value: the value type of the metric (model of CQuantity).
• RawValue: the value type for the rawDistance method (model of CQuantity).

### Notation

• X : A type that is a model of CMetricSpace
• x, y : object of type X

### Valid expressions and semantics

Name Expression Type requirements Return type Precondition Semantics Post condition Complexity
distance computation x(aPoint,anotherPoint) aPoint and anotherPoint of type Point a value of type Value compute the distance between two points -
raw distance computation x.rawDistance(aPoint,anotherPoint) aPoint and anotherPoint of type Point a value of type RawValue compute the raw representation of the distance between two points -
closest point test closest(aOrigin, aP, aQ) aOrigin, aP,aQ of type aPoint a value of type Closest decide between aP and aQ which one is closer to the origin. This functions returns either DGtal::ClosestFIRST if aP is closer, DGtal::ClosestSECOND if aQ is closer and DGtal::ClosestBOTH if both are equidistant.-

### Notes

Template Parameters
 T the type that should be a model of CMetricSpace.

Definition at line 124 of file CMetricSpace.h.

## Member Typedef Documentation

template<typename T >
 typedef T::Point DGtal::concepts::CMetricSpace< T >::Point

Definition at line 128 of file CMetricSpace.h.

template<typename T >
 typedef T::RawValue DGtal::concepts::CMetricSpace< T >::RawValue

Definition at line 131 of file CMetricSpace.h.

template<typename T >
 typedef T::Space DGtal::concepts::CMetricSpace< T >::Space

Definition at line 129 of file CMetricSpace.h.

template<typename T >
 typedef T::Value DGtal::concepts::CMetricSpace< T >::Value

Definition at line 130 of file CMetricSpace.h.

## Member Function Documentation

template<typename T >
 DGtal::concepts::CMetricSpace< T >::BOOST_CONCEPT_ASSERT ( (CSpace< Space >) )
template<typename T >
 DGtal::concepts::CMetricSpace< T >::BOOST_CONCEPT_ASSERT ( (CQuantity< Value >) )
template<typename T >
 DGtal::concepts::CMetricSpace< T >::BOOST_CONCEPT_ASSERT ( (CQuantity< RawValue >) )
template<typename T >
 DGtal::concepts::CMetricSpace< T >::BOOST_CONCEPT_USAGE ( CMetricSpace< T > )
inline

Definition at line 137 of file CMetricSpace.h.

138  {
140  }
void checkConstConstraints() const
Definition: CMetricSpace.h:142
template<typename T >
 void DGtal::concepts::CMetricSpace< T >::checkConstConstraints ( ) const
inline

Definition at line 142 of file CMetricSpace.h.

143  {
144  // const method dummyConst should take parameter myA of type A and return
145  // something of type B
146  ConceptUtils::sameType( myValue, myX.operator()( myPoint , myPoint2 ) );
149  }
void sameType(const T &t1, const T &t2)

## Field Documentation

template<typename T >
 DGtal::Closest DGtal::concepts::CMetricSpace< T >::myClosest
private

Definition at line 156 of file CMetricSpace.h.

template<typename T >
 Point DGtal::concepts::CMetricSpace< T >::myPoint
private

Definition at line 153 of file CMetricSpace.h.

template<typename T >
 Point DGtal::concepts::CMetricSpace< T >::myPoint2
private

Definition at line 153 of file CMetricSpace.h.

template<typename T >
 Point DGtal::concepts::CMetricSpace< T >::myPoint3
private

Definition at line 153 of file CMetricSpace.h.

template<typename T >
 RawValue DGtal::concepts::CMetricSpace< T >::myRawValue
private

Definition at line 155 of file CMetricSpace.h.

template<typename T >
 Value DGtal::concepts::CMetricSpace< T >::myValue
private

Definition at line 154 of file CMetricSpace.h.

template<typename T >
 T DGtal::concepts::CMetricSpace< T >::myX
private

Definition at line 152 of file CMetricSpace.h.

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