75 #ifndef vtkStreamingTessellator_h
76 #define vtkStreamingTessellator_h
78 #include "vtkFiltersCoreModule.h"
81 #undef PARAVIEW_DEBUG_TESSELLATOR
95 typedef void (*TetrahedronProcessorFunction)(
const double*,
const double*,
const double*,
const double*,
vtkEdgeSubdivisionCriterion*,
void*,
const void* );
97 enum {MaxFieldSize = 18};
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;
145 virtual void SetConstPrivateData(
const void* ConstPrivate );
146 virtual const void* GetConstPrivateData()
const;
176 virtual void SetEmbeddingDimension(
int k,
int d );
177 int GetEmbeddingDimension(
int k )
const;
210 virtual void SetFieldSize(
int k,
int s );
211 int GetFieldSize(
int k )
const;
218 virtual void SetMaximumNumberOfSubdivisions(
int num_subdiv_in );
219 int GetMaximumNumberOfSubdivisions();
242 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3 )
const ;
243 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2 )
const ;
244 void AdaptivelySample1Facet(
double* v0,
double* v1 )
const ;
245 void AdaptivelySample0Facet(
double* v0 )
const ;
261 #ifdef PARAVIEW_DEBUG_TESSELLATOR
262 for (
int i=0; i<11; ++i )
264 this->CaseCounts[i] = 0;
265 for (
int j=0; j<51; ++j )
267 this->SubcaseCounts[i][j] = 0;
270 #endif // PARAVIEW_DEBUG_TESSELLATOR
274 #ifdef PARAVIEW_DEBUG_TESSELLATOR
275 return this->CaseCounts[c];
279 #endif // PARAVIEW_DEBUG_TESSELLATOR
283 #ifdef PARAVIEW_DEBUG_TESSELLATOR
284 return this->SubcaseCounts[casenum][sub];
289 #endif // PARAVIEW_DEBUG_TESSELLATOR
295 static int EdgeCodesToCaseCodesPlusPermutation[64][2];
307 #ifdef PARAVIEW_DEBUG_TESSELLATOR
310 #endif // PARAVIEW_DEBUG_TESSELLATOR
320 int PointDimension[4];
327 int EmbeddingDimension[4];
337 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3,
int maxDepth ) const ;
338 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2,
int maxDepth,
int move=7 ) const ;
339 void AdaptivelySample1Facet(
double* v0,
double* v1,
int maxDepth ) const ;
341 int BestTets(
int*,
double**,
int,
int ) const;
349 { this->AdaptivelySample3Facet( v0, v1, v2, v3, this->MaximumNumberOfSubdivisions ); }
351 { this->AdaptivelySample2Facet( v0, v1, v2, this->MaximumNumberOfSubdivisions ); }
353 { this->AdaptivelySample1Facet( v0, v1, this->MaximumNumberOfSubdivisions ); }
356 {
if ( k <= 0 || k >= 4 )
return -1;
return this->EmbeddingDimension[k]; }
359 {
if ( k <= 0 || k >= 4 )
return -1;
return this->PointDimension[k] - this->EmbeddingDimension[k] - 3; }
363 #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...
vtkIdType GetSubcaseCount(int casenum, int sub)
Reset/access the histogram of subdivision cases encountered.
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