ITK  6.0.0
Insight Toolkit
itkFiniteCylinderSpatialFunction.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * https://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef itkFiniteCylinderSpatialFunction_h
19 #define itkFiniteCylinderSpatialFunction_h
20 
22 #include "itkConceptChecking.h"
23 
24 namespace itk
25 {
38 template <unsigned int VDimension = 3, typename TInput = Point<double, VDimension>>
39 class ITK_TEMPLATE_EXPORT FiniteCylinderSpatialFunction : public InteriorExteriorSpatialFunction<VDimension, TInput>
40 {
41 public:
42  ITK_DISALLOW_COPY_AND_MOVE(FiniteCylinderSpatialFunction);
43 
49 
51  itkOverrideGetNameOfClassMacro(FiniteCylinderSpatialFunction);
52 
54  itkNewMacro(Self);
55 
57  using typename Superclass::InputType;
58 
60  using typename Superclass::OutputType;
61 
63  itkGetConstMacro(Center, InputType);
64  itkSetMacro(Center, InputType);
68  itkGetConstMacro(AxisLength, double);
69  itkSetMacro(AxisLength, double);
73  itkGetConstMacro(Radius, double);
74  itkSetMacro(Radius, double);
79  itkGetConstMacro(Orientation, InputType);
80  virtual void
81  SetOrientation(const InputType _Orientation);
86  Evaluate(const InputType & position) const override;
87 
88 #ifdef ITK_USE_CONCEPT_CHECKING
89  // Begin concept checking
92  // End concept checking
93 #endif
94 
95 protected:
97  ~FiniteCylinderSpatialFunction() override = default;
98 
99  void
100  PrintSelf(std::ostream & os, Indent indent) const override;
101 
102 private:
104  InputType m_Center{};
105 
107  double m_AxisLength{};
108 
110  double m_Radius{};
111 
113  InputType m_Orientation{};
114  InputType m_NormalizedOrientation{};
115 };
116 } // end namespace itk
117 
118 #ifndef ITK_MANUAL_INSTANTIATION
119 # include "itkFiniteCylinderSpatialFunction.hxx"
120 #endif
121 
122 #endif
itk::InteriorExteriorSpatialFunction
Returns whether or not a location is "inside" or "outside" a function.
Definition: itkInteriorExteriorSpatialFunction.h:49
itk::FiniteCylinderSpatialFunction
Function implementation of an finite cylinder.
Definition: itkFiniteCylinderSpatialFunction.h:39
itkConceptChecking.h
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::FunctionBase< TInput, bool >::OutputType
bool OutputType
Definition: itkFunctionBase.h:62
itk::Concept::SameDimension
Definition: itkConceptChecking.h:697
itkConceptMacro
#define itkConceptMacro(name, concept)
Definition: itkConceptChecking.h:65
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnatomicalOrientation.h:29
itkInteriorExteriorSpatialFunction.h
itk::FunctionBase< TInput, bool >::InputType
TInput InputType
Definition: itkFunctionBase.h:59