/usr/include/vtk-5.10/vtkBSPIntersections.h is in libvtk5-dev 5.10.1+dfsg-2.1build1.
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 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkBSPIntersections.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.
----------------------------------------------------------------------------*/
// .NAME vtkBSPIntersections - Perform calculations (mostly intersection
// calculations) on regions of a 3D binary spatial partitioning.
//
// .SECTION Description
// Given an axis aligned binary spatial partitioning described by a
// vtkBSPCuts object, perform intersection queries on various
// geometric entities with regions of the spatial partitioning.
//
// .SECTION See Also
// vtkBSPCuts vtkKdTree
#ifndef __vtkBSPIntersections_h
#define __vtkBSPIntersections_h
#include "vtkObject.h"
class vtkTimeStamp;
class vtkCell;
class vtkKdNode;
class vtkBSPCuts;
class VTK_FILTERING_EXPORT vtkBSPIntersections : public vtkObject
{
public:
vtkTypeMacro(vtkBSPIntersections, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
static vtkBSPIntersections *New();
// Description:
// Define the binary spatial partitioning.
void SetCuts(vtkBSPCuts *cuts);
vtkGetObjectMacro(Cuts, vtkBSPCuts);
// Description:
// Get the bounds of the whole space (xmin, xmax, ymin, ymax, zmin, zmax)
// Return 0 if OK, 1 on error.
int GetBounds(double *bounds);
// Description:
// The number of regions in the binary spatial partitioning
int GetNumberOfRegions();
// Description:
// Get the spatial bounds of a particular region
// Return 0 if OK, 1 on error.
int GetRegionBounds(int regionID, double bounds[6]);
// Description:
// Get the bounds of the data within the k-d tree region, possibly
// smaller than the bounds of the region.
// Return 0 if OK, 1 on error.
int GetRegionDataBounds(int regionID, double bounds[6]);
// Description:
// Determine whether a region of the spatial decomposition
// intersects an axis aligned box.
int IntersectsBox(int regionId, double *x);
int IntersectsBox(int regionId, double xmin, double xmax,
double ymin, double ymax,
double zmin, double zmax);
// Description:
// Compute a list of the Ids of all regions that
// intersect the specified axis aligned box.
// Returns: the number of ids in the list.
int IntersectsBox(int *ids, int len, double *x);
int IntersectsBox(int *ids, int len, double x0, double x1,
double y0, double y1, double z0, double z1);
// Description:
// Determine whether a region of the spatial decomposition
// intersects a sphere, given the center of the sphere
// and the square of it's radius.
int IntersectsSphere2(int regionId,
double x, double y, double z, double rSquared);
// Description:
// Compute a list of the Ids of all regions that
// intersect the specified sphere. The sphere is given
// by it's center and the square of it's radius.
// Returns: the number of ids in the list.
int IntersectsSphere2(int *ids, int len,
double x, double y, double z, double rSquared);
// Description:
// Determine whether a region of the spatial decomposition
// intersects the given cell. If you already
// know the region that the cell centroid lies in, provide
// that as the last argument to make the computation quicker.
int IntersectsCell(int regionId, vtkCell *cell, int cellRegion=-1);
// Description:
// Compute a list of the Ids of all regions that
// intersect the given cell. If you alrady
// know the region that the cell centroid lies in, provide
// that as the last argument to make the computation quicker.
// Returns the number of regions the cell intersects.
int IntersectsCell(int *ids, int len, vtkCell *cell, int cellRegion=-1);
// Description:
// When computing the intersection of k-d tree regions with other
// objects, we use the spatial bounds of the region. To use the
// tighter bound of the bounding box of the data within the region,
// set this variable ON. (Specifying data bounds in the vtkBSPCuts
// object is optional. If data bounds were not specified, this
// option has no meaning.)
vtkGetMacro(ComputeIntersectionsUsingDataBounds, int);
void SetComputeIntersectionsUsingDataBounds(int c);
void ComputeIntersectionsUsingDataBoundsOn();
void ComputeIntersectionsUsingDataBoundsOff();
protected:
vtkBSPIntersections();
~vtkBSPIntersections();
vtkGetMacro(RegionListBuildTime, unsigned long);
int BuildRegionList();
vtkKdNode **GetRegionList(){return this->RegionList;}
double CellBoundsCache[6]; // to speed cell intersection queries
//BTX
enum {
XDIM = 0, // don't change these values
YDIM = 1,
ZDIM = 2
};
//ETX
private:
static int NumberOfLeafNodes(vtkKdNode *kd);
static void SetIDRanges(vtkKdNode *kd, int &min, int &max);
int SelfRegister(vtkKdNode *kd);
static void SetCellBounds(vtkCell *cell, double *bounds);
int _IntersectsBox(vtkKdNode *node, int *ids, int len,
double x0, double x1,
double y0, double y1,
double z0, double z1);
int _IntersectsSphere2(vtkKdNode *node, int *ids, int len,
double x, double y, double z, double rSquared);
int _IntersectsCell(vtkKdNode *node, int *ids, int len,
vtkCell *cell, int cellRegion=-1);
vtkBSPCuts *Cuts;
int NumberOfRegions;
vtkKdNode **RegionList;
vtkTimeStamp RegionListBuildTime;
int ComputeIntersectionsUsingDataBounds;
vtkBSPIntersections(const vtkBSPIntersections&); // Not implemented
void operator=(const vtkBSPIntersections&); // Not implemented
};
#endif
|