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
|
/*=========================================================================
Program: Visualization Toolkit
Module: vtkDataSetTriangleFilter.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 vtkDataSetTriangleFilter
* @brief triangulate any type of dataset
*
* vtkDataSetTriangleFilter generates n-dimensional simplices from any input
* dataset. That is, 3D cells are converted to tetrahedral meshes, 2D cells
* to triangles, and so on. The triangulation is guaranteed to be compatible.
*
* This filter uses simple 1D and 2D triangulation techniques for cells
* that are of topological dimension 2 or less. For 3D cells--due to the
* issue of face compatibility across quadrilateral faces (which way to
* orient the diagonal?)--a fancier ordered Delaunay triangulation is used.
* This approach produces templates on the fly for triangulating the
* cells. The templates are then used to do the actual triangulation.
*
* @sa
* vtkOrderedTriangulator vtkTriangleFilter
*/
#ifndef vtkDataSetTriangleFilter_h
#define vtkDataSetTriangleFilter_h
#include "vtkFiltersGeneralModule.h" // For export macro
#include "vtkUnstructuredGridAlgorithm.h"
class vtkOrderedTriangulator;
class VTKFILTERSGENERAL_EXPORT vtkDataSetTriangleFilter : public vtkUnstructuredGridAlgorithm
{
public:
static vtkDataSetTriangleFilter *New();
vtkTypeMacro(vtkDataSetTriangleFilter,vtkUnstructuredGridAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
//@{
/**
* When On this filter will cull all 1D and 2D cells from the output.
* The default is Off.
*/
vtkSetMacro(TetrahedraOnly, int);
vtkGetMacro(TetrahedraOnly, int);
vtkBooleanMacro(TetrahedraOnly, int);
//@}
protected:
vtkDataSetTriangleFilter();
~vtkDataSetTriangleFilter() VTK_OVERRIDE;
// Usual data generation method
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE;
int FillInputPortInformation(int port, vtkInformation *info) VTK_OVERRIDE;
// Used to triangulate 3D cells
vtkOrderedTriangulator *Triangulator;
// Different execute methods depending on whether input is structured or not
void StructuredExecute(vtkDataSet *, vtkUnstructuredGrid *);
void UnstructuredExecute(vtkDataSet *, vtkUnstructuredGrid *);
int TetrahedraOnly;
private:
vtkDataSetTriangleFilter(const vtkDataSetTriangleFilter&) VTK_DELETE_FUNCTION;
void operator=(const vtkDataSetTriangleFilter&) VTK_DELETE_FUNCTION;
};
#endif
|