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
23namespace itk
24{
30template <typename TPoint>
31class ITK_TEMPLATE_EXPORT TriangleHelper
32{
33public:
35 using PointType = TPoint;
36 using CoordRepType = typename PointType::CoordRepType;
39
40 static constexpr unsigned int PointDimension = PointType::PointDimension;
41
44 static bool
45 IsObtuse(const PointType & iA, const PointType & iB, const PointType & iC);
46
48 static VectorType
49 ComputeNormal(const PointType & iA, const PointType & iB, const PointType & iC);
50
52 static CoordRepType
53 Cotangent(const PointType & iA, const PointType & iB, const PointType & iC);
54
56 static PointType
58 const PointType & iP1,
59 const CoordRepType & iA2,
60 const PointType & iP2,
61 const CoordRepType & iA3,
62 const PointType & iP3);
63
65 static CoordRepType
66 ComputeAngle(const PointType & iP1, const PointType & iP2, const PointType & iP3);
67
69 static PointType
70 ComputeGravityCenter(const PointType & iP1, const PointType & iP2, const PointType & iP3);
71
73 static PointType
74 ComputeCircumCenter(const PointType & iP1, const PointType & iP2, const PointType & iP3);
75
77 static PointType
78 ComputeConstrainedCircumCenter(const PointType & iP1, const PointType & iP2, const PointType & iP3);
79
81 static CoordRepType
82 ComputeArea(const PointType & iP1, const PointType & iP2, const PointType & iP3);
83
84 static CoordRepType
85 ComputeMixedArea(const PointType & iP1, const PointType & iP2, const PointType & iP3);
86};
87} // namespace itk
88
89#include "itkTriangleHelper.hxx"
90#endif
A convenience class for computation of various triangle elements in 2D or 3D.
static PointType ComputeBarycenter(const CoordRepType &iA1, const PointType &iP1, const CoordRepType &iA2, const PointType &iP2, const CoordRepType &iA3, const PointType &iP3)
Compute barycenter, with given weights.
static bool IsObtuse(const PointType &iA, const PointType &iB, const PointType &iC)
return true if (iA,iB,iC) forms an Obtuse angle (above 90 degrees)
typename PointType::CoordRepType CoordRepType
static CoordRepType ComputeMixedArea(const PointType &iP1, const PointType &iP2, const PointType &iP3)
static PointType ComputeGravityCenter(const PointType &iP1, const PointType &iP2, const PointType &iP3)
Compute center of mass.
static PointType ComputeCircumCenter(const PointType &iP1, const PointType &iP2, const PointType &iP3)
Compute circum center.
static VectorType ComputeNormal(const PointType &iA, const PointType &iB, const PointType &iC)
Compute Normal vector to the triangle formed by (iA,iB,iC)
static PointType ComputeConstrainedCircumCenter(const PointType &iP1, const PointType &iP2, const PointType &iP3)
Compute circum center constrained to be inside the triangle.
static CoordRepType ComputeArea(const PointType &iP1, const PointType &iP2, const PointType &iP3)
Compute Area.
static CoordRepType Cotangent(const PointType &iA, const PointType &iB, const PointType &iC)
Compute cotangent(iA,iB,iC)
typename PointType::VectorType VectorType
static CoordRepType ComputeAngle(const PointType &iP1, const PointType &iP2, const PointType &iP3)
Compute angles (iA,iB,iC)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....