Go to the documentation of this file.
78 #ifndef vtkStreamingTessellator_h
79 #define vtkStreamingTessellator_h
81 #include "vtkFiltersCoreModule.h"
84 #undef PARAVIEW_DEBUG_TESSELLATOR
98 typedef void (*TetrahedronProcessorFunction)(
const double*,
const double*,
const double*,
const double*,
vtkEdgeSubdivisionCriterion*,
void*,
const void* );
100 enum {MaxFieldSize = 18};
180 int GetEmbeddingDimension(
int k )
const;
214 int GetFieldSize(
int k )
const;
222 int GetMaximumNumberOfSubdivisions();
245 void AdaptivelySample3Facet(
double* v1,
double* v2,
double* v3,
double* v4 )
const ;
246 void AdaptivelySample2Facet(
double* v1,
double* v2,
double* v3 )
const ;
247 void AdaptivelySample1Facet(
double* v1,
double* v2 )
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* v1,
double* v2,
double* v3,
double* v4,
int maxDepth ) const ;
341 void AdaptivelySample2Facet(
double* v1,
double* v2,
double* v3,
int maxDepth,
int move=7 ) const ;
342 void AdaptivelySample1Facet(
double* v1,
double* v2,
int maxDepth ) const ;
344 int BestTets(
int*,
double**,
int,
int ) const;
352 { this->AdaptivelySample3Facet( v1, v2, v3, v4, this->MaximumNumberOfSubdivisions ); }
354 { this->AdaptivelySample2Facet( v1, v2, v3, this->MaximumNumberOfSubdivisions ); }
356 { this->AdaptivelySample1Facet( v1, v2, 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
An algorithm that refines an initial simplicial tessellation using edge subdivision.
vtkIdType GetCaseCount(int c)
void AdaptivelySample2Facet(double *v1, double *v2, double *v3) const
void AdaptivelySample1Facet(double *v1, double *v2) const
int GetEmbeddingDimension(int k) const
vtkStreamingTessellator()
virtual TriangleProcessorFunction GetTriangleCallback() const
virtual void SetTriangleCallback(TriangleProcessorFunction)
Get/Set the function called for each output triangle (2-facet).
abstract base class for most VTK objects
EdgeProcessorFunction Callback1
vtkIdType GetSubcaseCount(int casenum, int sub)
int GetFieldSize(int k) const
virtual void SetSubdivisionAlgorithm(vtkEdgeSubdivisionCriterion *)
Get/Set the algorithm used to determine whether an edge should be subdivided or left as-is.
virtual void SetEmbeddingDimension(int k, int d)
Get/Set the number of parameter-space coordinates associated with each input and output point.
virtual vtkEdgeSubdivisionCriterion * GetSubdivisionAlgorithm()
virtual void SetConstPrivateData(const void *ConstPrivate)
Get/Set a constant void pointer passed to the simplex output functions.
virtual VertexProcessorFunction GetVertexCallback() const
virtual void SetMaximumNumberOfSubdivisions(int num_subdiv_in)
Get/Set the maximum number of subdivisions that may occur.
~vtkStreamingTessellator() override
how to decide whether a linear approximation to nonlinear geometry or field should be subdivided
a simple class to control print indentation
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void AdaptivelySample0Facet(double *v1) const
virtual void SetEdgeCallback(EdgeProcessorFunction)
Get/Set the function called for each output line segment (1-facet).
TetrahedronProcessorFunction Callback3
virtual void SetFieldSize(int k, int s)
Get/Set the number of field value coordinates associated with each input and output point.
virtual void * GetPrivateData() const
static vtkStreamingTessellator * New()
vtkEdgeSubdivisionCriterion * Algorithm
const void * ConstPrivateData
TriangleProcessorFunction Callback2
virtual void SetPrivateData(void *Private)
Get/Set a void pointer passed to the triangle and edge output functions.
VertexProcessorFunction Callback0
virtual void SetTetrahedronCallback(TetrahedronProcessorFunction)
Get/Set the function called for each output tetrahedron (3-facet).
void ResetCounts()
Reset/access the histogram of subdivision cases encountered.
virtual EdgeProcessorFunction GetEdgeCallback() const
int GetMaximumNumberOfSubdivisions()
virtual void SetVertexCallback(VertexProcessorFunction)
Get/Set the function called for each output line segment (1-facet).
virtual const void * GetConstPrivateData() const
virtual const vtkEdgeSubdivisionCriterion * GetSubdivisionAlgorithm() const
virtual TetrahedronProcessorFunction GetTetrahedronCallback() const
int MaximumNumberOfSubdivisions
The number of subdivisions allowed.