You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/3rd/VTK7.1/include/vtkPolyDataPointSampler.h

141 lines
4.4 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkPolyDataPointSampler.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 vtkPolyDataPointSampler
* @brief generate points from vtkPolyData
*
* vtkPolyDataPointSampler generates points from input vtkPolyData. The
* points are placed approximately a specified distance apart.
*
* This filter functions as follows. First, it regurgitates all input points,
* then samples all lines, plus edges associated with the input polygons and
* triangle strips to produce edge points. Finally, the interiors of polygons
* and triangle strips are subsampled to produce points. All of these
* functiona can be enabled or disabled separately. Note that this algorithm
* only approximately generates points the specified distance apart.
* Generally the point density is finer than requested.
*
* @warning
* Point generation can be useful in a variety of applications. For example,
* generating seed points for glyphing or streamline generation. Another
* useful application is generating points for implicit modeling. In many
* cases implicit models can be more efficiently generated from points than
* from polygons or other primitives.
*
* @sa
* vtkImplicitModeller
*/
#ifndef vtkPolyDataPointSampler_h
#define vtkPolyDataPointSampler_h
#include "vtkFiltersModelingModule.h" // For export macro
#include "vtkPolyDataAlgorithm.h"
class VTKFILTERSMODELING_EXPORT vtkPolyDataPointSampler : public vtkPolyDataAlgorithm
{
public:
/**
* Instantiate this class.
*/
static vtkPolyDataPointSampler *New();
//@{
/**
* Standard macros for type information and printing.
*/
vtkTypeMacro(vtkPolyDataPointSampler,vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
//@}
//@{
/**
* Set/Get the approximate distance between points. This is an absolute
* distance measure. The default is 0.01.
*/
vtkSetClampMacro(Distance,double,0.0,VTK_FLOAT_MAX);
vtkGetMacro(Distance,double);
//@}
//@{
/**
* Specify/retrieve a boolean flag indicating whether cell vertex points should
* be output.
*/
vtkGetMacro(GenerateVertexPoints,int);
vtkSetMacro(GenerateVertexPoints,int);
vtkBooleanMacro(GenerateVertexPoints,int);
//@}
//@{
/**
* Specify/retrieve a boolean flag indicating whether cell edges should
* be sampled to produce output points. The default is true.
*/
vtkGetMacro(GenerateEdgePoints,int);
vtkSetMacro(GenerateEdgePoints,int);
vtkBooleanMacro(GenerateEdgePoints,int);
//@}
//@{
/**
* Specify/retrieve a boolean flag indicating whether cell interiors should
* be sampled to produce output points. The default is true.
*/
vtkGetMacro(GenerateInteriorPoints,int);
vtkSetMacro(GenerateInteriorPoints,int);
vtkBooleanMacro(GenerateInteriorPoints,int);
//@}
//@{
/**
* Specify/retrieve a boolean flag indicating whether cell vertices should
* be generated. Cell vertices are useful if you actually want to display
* the points (that is, for each point generated, a vertex is generated).
* Recall that VTK only renders vertices and not points.
* The default is true.
*/
vtkGetMacro(GenerateVertices,int);
vtkSetMacro(GenerateVertices,int);
vtkBooleanMacro(GenerateVertices,int);
//@}
protected:
vtkPolyDataPointSampler();
~vtkPolyDataPointSampler() {}
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
double Distance;
double Distance2;
int GenerateVertexPoints;
int GenerateEdgePoints;
int GenerateInteriorPoints;
int GenerateVertices;
void SampleEdge(vtkPoints *pts, double x0[3], double x1[3]);
void SampleTriangle(vtkPoints *newPts, vtkPoints *inPts,
vtkIdType *pts);
void SamplePolygon(vtkPoints *newPts, vtkPoints *inPts,
vtkIdType npts, vtkIdType *pts);
private:
vtkPolyDataPointSampler(const vtkPolyDataPointSampler&) VTK_DELETE_FUNCTION;
void operator=(const vtkPolyDataPointSampler&) VTK_DELETE_FUNCTION;
};
#endif