ITK  5.0.0
Insight Segmentation and Registration Toolkit
itkLaplacianDeformationQuadEdgeMeshFilterWithSoftConstraints.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
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  * http://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 itkLaplacianDeformationQuadEdgeMeshFilterWithSoftConstraints_h
19 #define itkLaplacianDeformationQuadEdgeMeshFilterWithSoftConstraints_h
20 
22 
23 namespace itk {
41 template< class TInputMesh, class TOutputMesh, class TSolverTraits >
43  public LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >
44 {
45 public:
47 
51  TOutputMesh,
52  TSolverTraits >;
55 
57  using InputMeshType = TInputMesh;
58 
59  static constexpr unsigned int InputPointDimension = InputMeshType::PointDimension;
60 
62  using OutputMeshType = TOutputMesh;
63  using OutputPointType = typename Superclass::OutputPointType;
65  using OutputPointIdentifier = typename Superclass::OutputPointIdentifier;
66 
67  static constexpr unsigned int OutputPointDimension = OutputMeshType::PointDimension;
68 
69  using SolverTraits = TSolverTraits;
70  using ValueType = typename Superclass::ValueType;
71  using MatrixType = typename Superclass::MatrixType;
73 
74  itkNewMacro(Self);
76 
77  itkSetMacro(Lambda,OutputCoordRepType);
78  itkGetMacro(Lambda,OutputCoordRepType);
79 
80  void SetLocalLambda( OutputPointIdentifier vId, OutputCoordRepType iL );
81 
82 protected:
83 
86  void PrintSelf(std::ostream & os, Indent indent) const override;
87 
92  void FillMatrix(MatrixType & iM, VectorType & iBx, VectorType & iBy, VectorType & iBz);
93 
94  void GenerateData() override;
95 
96  using ConstraintMapType = typename Superclass::ConstraintMapType;
97  using ConstraintMapConstIterator = typename Superclass::ConstraintMapConstIterator;
98 
99  using OutputMapPointIdentifier = typename Superclass::OutputMapPointIdentifier;
100  using OutputMapPointIdentifierIterator = typename Superclass::OutputMapPointIdentifierIterator;
101  using OutputMapPointIdentifierConstIterator = typename Superclass::OutputMapPointIdentifierConstIterator;
102 
103 
104  using RowType = typename Superclass::RowType;
105  using RowConstIterator = typename Superclass::RowConstIterator;
106  using RowIterator = typename Superclass::RowIterator;
107 
108  void ComputeVertexIdMapping() override;
109 
112 
113  itksys::hash_map< OutputPointIdentifier, OutputCoordRepType > m_LocalLambdaSquare;
114 
115 };
116 } // end namespace itk
117 
118 #include "itkLaplacianDeformationQuadEdgeMeshFilterWithSoftConstraints.hxx"
119 
120 #endif
Laplacian deformation with soft constraints (approximating displacement for handle points)...
Light weight base class for most itk classes.
TOutputMesh OutputMeshType
Definition: itkMeshSource.h:68
typename OutputMeshType::PointIdentifier OutputPointIdentifier
itksys::hash_map< OutputPointIdentifier, OutputCoordRepType > RowType
typename ConstraintMapType::const_iterator ConstraintMapConstIterator
typename OutputMeshType::CoordRepType OutputCoordRepType
itksys::hash_map< OutputPointIdentifier, OutputPointIdentifier > OutputMapPointIdentifier
typename OutputMapPointIdentifier::const_iterator OutputMapPointIdentifierConstIterator
typename OutputMapPointIdentifier::iterator OutputMapPointIdentifierIterator
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itksys::hash_map< OutputPointIdentifier, OutputVectorType > ConstraintMapType
(abstract) base class for laplacian surface mesh deformation.