ITK  5.4.0
Insight Toolkit
itkQuadEdgeMeshEulerOperatorSplitEdgeFunction.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 itkQuadEdgeMeshEulerOperatorSplitEdgeFunction_h
19#define itkQuadEdgeMeshEulerOperatorSplitEdgeFunction_h
20
22
23namespace itk
24{
34template <typename TMesh, typename TQEType>
35class ITK_TEMPLATE_EXPORT QuadEdgeMeshEulerOperatorSplitEdgeFunction : public QuadEdgeMeshFunctionBase<TMesh, TQEType *>
36{
37public:
38 ITK_DISALLOW_COPY_AND_MOVE(QuadEdgeMeshEulerOperatorSplitEdgeFunction);
39
45
46 itkNewMacro(Self);
48 itkOverrideGetNameOfClassMacro(QuadEdgeMeshEulerOperatorSplitEdgeFunction);
49
51 using QEType = TQEType;
52
53 using typename Superclass::MeshType;
54 using typename Superclass::OutputType;
55 using PointIdentifier = typename MeshType::PointIdentifier;
56
58
60 virtual OutputType
62 {
63 if (!e)
64 {
65 itkDebugMacro("Input is not an edge.");
66 return ((QEType *)nullptr);
67 }
70 if (!this->m_Mesh)
71 {
72 itkDebugMacro("No mesh present.");
73 return ((QEType *)nullptr);
74 }
75
76 m_SplitVertex->SetInput(this->m_Mesh);
77 return (m_SplitVertex->Evaluate(e->GetLprev(), e->GetSym()));
78 }
79
80 const PointIdentifier
82 {
83 return (m_SplitVertex->GetNewPointID());
84 }
85
86protected:
88
90
91private:
92 typename SplitVertex::Pointer m_SplitVertex{};
93};
94} // end namespace itk
95
96#endif // itkQuadEdgeMeshEulerOperatorSplitEdgeFunction.h
Light weight base class for most itk classes.
Given Edge is split into two and associated faces see their degree increased by one (a triangle is tr...
~QuadEdgeMeshEulerOperatorSplitEdgeFunction() override=default
Base class for mesh function object modifiers.
static Pointer New()
static constexpr double e
Definition: itkMath.h:56
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....