ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
itkParameterizationQuadEdgeMeshFilter.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 itkParameterizationQuadEdgeMeshFilter_h
19#define itkParameterizationQuadEdgeMeshFilter_h
20
23
24namespace itk
25{
26
55template <typename TInputMesh, typename TOutputMesh, typename TSolverTraits>
56class ITK_TEMPLATE_EXPORT ParameterizationQuadEdgeMeshFilter
57 : public QuadEdgeMeshToQuadEdgeMeshFilter<TInputMesh, TOutputMesh>
58{
59public:
60 ITK_DISALLOW_COPY_AND_MOVE(ParameterizationQuadEdgeMeshFilter);
61
67
69 using InputMeshType = TInputMesh;
70 using InputMeshPointer = typename InputMeshType::Pointer;
71 using InputMeshConstPointer = typename InputMeshType::ConstPointer;
72 using InputCoordinateType = typename InputMeshType::CoordinateType;
73#ifndef ITK_FUTURE_LEGACY_REMOVE
74 using InputCoordRepType ITK_FUTURE_DEPRECATED(
75 "ITK 6 discourages using `InputCoordRepType`. Please use `InputCoordinateType` instead!") = InputCoordinateType;
76#endif
77 using InputPointType = typename InputMeshType::PointType;
78 using InputPointVectorType = typename InputPointType::VectorType;
79 using InputPointIdentifier = typename InputMeshType::PointIdentifier;
80 using InputQEType = typename InputMeshType::QEType;
81 using InputVectorType = typename InputMeshType::VectorType;
82 using InputEdgeListType = typename InputMeshType::EdgeListType;
83 using InputPixelType = typename InputMeshType::PixelType;
84 using InputTraits = typename InputMeshType::Traits;
85
86 static constexpr unsigned int InputVDimension = InputMeshType::PointDimension;
87
88 using InputPointsContainer = typename InputMeshType::PointsContainer;
89 using InputPointsContainerConstIterator = typename InputMeshType::PointsContainerConstIterator;
90
91 using InputCellsContainerConstIterator = typename InputMeshType::CellsContainerConstIterator;
92 using InputEdgeCellType = typename InputMeshType::EdgeCellType;
93 using InputPolygonCellType = typename InputMeshType::PolygonCellType;
94 using InputPointIdList = typename InputMeshType::PointIdList;
95
96 using InputQEIterator = typename InputQEType::IteratorGeom;
97
98 using InputMapPointIdentifier = std::map<InputPointIdentifier, InputPointIdentifier>;
99 using InputMapPointIdentifierIterator = typename InputMapPointIdentifier::iterator;
100
102 using OutputMeshType = TOutputMesh;
103 using OutputMeshPointer = typename OutputMeshType::Pointer;
104 using OutputMeshConstPointer = typename OutputMeshType::ConstPointer;
105 using OutputCoordinateType = typename OutputMeshType::CoordinateType;
106#ifndef ITK_FUTURE_LEGACY_REMOVE
107 using OutputCoordRepType ITK_FUTURE_DEPRECATED(
108 "ITK 6 discourages using `OutputCoordRepType`. Please use `OutputCoordinateType` instead!") = OutputCoordinateType;
109#endif
110 using OutputPointType = typename OutputMeshType::PointType;
111 using OutputPointIdentifier = typename OutputMeshType::PointIdentifier;
112 using OutputQEType = typename OutputMeshType::QEType;
113 using OutputVectorType = typename OutputMeshType::VectorType;
114 using OutputQEIterator = typename OutputQEType::IteratorGeom;
115 using OutputPointsContainerIterator = typename OutputMeshType::PointsContainerIterator;
116
117 static constexpr unsigned int OutputVDimension = OutputMeshType::PointDimension;
118
119 using SolverTraits = TSolverTraits;
120 using ValueType = typename SolverTraits::ValueType;
121 using MatrixType = typename SolverTraits::MatrixType;
122 using VectorType = typename SolverTraits::VectorType;
123
126
128
129public:
130 void
132 {
133 this->m_CoefficientsMethod = iMethod;
134 }
135
136 itkNewMacro(Self);
137 itkOverrideGetNameOfClassMacro(ParameterizationQuadEdgeMeshFilter);
138
140 itkGetModifiableObjectMacro(BorderTransform, MeshBorderTransform);
141
142protected:
145 void
146 PrintSelf(std::ostream & os, Indent indent) const override;
147
149
151
152 // first is the id of the input mesh and second is the corresponding id
153 // in m_BoundaryPtMap
155
156 // first is the id of the input mesh and second is the corresponding id
157 // in m_InternalPtList
159
160 std::vector<OutputPointType> m_Border{};
161
162 void
164
174 void
176
184 void
186
197 void
199 const VectorType & iBx,
200 const VectorType & iBy,
201 VectorType & oX,
202 VectorType & oY);
203
204 void
205 GenerateData() override;
206
207private:
208};
209} // end namespace itk
210
211#include "itkParameterizationQuadEdgeMeshFilter.hxx"
212
213#endif
Transform one border of a QuadEdgeMesh into either a circle (conformal) or a square (arclength-wise).
Control indentation during Print() invocation.
Definition itkIndent.h:50
Superclass for all the matrix coefficients computation classes.
void PrintSelf(std::ostream &os, Indent indent) const override
void FillMatrix(MatrixType &iM, VectorType &ioBx, VectorType &ioBy)
Fill matrix iM and vectors Bx and m_By depending on if one vertex is on the border or not.
void ComputeListOfInteriorVertices()
From the list of all vertices from the input mesh InputList and the list of boundary vertices Boundar...
void SetCoefficientsMethod(CoefficientsComputation *iMethod)
typename InputMeshType::PointsContainerConstIterator InputPointsContainerConstIterator
void SolveLinearSystems(const MatrixType &iM, const VectorType &iBx, const VectorType &iBy, VectorType &oX, VectorType &oY)
Solve linear systems : and .
~ParameterizationQuadEdgeMeshFilter() override=default
typename OutputMeshType::PointsContainerIterator OutputPointsContainerIterator
typename MeshBorderTransform::Pointer MeshBorderTransformPointer
typename OutputMeshType::PointIdentifier OutputPointIdentifier
typename InputMapPointIdentifier::iterator InputMapPointIdentifierIterator
typename InputMeshType::CellsContainerConstIterator InputCellsContainerConstIterator
typename InputMeshType::PointIdentifier InputPointIdentifier
QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh > Superclass
typename InputMeshType::PointsContainer InputPointsContainer
std::map< InputPointIdentifier, InputPointIdentifier > InputMapPointIdentifier
BorderQuadEdgeMeshFilter< InputMeshType, InputMeshType > MeshBorderTransform
typename InputMeshType::PolygonCellType InputPolygonCellType
typename OutputMeshType::ConstPointer OutputMeshConstPointer
typename InputMeshType::CoordinateType InputCoordinateType
typename OutputMeshType::CoordinateType OutputCoordinateType
Implements transparent reference counting.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....