ChordLengthBoundarySegmentParameterizer.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_ChordLengthBoundarySegmentParameterizer_H
21 #define MIRTK_ChordLengthBoundarySegmentParameterizer_H
22 
23 #include "mirtk/BoundarySegmentParameterizer.h"
24 
25 
26 namespace mirtk {
27 
28 
29 /**
30  * Boundary curve parameterization which preserves relative point distances
31  *
32  * This class parameterizes the boundary segment as a curve with uniform
33  * speed, i.e., without local distortion of the boundary segment. The curve
34  * parameter value is linearly proportional to the distance of the boundary
35  * points from the point at t=0. The optionally selected points are used to
36  * define the point with parameter value t=0 and in which direction the t
37  * values are increasing.
38  *
39  * This boundary curve parameterization is referred to as chord length
40  * parameterization in Floater (1997).
41  *
42  * - Floater (1997). Parametrization and smooth approximation of surface triangulations.
43  * Computer Aided Geometric Design, 14(3), 231–250.
44  */
46 {
48 
49  // ---------------------------------------------------------------------------
50  // Attributes
51 
52  /// Copy attributes of this class from another instance
53  void CopyAttributes(const ChordLengthBoundarySegmentParameterizer &);
54 
55  // ---------------------------------------------------------------------------
56  // Construction/Destruction
57 
58 public:
59 
60  /// Default constructor
62 
63  /// Copy constructor
65 
66  /// Assignment operator
68 
69  /// Destructor
71 
72  /// New copy of this parameterizer
73  virtual BoundarySegmentParameterizer *NewCopy() const;
74 
75  // ---------------------------------------------------------------------------
76  // Execution
77 
78 protected:
79 
80  /// Parameterize boundary curve
81  virtual void Parameterize();
82 
83 };
84 
85 
86 } // namespace mirtk
87 
88 #endif // MIRTK_ChordLengthBoundarySegmentParameterizer_H
Definition: IOConfig.h:41
virtual BoundarySegmentParameterizer * NewCopy() const
New copy of this parameterizer.
ChordLengthBoundarySegmentParameterizer()
Default constructor.
ChordLengthBoundarySegmentParameterizer & operator=(const ChordLengthBoundarySegmentParameterizer &)
Assignment operator.
virtual void Parameterize()
Parameterize boundary curve.
virtual ~ChordLengthBoundarySegmentParameterizer()
Destructor.