SymmetricWeightsSurfaceMapper.h
1 /*
2  * Medical Image Registration ToolKit (MIRTK)
3  *
4  * Copyright 2016 Imperial College London
5  * Copyright 2016 Andreas Schuh
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 
20 #ifndef MIRTK_SymmetricWeightsSurfaceMapper_H
21 #define MIRTK_SymmetricWeightsSurfaceMapper_H
22 
23 #include "mirtk/LinearFixedBoundarySurfaceMapper.h"
24 
25 
26 namespace mirtk {
27 
28 
29 /**
30  * Piecewise linear fixed boundary surface mapping with symmetric edge weights
31  */
33 {
34  mirtkAbstractMacro(SymmetricWeightsSurfaceMapper);
35 
36  // ---------------------------------------------------------------------------
37  // Attributes
38 
39  /// Copy attributes of this class from another instance
40  void CopyAttributes(const SymmetricWeightsSurfaceMapper &);
41 
42  // ---------------------------------------------------------------------------
43  // Construction/Destruction
44 
45 protected:
46 
47  /// Default constructor
49 
50  /// Copy constructor
52 
53  /// Assignment operator
55 
56 public:
57 
58  /// Destructor
60 
61  // ---------------------------------------------------------------------------
62  // Execution
63 
64  /// Construct and solve symmetric system of linear equations
65  virtual void ComputeMap();
66 
67 protected:
68 
69  /// Weight of undirected edge (i, j)
70  ///
71  /// \param[in] i First end point.
72  /// \param[in] j Second end point.
73  ///
74  /// \returns Weight of undirected edge (i, j).
75  virtual double Weight(int i, int j) const = 0;
76 
77 };
78 
79 
80 } // namespace mirtk
81 
82 #endif // MIRTK_SymmetricWeightsSurfaceMapper_H
virtual void ComputeMap()
Construct and solve symmetric system of linear equations.
SymmetricWeightsSurfaceMapper & operator=(const SymmetricWeightsSurfaceMapper &)
Assignment operator.
Definition: IOConfig.h:41
virtual ~SymmetricWeightsSurfaceMapper()
Destructor.
SymmetricWeightsSurfaceMapper()
Default constructor.
virtual double Weight(int i, int j) const =0