00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkEuclideanDistance_h
00018
#define __itkEuclideanDistance_h
00019
00020
#include "itkNumericTraits.h"
00021
#include "itkFixedArray.h"
00022
#include "itkDistanceMetric.h"
00023
00024
namespace itk{
00025
namespace Statistics{
00026
00037
template<
class TVector >
00038 class ITK_EXPORT EuclideanDistance :
00039
public DistanceMetric< TVector >
00040 {
00041
public:
00043 typedef EuclideanDistance
Self;
00044 typedef DistanceMetric< TVector > Superclass;
00045 typedef SmartPointer< Self > Pointer ;
00046
00048
itkStaticConstMacro(VectorLength,
unsigned int, TVector::Length);
00049
00051
itkTypeMacro(EuclideanDistance,
DistanceMetric);
00052
00054
itkNewMacro(
Self) ;
00055
00057 typedef typename TVector::ValueType
ValueType ;
00058
00060
double Evaluate(
const TVector &x)
const ;
00061
00063
double Evaluate(
const TVector &x1,
const TVector &x2)
const ;
00064
00067
double Evaluate(
const ValueType &a,
const ValueType &b)
const ;
00068
00071
bool IsWithinRange(
const TVector &x,
const double radius)
const ;
00072
00073
protected:
00074 EuclideanDistance() {}
00075 virtual ~EuclideanDistance() {}
00076 virtual void PrintSelf(std::ostream& os,
Indent indent)
const
00077
{
Superclass::PrintSelf(os, indent) ; }
00078
00079 } ;
00080
00081 }
00082 }
00083
00084
#ifndef ITK_MANUAL_INSTANTIATION
00085
#include "itkEuclideanDistance.txx"
00086
#endif
00087
00088
#endif
00089
00090
00091
00092
00093
00094
00095