/usr/include/vtk-7.1/vtkMaskPoints.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 179 180 181 182 183 184 185 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkMaskPoints.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 vtkMaskPoints
* @brief selectively filter points
*
* vtkMaskPoints is a filter that passes through points and point attributes
* from input dataset. (Other geometry is not passed through.) It is
* possible to mask every nth point, and to specify an initial offset
* to begin masking from.
* It is possible to also generate different random selections
* (jittered strides, real random samples, and spatially stratified
* random samples) from the input data.
* The filter can also generate vertices (topological
* primitives) as well as points. This is useful because vertices are
* rendered while points are not.
*/
#ifndef vtkMaskPoints_h
#define vtkMaskPoints_h
#include "vtkFiltersCoreModule.h" // For export macro
#include "vtkPolyDataAlgorithm.h"
class VTKFILTERSCORE_EXPORT vtkMaskPoints : public vtkPolyDataAlgorithm
{
public:
static vtkMaskPoints *New();
vtkTypeMacro(vtkMaskPoints,vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
//@{
/**
* Turn on every nth point (strided sampling), ignored by random modes.
*/
vtkSetClampMacro(OnRatio,int,1,VTK_INT_MAX);
vtkGetMacro(OnRatio,int);
//@}
//@{
/**
* Limit the number of points that can be passed through (i.e.,
* sets the output sample size).
*/
vtkSetClampMacro(MaximumNumberOfPoints,vtkIdType,0,VTK_ID_MAX);
vtkGetMacro(MaximumNumberOfPoints,vtkIdType);
//@}
//@{
/**
* Start sampling with this point. Ignored by certain random modes.
*/
vtkSetClampMacro(Offset,vtkIdType,0,VTK_ID_MAX);
vtkGetMacro(Offset,vtkIdType);
//@}
//@{
/**
* Special flag causes randomization of point selection.
*/
vtkSetMacro(RandomMode,int);
vtkGetMacro(RandomMode,int);
vtkBooleanMacro(RandomMode,int);
//@}
//@{
/**
* Special mode selector that switches between random mode types.
* 0 - randomized strides: randomly strides through the data (default);
* fairly certain that this is not a statistically random sample
* because the output depends on the order of the input and
* the input points do not have an equal chance to appear in the output
* (plus Vitter's incremental random algorithms are more complex
* than this, while not a proof it is good indication this isn't
* a statistically random sample - the closest would be algorithm S)
* 1 - random sample: create a statistically random sample using Vitter's
* incremental algorithm D without A described in Vitter
* "Faster Mthods for Random Sampling", Communications of the ACM
* Volume 27, Issue 7, 1984
* (OnRatio and Offset are ignored) O(sample size)
* 2 - spatially stratified random sample: create a spatially
* stratified random sample using the first method described in
* Woodring et al. "In-situ Sampling of a Large-Scale Particle
* Simulation for Interactive Visualization and Analysis",
* Computer Graphics Forum, 2011 (EuroVis 2011).
* (OnRatio and Offset are ignored) O(N log N)
*/
vtkSetClampMacro(RandomModeType, int, 0, 2);
vtkGetMacro(RandomModeType, int);
//@}
//@{
/**
* THIS ONLY WORKS WITH THE PARALLEL IMPLEMENTATION vtkPMaskPoints RUNNING
* IN PARALLEL.
* NOTHING WILL CHANGE IF THIS IS NOT THE PARALLEL vtkPMaskPoints.
* Determines whether maximum number of points is taken per processor
* (default) or if the maximum number of points is proportionally
* taken across processors (i.e., number of points per
* processor = points on a processor * maximum number of points /
* total points across all processors). In the first case,
* the total number of points = maximum number of points *
* number of processors. In the second case, the total number of
* points = maximum number of points.
*/
vtkSetMacro(ProportionalMaximumNumberOfPoints, int);
vtkGetMacro(ProportionalMaximumNumberOfPoints, int);
vtkBooleanMacro(ProportionalMaximumNumberOfPoints, int);
//@}
//@{
/**
* Generate output polydata vertices as well as points. A useful
* convenience method because vertices are drawn (they are topology) while
* points are not (they are geometry). By default this method is off.
*/
vtkSetMacro(GenerateVertices,int);
vtkGetMacro(GenerateVertices,int);
vtkBooleanMacro(GenerateVertices,int);
//@}
//@{
/**
* When vertex generation is enabled, by default vertices are produced
* as multi-vertex cells (more than one per cell), if you wish to have
* a single vertex per cell, enable this flag.
*/
vtkSetMacro(SingleVertexPerCell,int);
vtkGetMacro(SingleVertexPerCell,int);
vtkBooleanMacro(SingleVertexPerCell,int);
//@}
//@{
/**
* Set/get the desired precision for the output types. See the documentation
* for the vtkAlgorithm::DesiredOutputPrecision enum for an explanation of
* the available precision settings.
*/
vtkSetMacro(OutputPointsPrecision,int);
vtkGetMacro(OutputPointsPrecision,int);
//@}
protected:
vtkMaskPoints();
~vtkMaskPoints() VTK_OVERRIDE {}
int RequestData(vtkInformation *, vtkInformationVector **,
vtkInformationVector *) VTK_OVERRIDE;
int FillInputPortInformation(int port, vtkInformation *info) VTK_OVERRIDE;
int OnRatio; // every OnRatio point is on; all others are off.
vtkIdType Offset; // offset (or starting point id)
int RandomMode; // turn on/off randomization
vtkIdType MaximumNumberOfPoints;
int GenerateVertices; //generate polydata verts
int SingleVertexPerCell;
int RandomModeType; // choose the random sampling mode
int ProportionalMaximumNumberOfPoints;
int OutputPointsPrecision;
virtual void InternalScatter(unsigned long*, unsigned long *, int, int) {}
virtual void InternalGather(unsigned long*, unsigned long*, int, int) {}
virtual int InternalGetNumberOfProcesses() { return 1; };
virtual int InternalGetLocalProcessId() { return 0; };
virtual void InternalBarrier() {}
unsigned long GetLocalSampleSize(vtkIdType, int);
private:
vtkMaskPoints(const vtkMaskPoints&) VTK_DELETE_FUNCTION;
void operator=(const vtkMaskPoints&) VTK_DELETE_FUNCTION;
};
#endif
|