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 "itkDistanceMetric.h"
00022 #include "itkMeasurementVectorTraits.h"
00023
00024 namespace itk{
00025 namespace Statistics{
00026
00051 template< class TVector >
00052 class ITK_EXPORT EuclideanDistance :
00053 public DistanceMetric< TVector >
00054 {
00055 public:
00057 typedef EuclideanDistance Self;
00058 typedef DistanceMetric< TVector > Superclass;
00059 typedef SmartPointer< Self > Pointer ;
00060 typedef SmartPointer<const Self> ConstPointer;
00061 typedef typename Superclass::MeasurementVectorSizeType MeasurementVectorSizeType;
00062
00064 itkTypeMacro(EuclideanDistance, DistanceMetric);
00065
00067 itkNewMacro(Self) ;
00068
00070 typedef typename TVector::ValueType ValueType ;
00071
00073 double Evaluate(const TVector &x) const ;
00074
00076 double Evaluate(const TVector &x1, const TVector &x2) const ;
00077
00080 double Evaluate(const ValueType &a, const ValueType &b) const ;
00081
00084 bool IsWithinRange(const TVector &x, const double radius) const ;
00085
00086 protected:
00087 EuclideanDistance() {}
00088 virtual ~EuclideanDistance() {}
00089 } ;
00090
00091 }
00092 }
00093
00094 #ifndef ITK_MANUAL_INSTANTIATION
00095 #include "itkEuclideanDistance.txx"
00096 #endif
00097
00098 #endif
00099
00100
00101
00102
00103
00104
00105
00106