This file is indexed.

/usr/include/vtk-7.1/vtkPlanesIntersection.h is in libvtk7-dev 7.1.1+dfsg1-2.

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
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkPlanesIntersection.h

  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/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 notice for more information.

=========================================================================*/
/*----------------------------------------------------------------------------
 Copyright (c) Sandia Corporation
 See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
----------------------------------------------------------------------------*/

/**
 * @class   vtkPlanesIntersection
 * @brief   A vtkPlanesIntersection object is a
 *    vtkPlanes object that can compute whether the arbitrary convex region
 *    bounded by it's planes intersects an axis-aligned box.
 *
 *
 *    A subclass of vtkPlanes, this class determines whether it
 *    intersects an axis aligned box.   This is motivated by the
 *    need to intersect the axis aligned region of a spacial
 *    decomposition of volume data with various other regions.
 *    It uses the algorithm from Graphics Gems IV, page 81.
 *
 * @par Caveat:
 *    An instance of vtkPlanes can be redefined by changing the planes,
 *    but this subclass then will not know if the region vertices are
 *    up to date.  (Region vertices can be specified in SetRegionVertices
 *    or computed by the subclass.)  So Delete and recreate if you want
 *    to change the set of planes.
 *
*/

#ifndef vtkPlanesIntersection_h
#define vtkPlanesIntersection_h

#include "vtkCommonDataModelModule.h" // For export macro
#include "vtkPlanes.h"

class vtkPoints;
class vtkPointsProjectedHull;
class vtkCell;

class VTKCOMMONDATAMODEL_EXPORT vtkPlanesIntersection : public vtkPlanes
{
  vtkTypeMacro(vtkPlanesIntersection, vtkPlanes);

public:
  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;

  static vtkPlanesIntersection *New();

  /**
   * It helps if you know the vertices of the convex region.
   * If you don't, we will calculate them.  Region vertices
   * are 3-tuples.
   */

  void SetRegionVertices(vtkPoints *pts);
  void SetRegionVertices(double *v, int nvertices);
  int GetNumberOfRegionVertices();
  // Retained for backward compatibility
  int GetNumRegionVertices()
  {
    return this->GetNumberOfRegionVertices();
  }
  int GetRegionVertices(double *v, int nvertices);

  /**
   * Return 1 if the axis aligned box defined by R intersects
   * the region defined by the planes, or 0 otherwise.
   */

  int IntersectsRegion(vtkPoints *R);

  /**
   * A convenience function provided by this class, returns
   * 1 if the polygon defined in pts intersects the bounding
   * box defined in bounds, 0 otherwise.

   * The points must define a planar polygon.
   */

  static int PolygonIntersectsBBox(double bounds[6], vtkPoints *pts);

  /**
   * Another convenience function provided by this class, returns
   * the vtkPlanesIntersection object representing a 3D
   * cell.  The point IDs for each face must be given in
   * counter-clockwise order from the outside of the cell.
   */

  static vtkPlanesIntersection *Convert3DCell(vtkCell *cell);

protected:

  static void ComputeNormal(double *p1, double *p2, double *p3, double normal[3]);
  static double EvaluatePlaneEquation(double *x, double *p);
  static void PlaneEquation(double *n, double *x, double *p);
  static int GoodNormal(double *n);
  static int Invert3x3(double M[3][3]);

  vtkPlanesIntersection();
  ~vtkPlanesIntersection() VTK_OVERRIDE;

private:

  int IntersectsBoundingBox(vtkPoints *R);
  int EnclosesBoundingBox(vtkPoints *R);
  int EvaluateFacePlane(int plane, vtkPoints *R);
  int IntersectsProjection(vtkPoints *R, int direction);

  void SetPlaneEquations();
  void ComputeRegionVertices();

  void planesMatrix(int p1, int p2, int p3, double M[3][3]) const;
  int duplicate(double testv[3]) const;
  void planesRHS(int p1, int p2, int p3, double r[3]) const;
  int outsideRegion(double v[3]) ;

  // plane equations
  double *Plane;

  // vertices of convex regions enclosed by the planes, also
  //    the ccw hull of that region projected in 3 orthog. directions
  vtkPointsProjectedHull *RegionPts;

  vtkPlanesIntersection(const vtkPlanesIntersection&) VTK_DELETE_FUNCTION;
  void operator=(const vtkPlanesIntersection&) VTK_DELETE_FUNCTION;
};
#endif