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