67 #ifndef vtkStreamingTessellator_h
68 #define vtkStreamingTessellator_h
70 #include "vtkFiltersCoreModule.h"
74 #undef PARAVIEW_DEBUG_TESSELLATOR
76 VTK_ABI_NAMESPACE_BEGIN
86 typedef void (*VertexProcessorFunction)(
88 typedef void (*EdgeProcessorFunction)(
89 const double*,
const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void*);
90 typedef void (*TriangleProcessorFunction)(
91 const double*,
const double*,
const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void*);
92 typedef void (*TetrahedronProcessorFunction)(
const double*,
const double*,
const double*,
93 const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void*);
105 virtual
void SetTetrahedronCallback(TetrahedronProcessorFunction);
107 virtual TetrahedronProcessorFunction GetTetrahedronCallback() const;
115 virtual
void SetTriangleCallback(TriangleProcessorFunction);
117 virtual TriangleProcessorFunction GetTriangleCallback() const;
125 virtual
void SetEdgeCallback(EdgeProcessorFunction);
127 virtual EdgeProcessorFunction GetEdgeCallback() const;
135 virtual
void SetVertexCallback(VertexProcessorFunction);
137 virtual VertexProcessorFunction GetVertexCallback() const;
145 virtual
void SetPrivateData(
void* Private);
147 virtual
void* GetPrivateData() const;
158 virtual
void SetConstPrivateData(const
void* ConstPrivate);
160 virtual const
void* GetConstPrivateData() const;
171 virtual
void SetSubdivisionAlgorithm(vtkEdgeSubdivisionCriterion*);
172 virtual vtkEdgeSubdivisionCriterion* GetSubdivisionAlgorithm();
175 virtual const vtkEdgeSubdivisionCriterion* GetSubdivisionAlgorithm() const;
190 virtual
void SetEmbeddingDimension(
int k,
int d);
191 int GetEmbeddingDimension(
int k) const;
224 virtual
void SetFieldSize(
int k,
int s);
225 int GetFieldSize(
int k) const;
232 virtual
void SetMaximumNumberOfSubdivisions(
int num_subdiv_in);
233 int GetMaximumNumberOfSubdivisions();
256 void AdaptivelySample3FacetLinear(
double* v0,
double* v1,
double* v2,
double* v3) const;
257 void AdaptivelySample2FacetLinear(
double* v0,
double* v1,
double* v2) const;
258 void AdaptivelySample1FacetLinear(
double* v0,
double* v1) const;
260 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3) const;
261 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2) const;
262 void AdaptivelySample1Facet(
double* v0,
double* v1) const;
263 void AdaptivelySample0Facet(
double* v0) const;
281 #ifdef PARAVIEW_DEBUG_TESSELLATOR
282 for (
int i = 0; i < 11; ++i)
284 this->CaseCounts[i] = 0;
285 for (
int j = 0; j < 51; ++j)
287 this->SubcaseCounts[i][j] = 0;
290 #endif // PARAVIEW_DEBUG_TESSELLATOR
294 #ifdef PARAVIEW_DEBUG_TESSELLATOR
295 return this->CaseCounts[c];
299 #endif // PARAVIEW_DEBUG_TESSELLATOR
303 #ifdef PARAVIEW_DEBUG_TESSELLATOR
304 return this->SubcaseCounts[casenum][sub];
309 #endif // PARAVIEW_DEBUG_TESSELLATOR
314 static int EdgeCodesToCaseCodesPlusPermutation[64][2];
326 #ifdef PARAVIEW_DEBUG_TESSELLATOR
329 #endif // PARAVIEW_DEBUG_TESSELLATOR
339 int PointDimension[4];
346 int EmbeddingDimension[4];
356 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3,
int maxDepth)
const;
357 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2,
int maxDepth,
int move = 7)
const;
358 void AdaptivelySample1Facet(
double* v0,
double* v1,
int maxDepth)
const;
360 int BestTets(
int*,
double**,
int,
int)
const;
368 double* v0,
double* v1,
double* v2,
double* v3)
const
373 double* v0,
double* v1,
double* v2)
const
384 if (k <= 0 || k >= 4)
391 if (k <= 0 || k >= 4)
401 VTK_ABI_NAMESPACE_END
402 #endif // vtkStreamingTessellator_h
vtkIdType GetCaseCount(int c)
Reset/access the histogram of subdivision cases encountered.
abstract base class for most VTK objects
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
An algorithm that refines an initial simplicial tessellation using edge subdivision.
int GetFieldSize(int k) const
Get/Set the number of field value coordinates associated with each input and output point...
int PointDimension[4]
PointDimension is the length of each double* array associated with each point passed to a subdivision...
void AdaptivelySample3Facet(double *v0, double *v1, double *v2, double *v3) const
This will adaptively subdivide the tetrahedron (3-facet), triangle (2-facet), or edge (1-facet) until...
vtkIdType GetSubcaseCount(int casenum, int sub)
Reset/access the histogram of subdivision cases encountered.
int EmbeddingDimension[4]
The parametric dimension of each point passed to the subdivision algorithm.
EdgeProcessorFunction Callback1
a simple class to control print indentation
const void * ConstPrivateData
void AdaptivelySample2Facet(double *v0, double *v1, double *v2) const
This will adaptively subdivide the tetrahedron (3-facet), triangle (2-facet), or edge (1-facet) until...
TetrahedronProcessorFunction Callback3
#define VTK_MARSHALEXCLUDE(reason)
how to decide whether a linear approximation to nonlinear geometry or field should be subdivided ...
vtkEdgeSubdivisionCriterion * Algorithm
TriangleProcessorFunction Callback2
void AdaptivelySample1Facet(double *v0, double *v1) const
This will adaptively subdivide the tetrahedron (3-facet), triangle (2-facet), or edge (1-facet) until...
int GetEmbeddingDimension(int k) const
Get/Set the number of parameter-space coordinates associated with each input and output point...
int GetMaximumNumberOfSubdivisions()
Get/Set the maximum number of subdivisions that may occur.
int MaximumNumberOfSubdivisions
The number of subdivisions allowed.
#define VTK_MARSHAL_EXCLUDE_REASON_NOT_SUPPORTED
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
VertexProcessorFunction Callback0