00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkFrustumSpatialFunction_h
00018 #define __itkFrustumSpatialFunction_h
00019
00020 #include "itkInteriorExteriorSpatialFunction.h"
00021
00022 namespace itk
00023 {
00024
00036 template <unsigned int VImageDimension=3,typename TInput=Point<double,3> >
00037 class ITK_EXPORT FrustumSpatialFunction :
00038 public InteriorExteriorSpatialFunction<VImageDimension,TInput>
00039 {
00040 public:
00041
00043 typedef FrustumSpatialFunction<VImageDimension,TInput> Self;
00044 typedef InteriorExteriorSpatialFunction<VImageDimension,TInput> Superclass;
00045 typedef SmartPointer<Self> Pointer;
00046 typedef SmartPointer<const Self> ConstPointer;
00047
00049 itkTypeMacro(FrustumSpatialFunction,InteriorExteriorSpatialFunction);
00050
00052 itkNewMacro(Self);
00053
00055 typedef typename Superclass::InputType InputType;
00056
00058 typedef typename Superclass::OutputType OutputType;
00059
00061 typedef enum{
00062 RotateInXZPlane=1,
00063 RotateInYZPlane
00064 } FrustumRotationPlaneType;
00065
00067 OutputType Evaluate(const InputType& position) const;
00068
00070 itkGetMacro( Apex, InputType);
00071 itkSetMacro( Apex, InputType);
00072
00075 itkGetMacro( AngleZ, double);
00076 itkSetMacro( AngleZ, double);
00077
00079 itkGetMacro( ApertureAngleX, double);
00080 itkSetMacro( ApertureAngleX, double);
00081
00083 itkGetMacro( ApertureAngleY, double);
00084 itkSetMacro( ApertureAngleY, double);
00085
00087 itkGetMacro( TopPlane, double);
00088 itkSetMacro( TopPlane, double);
00089
00091 itkGetMacro( BottomPlane, double);
00092 itkSetMacro( BottomPlane, double);
00093
00095 itkSetMacro( RotationPlane, FrustumRotationPlaneType );
00096
00097 protected:
00098 FrustumSpatialFunction();
00099 virtual ~FrustumSpatialFunction();
00100 void PrintSelf(std::ostream& os, Indent indent) const;
00101
00102 private:
00103 FrustumSpatialFunction(const Self&);
00104 void operator=(const Self&);
00105
00107 InputType m_Apex;
00108
00110 double m_AngleZ;
00111
00113 double m_ApertureAngleX;
00114
00116 double m_ApertureAngleY;
00117
00119 double m_TopPlane;
00120
00122 double m_BottomPlane;
00123
00125 FrustumRotationPlaneType m_RotationPlane;
00126
00127 };
00128
00129 }
00130
00131 #ifndef ITK_MANUAL_INSTANTIATION
00132 #include "itkFrustumSpatialFunction.txx"
00133 #endif
00134
00135 #endif
00136
00137
00138
00139