00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkParametricPath_h
00018 #define __itkParametricPath_h
00019
00020 #include "itkPath.h"
00021 #include "itkContinuousIndex.h"
00022 #include "itkIndex.h"
00023 #include "itkOffset.h"
00024 #include "itkVector.h"
00025
00026 namespace itk
00027 {
00028
00029
00060 template <unsigned int VDimension>
00061 class ITK_EXPORT ParametricPath : public
00062 Path< double, ContinuousIndex<double,VDimension>, VDimension >
00063 {
00064 public:
00066 typedef ParametricPath Self;
00067 typedef Path<double,ContinuousIndex<double,VDimension>,VDimension> Superclass;
00068 typedef SmartPointer<Self> Pointer;
00069 typedef SmartPointer<const Self> ConstPointer;
00070
00072 itkTypeMacro(ParametricPath, Path);
00073
00075 typedef typename Superclass::InputType InputType;
00076
00078 typedef typename Superclass::OutputType OutputType;
00079
00080
00082 typedef ContinuousIndex<double,VDimension> ContinuousIndexType;
00083 typedef Index< VDimension > IndexType;
00084 typedef Offset< VDimension > OffsetType;
00085 typedef Vector<double,VDimension> VectorType;
00086
00087
00090 virtual IndexType EvaluateToIndex( const InputType & input ) const;
00091
00107 virtual OffsetType IncrementInput(InputType & input) const;
00108
00115 virtual VectorType EvaluateDerivative(const InputType & input) const;
00116
00117 itkSetMacro( DefaultInputStepSize, InputType )
00118 itkGetConstReferenceMacro( DefaultInputStepSize, InputType )
00119
00120
00121 protected:
00122 ParametricPath();
00123 ~ParametricPath(){}
00124 void PrintSelf(std::ostream &os, Indent indent) const;
00125
00136 InputType m_DefaultInputStepSize;
00137
00138 private:
00139 ParametricPath(const Self&);
00140 void operator=(const Self&);
00141
00142 };
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152 #if (defined(_WIN32) || defined(WIN32)) && !defined(ITKSTATIC)
00153 # ifndef ITKCommon_EXPORTS
00154 template class __declspec(dllimport) ParametricPath<2>;
00155 #endif
00156 #endif
00157
00158 }
00159
00160
00161 #define ITK_TEMPLATE_ParametricPath(_, EXPORT, x, y) namespace itk { \
00162 _(1(class EXPORT ParametricPath< ITK_TEMPLATE_1 x >)) \
00163 namespace Templates { typedef ParametricPath< ITK_TEMPLATE_1 x > \
00164 ParametricPath##y; } \
00165 }
00166
00167 #if ITK_TEMPLATE_EXPLICIT
00168 # include "Templates/itkParametricPath+-.h"
00169 #endif
00170
00171 #if ITK_TEMPLATE_TXX
00172 # include "itkParametricPath.txx"
00173 #endif
00174
00175 #endif
00176