00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkSymmetricEllipsoidInteriorExteriorSpatialFunction_h
00018 #define __itkSymmetricEllipsoidInteriorExteriorSpatialFunction_h
00019
00020 #include "itkInteriorExteriorSpatialFunction.h"
00021
00022 namespace itk
00023 {
00024
00037 template <unsigned int VDimension = 3,
00038 typename TInput = Point<double, VDimension> >
00039 class ITK_EXPORT SymmetricEllipsoidInteriorExteriorSpatialFunction:
00040 public InteriorExteriorSpatialFunction<VDimension, TInput>
00041 {
00042 public:
00044 typedef SymmetricEllipsoidInteriorExteriorSpatialFunction Self;
00045 typedef InteriorExteriorSpatialFunction<VDimension> Superclass;
00046 typedef SmartPointer<Self> Pointer;
00047 typedef SmartPointer<const Self> ConstPointer;
00048 typedef Vector<double,VDimension> VectorType;
00049
00051 itkNewMacro(Self);
00052
00054 itkTypeMacro(SymmetricEllipsoidInteriorExteriorSpatialFunction,InteriorExteriorSpatialFunction);
00055
00057 typedef typename Superclass::InputType InputType;
00058
00060 typedef typename Superclass::OutputType OutputType;
00061
00063 OutputType Evaluate(const InputType& position) const;
00064
00066 itkGetMacro(Center, InputType);
00067 itkSetMacro(Center, InputType);
00069
00072 void SetOrientation(VectorType orientation, double uniqueAxis, double symmetricAxes);
00073
00074 protected:
00075 SymmetricEllipsoidInteriorExteriorSpatialFunction();
00076 virtual ~SymmetricEllipsoidInteriorExteriorSpatialFunction();
00077
00078 void PrintSelf(std::ostream& os, Indent indent) const;
00079
00080 private:
00081 SymmetricEllipsoidInteriorExteriorSpatialFunction(const Self&);
00082 void operator=(const Self&);
00083
00085 InputType m_Center;
00086
00088 double m_UniqueAxis;
00089
00091 double m_SymmetricAxes;
00092
00094 Vector<double, VDimension> m_Orientation;
00095
00097 double m_VectorRatio;
00098
00099 };
00100
00101 }
00102
00103
00104 #define ITK_TEMPLATE_SymmetricEllipsoidInteriorExteriorSpatialFunction(_, EXPORT, x, y) namespace itk { \
00105 _(2(class EXPORT SymmetricEllipsoidInteriorExteriorSpatialFunction< ITK_TEMPLATE_2 x >)) \
00106 namespace Templates { typedef SymmetricEllipsoidInteriorExteriorSpatialFunction< ITK_TEMPLATE_2 x > \
00107 SymmetricEllipsoidInteriorExteriorSpatialFunction##y; } \
00108 }
00109
00110 #if ITK_TEMPLATE_EXPLICIT
00111 # include "Templates/itkSymmetricEllipsoidInteriorExteriorSpatialFunction+-.h"
00112 #endif
00113
00114 #if ITK_TEMPLATE_TXX
00115 # include "itkSymmetricEllipsoidInteriorExteriorSpatialFunction.txx"
00116 #endif
00117
00118 #endif
00119