ITK
5.4.0
Insight Toolkit
ITK
Modules
Core
QuadEdgeMesh
include
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
21
#include "
itkQuadEdgeMeshEulerOperatorSplitVertexFunction.h
"
22
23
namespace
itk
24
{
34
template
<
typename
TMesh,
typename
TQEType>
35
class
ITK_TEMPLATE_EXPORT
QuadEdgeMeshEulerOperatorSplitEdgeFunction
:
public
QuadEdgeMeshFunctionBase
<TMesh, TQEType *>
36
{
37
public
:
38
ITK_DISALLOW_COPY_AND_MOVE(
QuadEdgeMeshEulerOperatorSplitEdgeFunction
);
39
41
using
Self
=
QuadEdgeMeshEulerOperatorSplitEdgeFunction
;
42
using
Superclass
=
QuadEdgeMeshFunctionBase<TMesh, TQEType *>
;
43
using
Pointer
=
SmartPointer<Self>
;
44
using
ConstPointer
=
SmartPointer<const Self>
;
45
46
itkNewMacro(
Self
);
48
itkTypeMacro(
QuadEdgeMeshEulerOperatorSplitEdgeFunction
,
QuadEdgeMeshFunctionBase
);
49
51
using
QEType
= TQEType;
52
53
using
typename
Superclass::MeshType;
54
using
typename
Superclass::OutputType;
55
using
PointIdentifier
=
typename
MeshType::PointIdentifier;
56
57
using
SplitVertex
=
QuadEdgeMeshEulerOperatorSplitVertexFunction<MeshType, QEType>
;
58
60
virtual
OutputType
61
Evaluate
(
QEType
*
e
)
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
81
GetNewPointID
()
82
{
83
return
(m_SplitVertex->GetNewPointID());
84
}
85
86
protected
:
87
QuadEdgeMeshEulerOperatorSplitEdgeFunction
() { m_SplitVertex =
SplitVertex::New
(); }
88
89
~
QuadEdgeMeshEulerOperatorSplitEdgeFunction
()
override
=
default
;
90
91
private
:
92
typename
SplitVertex::Pointer
m_SplitVertex{};
93
};
94
}
// end namespace itk
95
96
#endif // itkQuadEdgeMeshEulerOperatorSplitEdgeFunction.h
itk::QuadEdgeMeshEulerOperatorSplitEdgeFunction::QuadEdgeMeshEulerOperatorSplitEdgeFunction
QuadEdgeMeshEulerOperatorSplitEdgeFunction()
Definition:
itkQuadEdgeMeshEulerOperatorSplitEdgeFunction.h:87
itk::QuadEdgeMeshEulerOperatorSplitVertexFunction
Split a vertex into two new connected vertices.
Definition:
itkQuadEdgeMeshEulerOperatorSplitVertexFunction.h:39
itk::QuadEdgeMeshEulerOperatorSplitEdgeFunction::Evaluate
virtual OutputType Evaluate(QEType *e)
Definition:
itkQuadEdgeMeshEulerOperatorSplitEdgeFunction.h:61
itk::QuadEdgeMeshFunctionBase
Base class for mesh function object modifiers.
Definition:
itkQuadEdgeMeshFunctionBase.h:55
itk::SmartPointer< Self >
itk::QuadEdgeMeshEulerOperatorSplitEdgeFunction::GetNewPointID
const PointIdentifier GetNewPointID()
Definition:
itkQuadEdgeMeshEulerOperatorSplitEdgeFunction.h:81
itk::LightObject
Light weight base class for most itk classes.
Definition:
itkLightObject.h:55
itk::QuadEdgeMeshEulerOperatorSplitEdgeFunction::QEType
TQEType QEType
Definition:
itkQuadEdgeMeshEulerOperatorSplitEdgeFunction.h:51
itk::QuadEdgeMeshEulerOperatorSplitEdgeFunction
Given Edge is split into two and associated faces see their degree increased by one (a triangle is tr...
Definition:
itkQuadEdgeMeshEulerOperatorSplitEdgeFunction.h:35
itk::QuadEdgeMeshEulerOperatorSplitEdgeFunction::PointIdentifier
typename MeshType::PointIdentifier PointIdentifier
Definition:
itkQuadEdgeMeshEulerOperatorSplitEdgeFunction.h:55
itkQuadEdgeMeshEulerOperatorSplitVertexFunction.h
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition:
itkAnnulusOperator.h:24
itk::Math::e
static constexpr double e
Definition:
itkMath.h:56
New
static Pointer New()
itk::QuadEdgeMeshFunctionBase< TMesh, TQEType * >::OutputType
TQEType * OutputType
Definition:
itkQuadEdgeMeshFunctionBase.h:74
Generated on
unknown
for ITK by
1.8.16