78 #ifndef vtkStreamingTessellator_h
79 #define vtkStreamingTessellator_h
81 #include "vtkFiltersCoreModule.h"
84 #undef PARAVIEW_DEBUG_TESSELLATOR
95 typedef void (*VertexProcessorFunction)(
97 typedef void (*EdgeProcessorFunction)(
98 const double*,
const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void*);
99 typedef void (*TriangleProcessorFunction)(
100 const double*,
const double*,
const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void*);
101 typedef void (*TetrahedronProcessorFunction)(
const double*,
const double*,
const double*,
102 const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void*);
113 virtual void SetTetrahedronCallback(TetrahedronProcessorFunction);
114 virtual TetrahedronProcessorFunction GetTetrahedronCallback()
const;
121 virtual void SetTriangleCallback(TriangleProcessorFunction);
122 virtual TriangleProcessorFunction GetTriangleCallback()
const;
129 virtual void SetEdgeCallback(EdgeProcessorFunction);
130 virtual EdgeProcessorFunction GetEdgeCallback()
const;
137 virtual void SetVertexCallback(VertexProcessorFunction);
138 virtual VertexProcessorFunction GetVertexCallback()
const;
145 virtual void SetPrivateData(
void* Private);
146 virtual void* GetPrivateData()
const;
156 virtual void SetConstPrivateData(
const void* ConstPrivate);
157 virtual const void* GetConstPrivateData()
const;
168 virtual void SetSubdivisionAlgorithm(vtkEdgeSubdivisionCriterion*);
169 virtual vtkEdgeSubdivisionCriterion* GetSubdivisionAlgorithm();
172 virtual const vtkEdgeSubdivisionCriterion* GetSubdivisionAlgorithm()
const;
187 virtual void SetEmbeddingDimension(
int k,
int d);
188 int GetEmbeddingDimension(
int k)
const;
221 virtual void SetFieldSize(
int k,
int s);
222 int GetFieldSize(
int k)
const;
229 virtual void SetMaximumNumberOfSubdivisions(
int num_subdiv_in);
230 int GetMaximumNumberOfSubdivisions();
253 void AdaptivelySample3FacetLinear(
double* v0,
double* v1,
double* v2,
double* v3)
const;
254 void AdaptivelySample2FacetLinear(
double* v0,
double* v1,
double* v2)
const;
255 void AdaptivelySample1FacetLinear(
double* v0,
double* v1)
const;
257 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3)
const;
258 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2)
const;
259 void AdaptivelySample1Facet(
double* v0,
double* v1)
const;
260 void AdaptivelySample0Facet(
double* v0)
const;
278 #ifdef PARAVIEW_DEBUG_TESSELLATOR
279 for (
int i = 0; i < 11; ++i)
281 this->CaseCounts[i] = 0;
282 for (
int j = 0; j < 51; ++j)
284 this->SubcaseCounts[i][j] = 0;
287 #endif // PARAVIEW_DEBUG_TESSELLATOR
291 #ifdef PARAVIEW_DEBUG_TESSELLATOR
292 return this->CaseCounts[c];
296 #endif // PARAVIEW_DEBUG_TESSELLATOR
300 #ifdef PARAVIEW_DEBUG_TESSELLATOR
301 return this->SubcaseCounts[casenum][sub];
306 #endif // PARAVIEW_DEBUG_TESSELLATOR
311 static int EdgeCodesToCaseCodesPlusPermutation[64][2];
323 #ifdef PARAVIEW_DEBUG_TESSELLATOR
326 #endif // PARAVIEW_DEBUG_TESSELLATOR
336 int PointDimension[4];
343 int EmbeddingDimension[4];
353 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3,
int maxDepth)
const;
354 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2,
int maxDepth,
int move = 7)
const;
355 void AdaptivelySample1Facet(
double* v0,
double* v1,
int maxDepth)
const;
357 int BestTets(
int*,
double**,
int,
int)
const;
365 double* v0,
double* v1,
double* v2,
double* v3)
const
370 double* v0,
double* v1,
double* v2)
const
381 if (k <= 0 || k >= 4)
388 if (k <= 0 || k >= 4)
398 #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
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...
void ResetCounts()
Reset/access the histogram of subdivision cases encountered.
int GetMaximumNumberOfSubdivisions()
Get/Set the maximum number of subdivisions that may occur.
int MaximumNumberOfSubdivisions
The number of subdivisions allowed.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
VertexProcessorFunction Callback0