78 #ifndef vtkStreamingTessellator_h 79 #define vtkStreamingTessellator_h 81 #include "vtkFiltersCoreModule.h" 84 #undef PARAVIEW_DEBUG_TESSELLATOR 96 typedef void (*EdgeProcessorFunction)(
const double*,
const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void* );
97 typedef void (*TriangleProcessorFunction)(
const double*,
const double*,
const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void* );
98 typedef void (*TetrahedronProcessorFunction)(
const double*,
const double*,
const double*,
const double*, vtkEdgeSubdivisionCriterion*,
void*,
const void* );
100 enum {MaxFieldSize = 18};
106 virtual void SetTetrahedronCallback( TetrahedronProcessorFunction );
107 virtual TetrahedronProcessorFunction GetTetrahedronCallback()
const;
114 virtual void SetTriangleCallback( TriangleProcessorFunction );
115 virtual TriangleProcessorFunction GetTriangleCallback()
const;
122 virtual void SetEdgeCallback( EdgeProcessorFunction );
123 virtual EdgeProcessorFunction GetEdgeCallback()
const;
130 virtual void SetVertexCallback( VertexProcessorFunction );
131 virtual VertexProcessorFunction GetVertexCallback()
const;
138 virtual void SetPrivateData(
void* Private );
139 virtual void* GetPrivateData()
const;
148 virtual void SetConstPrivateData(
const void* ConstPrivate );
149 virtual const void* GetConstPrivateData()
const;
160 virtual void SetSubdivisionAlgorithm( vtkEdgeSubdivisionCriterion* );
161 virtual vtkEdgeSubdivisionCriterion* GetSubdivisionAlgorithm() ;
164 virtual const vtkEdgeSubdivisionCriterion* GetSubdivisionAlgorithm()
const;
179 virtual void SetEmbeddingDimension(
int k,
int d );
180 int GetEmbeddingDimension(
int k )
const;
213 virtual void SetFieldSize(
int k,
int s );
214 int GetFieldSize(
int k )
const;
221 virtual void SetMaximumNumberOfSubdivisions(
int num_subdiv_in );
222 int GetMaximumNumberOfSubdivisions();
245 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3 )
const ;
246 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2 )
const ;
247 void AdaptivelySample1Facet(
double* v0,
double* v1 )
const ;
248 void AdaptivelySample0Facet(
double* v0 )
const ;
264 #ifdef PARAVIEW_DEBUG_TESSELLATOR 265 for (
int i=0; i<11; ++i )
267 this->CaseCounts[i] = 0;
268 for (
int j=0; j<51; ++j )
270 this->SubcaseCounts[i][j] = 0;
273 #endif // PARAVIEW_DEBUG_TESSELLATOR 277 #ifdef PARAVIEW_DEBUG_TESSELLATOR 278 return this->CaseCounts[c];
282 #endif // PARAVIEW_DEBUG_TESSELLATOR 286 #ifdef PARAVIEW_DEBUG_TESSELLATOR 287 return this->SubcaseCounts[casenum][sub];
292 #endif // PARAVIEW_DEBUG_TESSELLATOR 298 static int EdgeCodesToCaseCodesPlusPermutation[64][2];
310 #ifdef PARAVIEW_DEBUG_TESSELLATOR 313 #endif // PARAVIEW_DEBUG_TESSELLATOR 323 int PointDimension[4];
330 int EmbeddingDimension[4];
340 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3,
int maxDepth )
const ;
341 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2,
int maxDepth,
int move=7 )
const ;
342 void AdaptivelySample1Facet(
double* v0,
double* v1,
int maxDepth )
const ;
344 int BestTets(
int*,
double**,
int,
int )
const;
352 { this->AdaptivelySample3Facet( v0, v1, v2, v3, this->MaximumNumberOfSubdivisions ); }
354 { this->AdaptivelySample2Facet( v0, v1, v2, this->MaximumNumberOfSubdivisions ); }
356 { this->AdaptivelySample1Facet( v0, v1, this->MaximumNumberOfSubdivisions ); }
359 {
if ( k <= 0 || k >= 4 )
return -1;
return this->EmbeddingDimension[k]; }
362 {
if ( k <= 0 || k >= 4 )
return -1;
return this->PointDimension[k] - this->EmbeddingDimension[k] - 3; }
366 #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...
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.
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