itkEllipsoidInteriorExteriorSpatialFunction.h
Go to the documentation of this file.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:
00043
00045 typedef EllipsoidInteriorExteriorSpatialFunction Self;
00046 typedef InteriorExteriorSpatialFunction<VDimension, TInput> Superclass;
00047 typedef SmartPointer<Self> Pointer;
00048 typedef SmartPointer<const Self> ConstPointer;
00049
00051 itkTypeMacro(EllipsoidInteriorExteriorSpatialFunction,InteriorExteriorSpatialFunction);
00052
00054 itkNewMacro(Self);
00055
00057 typedef typename Superclass::InputType InputType;
00058
00060 typedef typename Superclass::OutputType OutputType;
00061
00063 typedef vnl_matrix_fixed<double, VDimension, VDimension> OrientationType;
00064
00066 itkGetMacro(Center, InputType);
00067 itkSetMacro(Center, InputType);
00069
00071 itkGetMacro(Axes, InputType);
00072 itkSetMacro(Axes, InputType);
00074
00077 void SetOrientations(const OrientationType &);
00078
00080 OutputType Evaluate(const InputType& position) const;
00081
00082 protected:
00083 EllipsoidInteriorExteriorSpatialFunction();
00084 virtual ~EllipsoidInteriorExteriorSpatialFunction();
00085
00086 void PrintSelf(std::ostream& os, Indent indent) const;
00087
00088 private:
00089 EllipsoidInteriorExteriorSpatialFunction(const Self&);
00090 void operator=(const Self&);
00091
00093 InputType m_Center;
00094
00096 InputType m_Axes;
00097
00099 double ** m_Orientations;
00100 };
00101
00102 }
00103
00104
00105 #define ITK_TEMPLATE_EllipsoidInteriorExteriorSpatialFunction(_, EXPORT, x, y) namespace itk { \
00106 _(2(class EXPORT EllipsoidInteriorExteriorSpatialFunction< ITK_TEMPLATE_2 x >)) \
00107 namespace Templates { typedef EllipsoidInteriorExteriorSpatialFunction< ITK_TEMPLATE_2 x > \
00108 EllipsoidInteriorExteriorSpatialFunction##y; } \
00109 }
00110
00111 #if ITK_TEMPLATE_EXPLICIT
00112 # include "Templates/itkEllipsoidInteriorExteriorSpatialFunction+-.h"
00113 #endif
00114
00115 #if ITK_TEMPLATE_TXX
00116 # include "itkEllipsoidInteriorExteriorSpatialFunction.txx"
00117 #endif
00118
00119 #endif
00120