/usr/include/InsightToolkit/Review/itkTriangleHelper.h is in libinsighttoolkit3-dev 3.20.1+git20120521-6build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | /*=========================================================================
  Program:   Insight Segmentation & Registration Toolkit
  Module:    itkTriangleHelper.h
  Language:  C++
  Date:      $Date$
  Version:   $Revision$
  Copyright (c) Insight Software Consortium. All rights reserved.
  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notices for more information.
=========================================================================*/
#ifndef __itkTriangleHelper_h
#define __itkTriangleHelper_h
#include "itkCrossHelper.h"
namespace itk
{
/** \class TriangleHelper
 * \brief Convenient class for various triangles elements computation in
 * 2D or 3D
 */
template< typename TPoint >
class TriangleHelper
{
public:
  typedef TriangleHelper                          Self;
  typedef TPoint                                  PointType;
  typedef typename PointType::CoordRepType        CoordRepType;
  typedef typename PointType::VectorType          VectorType;
  typedef CrossHelper< VectorType >               CrossVectorType;
  itkStaticConstMacro( PointDimension, unsigned int, PointType::PointDimension );
  /** \brief return true if (iA,iB,iC) forms an Obtuse angle (above 90 degrees)*/
  static bool IsObtuse( const PointType& iA, const PointType& iB, const PointType& iC );
  /** \brief Compute Normal vector to the triangle formed by (iA,iB,iC)*/
  static VectorType ComputeNormal ( const PointType& iA,
    const PointType& iB,
    const PointType& iC );
  /** \brief Compute cotangent(iA,iB,iC)*/
  static CoordRepType Cotangent ( const PointType& iA,
                                  const PointType& iB,
                                  const PointType& iC );
  /** \brief Compute barycenter, with given weights*/
  static PointType ComputeBarycenter (
      const CoordRepType& iA1, const PointType& iP1,
      const CoordRepType& iA2, const PointType& iP2,
      const CoordRepType& iA3, const PointType& iP3 );
  /** \brief Compute angles (iA,iB,iC)*/
  static CoordRepType ComputeAngle( const PointType& iP1, const PointType& iP2,
      const PointType& iP3 );
  /** \brief Compute center of mass*/
  static PointType ComputeGravityCenter (
      const PointType& iP1,
      const PointType& iP2,
      const PointType& iP3 );
  /** \brief Compute circum center*/
  static PointType ComputeCircumCenter (
      const PointType& iP1,
      const PointType& iP2,
      const PointType& iP3 );
  /** \brief Compute circum center constrained to be inside the triangle.*/
  static PointType ComputeConstrainedCircumCenter ( const PointType& iP1,
      const PointType& iP2, const PointType& iP3 );
  /** \brief Compute Area.*/
  static CoordRepType ComputeArea ( const PointType& iP1, const PointType& iP2, const PointType& iP3 );
protected:
  TriangleHelper( );
  virtual ~TriangleHelper( );
  void PrintSelf ( std::ostream& os, Indent indent ) const;
private:
  TriangleHelper( const Self& ); // purposely not implemented
  void operator = ( const Self& ); // purposely not implemented
};
}
#include "itkTriangleHelper.txx"
#endif
 |