BoundaryToSquareMapper.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_BoundaryToSquareMapper_H
21 #define MIRTK_BoundaryToSquareMapper_H
22 
23 #include "mirtk/BoundarySegmentMapper.h"
24 
25 
26 namespace mirtk {
27 
28 
29 /**
30  * Map surface boundary to a square
31  */
33 {
34  mirtkObjectMacro(BoundaryToSquareMapper);
35 
36  // ---------------------------------------------------------------------------
37  // Attributes
38 
39  /// Length of each side
40  mirtkPublicAttributeMacro(double, SideLength);
41 
42  /// Copy attributes of this class from another instance
43  void CopyAttributes(const BoundaryToSquareMapper &);
44 
45  // ---------------------------------------------------------------------------
46  // Construction/Destruction
47 
48 public:
49 
50  /// Default constructor
52 
53  /// Copy constructor
55 
56  /// Assignment operator
58 
59  /// Destructor
60  virtual ~BoundaryToSquareMapper();
61 
62  /// Create new copy of this instance
63  virtual BoundaryMapper *NewCopy() const;
64 
65  // ---------------------------------------------------------------------------
66  // Execution
67 
68  /// Initialize filter after input and parameters are set
69  virtual void Initialize();
70 
71 protected:
72 
73  /// Map boundary segment
74  ///
75  /// \param[in] n Index of boundary segment.
76  /// \param[in] indices Indices of boundary points forming a closed line strip
77  /// that discretizes the current surface boundary segment.
78  /// \param[in] tvalues Curve parameter in [0, 1) for each boundary segment point,
79  /// where the first point has value t=0 and the parameter value
80  /// for consecutive points is proportional to the distance of
81  /// the point from the first point along the boundary curve.
82  /// \param[in] selection Indices in \p i and \p t arrays corresponding to
83  /// selected boundary points.
84  virtual void MapBoundarySegment(int n, const Array<int> &indices,
85  const Array<double> &tvalues,
86  const Array<int> &selection);
87 
88 };
89 
90 
91 } // namespace mirtk
92 
93 #endif // MIRTK_BoundaryToSquareMapper_H
BoundaryToSquareMapper & operator=(const BoundaryToSquareMapper &)
Assignment operator.
virtual void Initialize()
Initialize filter after input and parameters are set.
BoundaryToSquareMapper()
Default constructor.
virtual ~BoundaryToSquareMapper()
Destructor.
Definition: IOConfig.h:41
virtual BoundaryMapper * NewCopy() const
Create new copy of this instance.
virtual void MapBoundarySegment(int n, const Array< int > &indices, const Array< double > &tvalues, const Array< int > &selection)