ITK  5.0.0
Insight Segmentation and Registration Toolkit
itkTriangleHelper.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 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 CoordRepType = typename PointType::CoordRepType;
39 
40  static constexpr unsigned int PointDimension = PointType::PointDimension;
41 
44  static bool IsObtuse(const PointType & iA, const PointType & iB, const PointType & iC);
45 
47  static VectorType ComputeNormal(const PointType & iA,
48  const PointType & iB,
49  const PointType & iC);
50 
52  static CoordRepType Cotangent(const PointType & iA,
53  const PointType & iB,
54  const PointType & iC);
55 
57  static PointType ComputeBarycenter(
58  const CoordRepType & iA1, const PointType & iP1,
59  const CoordRepType & iA2, const PointType & iP2,
60  const CoordRepType & iA3, const PointType & iP3);
61 
63  static CoordRepType ComputeAngle(const PointType & iP1, const PointType & iP2,
64  const PointType & iP3);
65 
67  static PointType ComputeGravityCenter(
68  const PointType & iP1,
69  const PointType & iP2,
70  const PointType & iP3);
71 
73  static PointType ComputeCircumCenter(
74  const PointType & iP1,
75  const PointType & iP2,
76  const PointType & iP3);
77 
79  static PointType ComputeConstrainedCircumCenter(const PointType & iP1,
80  const PointType & iP2, const PointType & iP3);
81 
83  static CoordRepType ComputeArea(const PointType & iP1, const PointType & iP2, const PointType & iP3);
84 
85  static CoordRepType ComputeMixedArea( const PointType& iP1, const PointType& iP2, const PointType &iP3 );
86 };
87 }
88 
89 #include "itkTriangleHelper.hxx"
90 #endif
typename PointType::CoordRepType CoordRepType
A convenience class for computation of various triangle elements in 2D or 3D.
typename PointType::VectorType VectorType