00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkConicShellInteriorExteriorSpatialFunction_h
00018 #define __itkConicShellInteriorExteriorSpatialFunction_h
00019
00020 #include "vnl/vnl_vector.h"
00021 #include "itkInteriorExteriorSpatialFunction.h"
00022 #include "itkCovariantVector.h"
00023
00024 namespace itk
00025 {
00026
00057 template <unsigned int VDimension=3, typename TInput=Point<double,3> >
00058 class ITK_EXPORT ConicShellInteriorExteriorSpatialFunction:
00059 public InteriorExteriorSpatialFunction<VDimension, TInput>
00060 {
00061 public:
00062
00064 typedef ConicShellInteriorExteriorSpatialFunction Self;
00065 typedef InteriorExteriorSpatialFunction<VDimension> Superclass;
00066 typedef SmartPointer<Self> Pointer;
00067 typedef SmartPointer<const Self> ConstPointer;
00068
00070 itkTypeMacro(ConicShellInteriorExteriorSpatialFunction,
00071 InteriorExteriorSpatialFunction);
00072
00074 itkNewMacro(Self);
00075
00077 typedef typename Superclass::InputType InputType;
00078
00080 typedef typename Superclass::OutputType OutputType;
00081
00083 typedef CovariantVector<double, VDimension> GradientType;
00084
00086 OutputType Evaluate(const InputType& position) const;
00087
00089 itkGetConstMacro( Origin, InputType);
00090 itkSetMacro( Origin, InputType);
00092
00094 GradientType GetOriginGradient() {return m_OriginGradient;}
00095 void SetOriginGradient(GradientType grad);
00097
00099 itkGetConstMacro( DistanceMin, double);
00100 itkSetMacro( DistanceMin, double);
00102
00104 itkGetConstMacro( DistanceMax, double);
00105 itkSetMacro( DistanceMax, double);
00107
00109 itkGetConstMacro( Epsilon, double);
00110 itkSetMacro( Epsilon, double);
00112
00114 itkGetConstMacro( Polarity, bool);
00115 itkSetMacro( Polarity, bool);
00117
00118 protected:
00119 ConicShellInteriorExteriorSpatialFunction();
00120 virtual ~ConicShellInteriorExteriorSpatialFunction();
00121 void PrintSelf(std::ostream& os, Indent indent) const;
00122
00123 private:
00124 ConicShellInteriorExteriorSpatialFunction(const Self&);
00125 void operator=(const Self&);
00126
00128 InputType m_Origin;
00129
00131 GradientType m_OriginGradient;
00132
00133 double m_DistanceMin;
00134 double m_DistanceMax;
00135 double m_Epsilon;
00136 bool m_Polarity;
00137
00138 };
00139
00140 }
00141
00142
00143 #define ITK_TEMPLATE_ConicShellInteriorExteriorSpatialFunction(_, EXPORT, x, y) namespace itk { \
00144 _(2(class EXPORT ConicShellInteriorExteriorSpatialFunction< ITK_TEMPLATE_2 x >)) \
00145 namespace Templates { typedef ConicShellInteriorExteriorSpatialFunction< ITK_TEMPLATE_2 x > \
00146 ConicShellInteriorExteriorSpatialFunction##y; } \
00147 }
00148
00149 #if ITK_TEMPLATE_EXPLICIT
00150 # include "Templates/itkConicShellInteriorExteriorSpatialFunction+-.h"
00151 #endif
00152
00153 #if ITK_TEMPLATE_TXX
00154 # include "itkConicShellInteriorExteriorSpatialFunction.txx"
00155 #endif
00156
00157 #endif
00158