/usr/include/vtk-7.1/vtkExtractSelectedFrustum.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 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 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkExtractSelectedFrustum.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.
=========================================================================*/
/**
* @class vtkExtractSelectedFrustum
* @brief Returns the portion of the input dataset that
* lies within a selection frustum.
*
*
* This class intersects the input DataSet with a frustum and determines which
* cells and points lie within the frustum. The frustum is defined with a
* vtkPlanes containing six cutting planes. The output is a DataSet that is
* either a shallow copy of the input dataset with two new "vtkInsidedness"
* attribute arrays, or a completely new UnstructuredGrid that contains only
* the cells and points of the input that are inside the frustum. The
* PreserveTopology flag controls which occurs. When PreserveTopology is off
* this filter adds a scalar array called vtkOriginalCellIds that says what
* input cell produced each output cell. This is an example of a Pedigree ID
* which helps to trace back results.
*
* @sa
* vtkExtractGeometry, vtkAreaPicker, vtkExtractSelection, vtkSelection
*/
#ifndef vtkExtractSelectedFrustum_h
#define vtkExtractSelectedFrustum_h
#include "vtkFiltersGeneralModule.h" // For export macro
#include "vtkExtractSelectionBase.h"
class vtkPlanes;
class vtkInformation;
class vtkInformationVector;
class vtkCell;
class vtkPoints;
class vtkDoubleArray;
class VTKFILTERSGENERAL_EXPORT vtkExtractSelectedFrustum : public vtkExtractSelectionBase
{
public:
static vtkExtractSelectedFrustum *New();
vtkTypeMacro(vtkExtractSelectedFrustum, vtkExtractSelectionBase);
void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
/**
* Return the MTime taking into account changes to the Frustum
*/
vtkMTimeType GetMTime() VTK_OVERRIDE;
//@{
/**
* Set the selection frustum. The planes object must contain six planes.
*/
virtual void SetFrustum(vtkPlanes*);
vtkGetObjectMacro(Frustum,vtkPlanes);
//@}
/**
* Given eight vertices, creates a frustum.
* each pt is x,y,z,1
* in the following order
* near lower left, far lower left
* near upper left, far upper left
* near lower right, far lower right
* near upper right, far upper right
*/
void CreateFrustum(double vertices[32]);
//@{
/**
* Return eight points that define the selection frustum. Valid if
* create Frustum was used, invalid if SetFrustum was.
*/
vtkGetObjectMacro(ClipPoints, vtkPoints);
//@}
//@{
/**
* Sets/gets the intersection test type.
*/
vtkSetMacro(FieldType,int);
vtkGetMacro(FieldType,int);
//@}
//@{
/**
* Sets/gets the intersection test type. Only meaningful when fieldType is
* vtkSelection::POINT
*/
vtkSetMacro(ContainingCells,int);
vtkGetMacro(ContainingCells,int);
//@}
/**
* Does a quick test on the AABBox defined by the bounds.
*/
int OverallBoundsTest(double *bounds);
//@{
/**
* When On, this returns an unstructured grid that outlines selection area.
* Off is the default.
*/
vtkSetMacro(ShowBounds,int);
vtkGetMacro(ShowBounds,int);
vtkBooleanMacro(ShowBounds,int);
//@}
//@{
/**
* When on, extracts cells outside the frustum instead of inside.
*/
vtkSetMacro(InsideOut,int);
vtkGetMacro(InsideOut,int);
vtkBooleanMacro(InsideOut,int);
//@}
protected:
vtkExtractSelectedFrustum(vtkPlanes *f=NULL);
~vtkExtractSelectedFrustum() VTK_OVERRIDE;
// sets up output dataset
int RequestDataObject(vtkInformation* request,
vtkInformationVector** inputVector,
vtkInformationVector* outputVector) VTK_OVERRIDE;
//execution
int RequestData(vtkInformation *,
vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE;
int ABoxFrustumIsect(double bounds[], vtkCell *cell);
int FrustumClipPolygon(int nverts,
double *ivlist, double *wvlist, double *ovlist);
void PlaneClipPolygon(int nverts, double *ivlist,
int pid, int &noverts, double *ovlist);
void PlaneClipEdge(double *V0, double *V1,
int pid, int &noverts, double *overts);
int IsectDegenerateCell(vtkCell *cell);
//used in CreateFrustum
void ComputePlane(int idx,
double v0[3], double v1[2], double v2[3],
vtkPoints *points, vtkDoubleArray *norms);
//modes
int FieldType;
int ContainingCells;
int InsideOut;
//used internally
vtkPlanes *Frustum;
int np_vertids[6][2];
//for debugging
vtkPoints *ClipPoints;
int NumRejects;
int NumIsects;
int NumAccepts;
int ShowBounds;
private:
vtkExtractSelectedFrustum(const vtkExtractSelectedFrustum&) VTK_DELETE_FUNCTION;
void operator=(const vtkExtractSelectedFrustum&) VTK_DELETE_FUNCTION;
};
#endif
|