67 #ifndef vtkStreamingTessellator_h
68 #define vtkStreamingTessellator_h
70 #include "vtkFiltersCoreModule.h"
73 #undef PARAVIEW_DEBUG_TESSELLATOR
75 VTK_ABI_NAMESPACE_BEGIN
85 typedef void (*VertexProcessorFunction)(
87 typedef void (*EdgeProcessorFunction)(
88 const double*,
const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void*);
89 typedef void (*TriangleProcessorFunction)(
90 const double*,
const double*,
const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void*);
91 typedef void (*TetrahedronProcessorFunction)(
const double*,
const double*,
const double*,
92 const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void*);
103 virtual void SetTetrahedronCallback(TetrahedronProcessorFunction);
104 virtual TetrahedronProcessorFunction GetTetrahedronCallback()
const;
111 virtual void SetTriangleCallback(TriangleProcessorFunction);
112 virtual TriangleProcessorFunction GetTriangleCallback()
const;
119 virtual void SetEdgeCallback(EdgeProcessorFunction);
120 virtual EdgeProcessorFunction GetEdgeCallback()
const;
127 virtual void SetVertexCallback(VertexProcessorFunction);
128 virtual VertexProcessorFunction GetVertexCallback()
const;
135 virtual void SetPrivateData(
void* Private);
136 virtual void* GetPrivateData()
const;
146 virtual void SetConstPrivateData(
const void* ConstPrivate);
147 virtual const void* GetConstPrivateData()
const;
158 virtual void SetSubdivisionAlgorithm(vtkEdgeSubdivisionCriterion*);
159 virtual vtkEdgeSubdivisionCriterion* GetSubdivisionAlgorithm();
162 virtual const vtkEdgeSubdivisionCriterion* GetSubdivisionAlgorithm()
const;
177 virtual void SetEmbeddingDimension(
int k,
int d);
178 int GetEmbeddingDimension(
int k)
const;
211 virtual void SetFieldSize(
int k,
int s);
212 int GetFieldSize(
int k)
const;
219 virtual void SetMaximumNumberOfSubdivisions(
int num_subdiv_in);
220 int GetMaximumNumberOfSubdivisions();
243 void AdaptivelySample3FacetLinear(
double* v0,
double* v1,
double* v2,
double* v3)
const;
244 void AdaptivelySample2FacetLinear(
double* v0,
double* v1,
double* v2)
const;
245 void AdaptivelySample1FacetLinear(
double* v0,
double* v1)
const;
247 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3)
const;
248 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2)
const;
249 void AdaptivelySample1Facet(
double* v0,
double* v1)
const;
250 void AdaptivelySample0Facet(
double* v0)
const;
268 #ifdef PARAVIEW_DEBUG_TESSELLATOR
269 for (
int i = 0; i < 11; ++i)
271 this->CaseCounts[i] = 0;
272 for (
int j = 0; j < 51; ++j)
274 this->SubcaseCounts[i][j] = 0;
277 #endif // PARAVIEW_DEBUG_TESSELLATOR
281 #ifdef PARAVIEW_DEBUG_TESSELLATOR
282 return this->CaseCounts[c];
286 #endif // PARAVIEW_DEBUG_TESSELLATOR
290 #ifdef PARAVIEW_DEBUG_TESSELLATOR
291 return this->SubcaseCounts[casenum][sub];
296 #endif // PARAVIEW_DEBUG_TESSELLATOR
301 static int EdgeCodesToCaseCodesPlusPermutation[64][2];
313 #ifdef PARAVIEW_DEBUG_TESSELLATOR
316 #endif // PARAVIEW_DEBUG_TESSELLATOR
326 int PointDimension[4];
333 int EmbeddingDimension[4];
343 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3,
int maxDepth)
const;
344 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2,
int maxDepth,
int move = 7)
const;
345 void AdaptivelySample1Facet(
double* v0,
double* v1,
int maxDepth)
const;
347 int BestTets(
int*,
double**,
int,
int)
const;
355 double* v0,
double* v1,
double* v2,
double* v3)
const
360 double* v0,
double* v1,
double* v2)
const
371 if (k <= 0 || k >= 4)
378 if (k <= 0 || k >= 4)
388 VTK_ABI_NAMESPACE_END
389 #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