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.
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...
vtkIdType GetSubcaseCount(int casenum, int sub)
Reset/access the histogram of subdivision cases encountered.
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...
int GetFieldSize(int k) const
Get/Set the number of field value coordinates associated with each input and output point...
EdgeProcessorFunction Callback1
a simple class to control print indentation
const void * ConstPrivateData
TetrahedronProcessorFunction Callback3
how to decide whether a linear approximation to nonlinear geometry or field should be subdivided ...
vtkEdgeSubdivisionCriterion * Algorithm
TriangleProcessorFunction Callback2
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