00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkEllipsoidInteriorExteriorSpatialFunction_h
00018 #define __itkEllipsoidInteriorExteriorSpatialFunction_h
00019
00020 #include "itkInteriorExteriorSpatialFunction.h"
00021 #include "vnl/vnl_matrix_fixed.h"
00022
00023 namespace itk
00024 {
00025
00037 template <unsigned int VDimension = 3,
00038 typename TInput = Point<double, VDimension> >
00039 class ITK_EXPORT EllipsoidInteriorExteriorSpatialFunction
00040 : public InteriorExteriorSpatialFunction<VDimension, TInput>
00041 {
00042 public:
00044 typedef EllipsoidInteriorExteriorSpatialFunction Self;
00045 typedef InteriorExteriorSpatialFunction<VDimension, TInput> Superclass;
00046 typedef SmartPointer<Self> Pointer;
00047 typedef SmartPointer<const Self> ConstPointer;
00048
00050 itkTypeMacro(EllipsoidInteriorExteriorSpatialFunction,InteriorExteriorSpatialFunction);
00051
00053 itkNewMacro(Self);
00054
00056 typedef typename Superclass::InputType InputType;
00057
00059 typedef typename Superclass::OutputType OutputType;
00060
00062 typedef vnl_matrix_fixed<double, VDimension, VDimension> OrientationType;
00063
00065 itkGetMacro(Center, InputType);
00066 itkSetMacro(Center, InputType);
00067
00069 itkGetMacro(Axes, InputType);
00070 itkSetMacro(Axes, InputType);
00071
00074 void SetOrientations(const OrientationType &);
00075
00077 OutputType Evaluate(const InputType& position) const;
00078
00079 protected:
00080 EllipsoidInteriorExteriorSpatialFunction();
00081 virtual ~EllipsoidInteriorExteriorSpatialFunction();
00082
00083 void PrintSelf(std::ostream& os, Indent indent) const;
00084
00085 private:
00086 EllipsoidInteriorExteriorSpatialFunction(const Self&);
00087 void operator=(const Self&);
00088
00090 InputType m_Center;
00091
00093 InputType m_Axes;
00094
00096 double ** m_Orientations;
00097 };
00098
00099 }
00100
00101 #ifndef ITK_MANUAL_INSTANTIATION
00102 #include "itkEllipsoidInteriorExteriorSpatialFunction.txx"
00103 #endif
00104
00105 #endif