ITK  4.6.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 >
32 {
33 public:
35  typedef TPoint PointType;
36  typedef typename PointType::CoordRepType CoordRepType;
37  typedef typename PointType::VectorType VectorType;
39 
40  itkStaticConstMacro(PointDimension, unsigned int, 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 
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 
68  const PointType & iP1,
69  const PointType & iP2,
70  const PointType & iP3);
71 
74  const PointType & iP1,
75  const PointType & iP2,
76  const PointType & iP3);
77 
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 private:
88  TriangleHelper(const Self &); // purposely not implemented
89  void operator=(const Self &); // purposely not implemented
90 };
91 }
92 
93 #include "itkTriangleHelper.hxx"
94 #endif
PointType::CoordRepType CoordRepType
static PointType ComputeConstrainedCircumCenter(const PointType &iP1, const PointType &iP2, const PointType &iP3)
Compute circum center constrained to be inside the triangle.
static PointType ComputeGravityCenter(const PointType &iP1, const PointType &iP2, const PointType &iP3)
Compute center of mass.
static CoordRepType ComputeMixedArea(const PointType &iP1, const PointType &iP2, const PointType &iP3)
static const unsigned int PointDimension
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)
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 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 PointType ComputeCircumCenter(const PointType &iP1, const PointType &iP2, const PointType &iP3)
Compute circum center.
A convenience class for computation of various triangle elements in 2D or 3D.
TriangleHelper(const Self &)
static CoordRepType Cotangent(const PointType &iA, const PointType &iB, const PointType &iC)
Compute cotangent(iA,iB,iC)
void operator=(const Self &)
PointType::VectorType VectorType
CrossHelper< VectorType > CrossVectorType
static CoordRepType ComputeArea(const PointType &iP1, const PointType &iP2, const PointType &iP3)
Compute Area.
static CoordRepType ComputeAngle(const PointType &iP1, const PointType &iP2, const PointType &iP3)
Compute angles (iA,iB,iC)