18 #ifndef itkLaplacianDeformationQuadEdgeMeshFilter_h
19 #define itkLaplacianDeformationQuadEdgeMeshFilter_h
23 #include "ITKQuadEdgeMeshFilteringExport.h"
27 #include <unordered_map>
51 extern ITKQuadEdgeMeshFiltering_EXPORT std::ostream &
115 template <
class TInputMesh,
class TOutputMesh,
class TSolverTraits>
134 static constexpr
unsigned int InputPointDimension = InputMeshType::PointDimension;
145 static constexpr
unsigned int OutputPointDimension = OutputMeshType::PointDimension;
158 this->m_CoefficientsMethod = iMethod;
184 itkSetMacro(Order,
unsigned int);
185 itkGetMacro(Order,
unsigned int);
189 #if !defined(ITK_LEGACY_REMOVE)
191 static constexpr
AreaEnum NONE = AreaEnum::NONE;
192 static constexpr
AreaEnum MIXEDAREA = AreaEnum::MIXEDAREA;
196 itkSetEnumMacro(AreaComputationType,
AreaEnum);
197 itkGetMacro(AreaComputationType,
AreaEnum);
200 #ifdef ITK_USE_CONCEPT_CHECKING
223 return reinterpret_cast<size_t>(qe);
227 using CoefficientMapType = std::unordered_map<OutputQEPrimal *, OutputCoordRepType, HashOutputQEPrimal>;
230 using AreaMapType = std::unordered_map<OutputPointIdentifier, OutputCoordRepType>;
233 using RowType = std::unordered_map<OutputPointIdentifier, OutputCoordRepType>;
244 unsigned int m_Order{ 1 };
248 PrintSelf(std::ostream & os,
Indent indent)
const override;
251 ComputeMixedAreaForGivenVertex(OutputPointIdentifier iId);
253 ComputeMixedArea(OutputQEPrimal * iQE1, OutputQEPrimal * iQE2);
256 ComputeVertexIdMapping();
259 ComputeLaplacianMatrix(MatrixType & ioL);
262 FillMatrixRow(OutputPointIdentifier iId,
unsigned int iDegree, OutputCoordRepType iWeight, RowType & ioRow);
284 SolveLinearSystems(
const MatrixType & iM,
310 #include "itkLaplacianDeformationQuadEdgeMeshFilter.hxx"