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);
00068
00071 void SetOrientation(VectorType orientation, double uniqueAxis, double symmetricAxes);
00072
00073 protected:
00074 SymmetricEllipsoidInteriorExteriorSpatialFunction();
00075 virtual ~SymmetricEllipsoidInteriorExteriorSpatialFunction();
00076
00077 void PrintSelf(std::ostream& os, Indent indent) const;
00078
00079 private:
00080 SymmetricEllipsoidInteriorExteriorSpatialFunction(const Self&);
00081 void operator=(const Self&);
00082
00084 InputType m_Center;
00085
00087 double m_UniqueAxis;
00088
00090 double m_SymmetricAxes;
00091
00093 Vector<double, VDimension> m_Orientation;
00094
00096 double m_VectorRatio;
00097
00098 };
00099
00100 }
00101
00102 #ifndef ITK_MANUAL_INSTANTIATION
00103 #include "itkSymmetricEllipsoidInteriorExteriorSpatialFunction.txx"
00104 #endif
00105
00106 #endif