ITK  6.0.0
Insight Toolkit
itkTriangleHelper.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
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  * https://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 itkTriangleHelper_h
19 #define itkTriangleHelper_h
20 
21 #include "itkCrossHelper.h"
22 
23 namespace itk
24 {
30 template <typename TPoint>
31 class ITK_TEMPLATE_EXPORT TriangleHelper
32 {
33 public:
35  using PointType = TPoint;
36  using CoordinateType = typename PointType::CoordinateType;
37 #ifndef ITK_FUTURE_LEGACY_REMOVE
38  using CoordRepType ITK_FUTURE_DEPRECATED(
39  "ITK 6 discourages using `CoordRepType`. Please use `CoordinateType` instead!") = CoordinateType;
40 #endif
43 
44  static constexpr unsigned int PointDimension = PointType::PointDimension;
45 
48  static bool
49  IsObtuse(const PointType & iA, const PointType & iB, const PointType & iC);
50 
52  static VectorType
53  ComputeNormal(const PointType & iA, const PointType & iB, const PointType & iC);
54 
56  static CoordinateType
57  Cotangent(const PointType & iA, const PointType & iB, const PointType & iC);
58 
60  static PointType
61  ComputeBarycenter(const CoordinateType & iA1,
62  const PointType & iP1,
63  const CoordinateType & iA2,
64  const PointType & iP2,
65  const CoordinateType & iA3,
66  const PointType & iP3);
67 
69  static CoordinateType
70  ComputeAngle(const PointType & iP1, const PointType & iP2, const PointType & iP3);
71 
73  static PointType
74  ComputeGravityCenter(const PointType & iP1, const PointType & iP2, const PointType & iP3);
75 
77  static PointType
78  ComputeCircumCenter(const PointType & iP1, const PointType & iP2, const PointType & iP3);
79 
81  static PointType
82  ComputeConstrainedCircumCenter(const PointType & iP1, const PointType & iP2, const PointType & iP3);
83 
85  static CoordinateType
86  ComputeArea(const PointType & iP1, const PointType & iP2, const PointType & iP3);
87 
88  static CoordinateType
89  ComputeMixedArea(const PointType & iP1, const PointType & iP2, const PointType & iP3);
90 };
91 } // namespace itk
92 
93 #include "itkTriangleHelper.hxx"
94 #endif
itkCrossHelper.h
itk::GTest::TypedefsAndConstructors::Dimension2::VectorType
ImageBaseType::SpacingType VectorType
Definition: itkGTestTypedefsAndConstructors.h:53
itk::TriangleHelper
A convenience class for computation of various triangle elements in 2D or 3D.
Definition: itkTriangleHelper.h:31
itk::TriangleHelper::CoordinateType
typename PointType::CoordinateType CoordinateType
Definition: itkTriangleHelper.h:36
itk::TriangleHelper::PointType
TPoint PointType
Definition: itkTriangleHelper.h:35
itk::CrossHelper
Definition: itkCrossHelper.h:36
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnatomicalOrientation.h:29
itk::TriangleHelper::VectorType
typename PointType::VectorType VectorType
Definition: itkTriangleHelper.h:41