00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkFiniteCylinderSpatialFunction_h
00018
#define __itkFiniteCylinderSpatialFunction_h
00019
00020
#include "itkInteriorExteriorSpatialFunction.h"
00021
00022
namespace itk
00023 {
00024
00034
template <
unsigned int VDimension = 3,
00035
typename TInput = Point<double, VDimension> >
00036 class ITK_EXPORT FiniteCylinderSpatialFunction
00037 :
public InteriorExteriorSpatialFunction<VDimension, TInput>
00038 {
00039
public:
00040
00042 typedef FiniteCylinderSpatialFunction
Self;
00043 typedef InteriorExteriorSpatialFunction<VDimension, TInput> Superclass;
00044 typedef SmartPointer<Self> Pointer;
00045 typedef SmartPointer<const Self> ConstPointer;
00046
00048
itkTypeMacro(FiniteCylinderSpatialFunction,
InteriorExteriorSpatialFunction);
00049
00051
itkNewMacro(
Self);
00052
00054 typedef typename Superclass::InputType
InputType;
00055
00057 typedef typename Superclass::OutputType
OutputType;
00058
00060
itkGetMacro(Center,
InputType);
00061
itkSetMacro(Center,
InputType);
00062
00064
itkGetMacro(AxisLength,
double);
00065
itkSetMacro(AxisLength,
double);
00066
00068
itkGetMacro(Radius,
double);
00069
itkSetMacro(Radius,
double);
00070
00073
itkGetMacro(Orientation,
InputType);
00074
itkSetMacro(Orientation,
InputType);
00075
00077
OutputType Evaluate(
const InputType& position)
const;
00078
00079
protected:
00080
00081 FiniteCylinderSpatialFunction();
00082
virtual ~FiniteCylinderSpatialFunction();
00083
00084
void PrintSelf(std::ostream& os,
Indent indent)
const;
00085
00086
private:
00087
00088 FiniteCylinderSpatialFunction(
const Self&);
00089
void operator=(
const Self&);
00090
00092
InputType m_Center;
00093
00095
double m_AxisLength;
00096
00098
double m_Radius;
00099
00101
InputType m_Orientation;
00102
00103 };
00104
00105 }
00106
00107
#ifndef ITK_MANUAL_INSTANTIATION
00108
#include "itkFiniteCylinderSpatialFunction.txx"
00109
#endif
00110
00111
#endif