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;
277#ifdef PARAVIEW_DEBUG_TESSELLATOR
278 return this->CaseCounts[c];
286#ifdef PARAVIEW_DEBUG_TESSELLATOR
287 return this->SubcaseCounts[casenum][sub];
298 static int EdgeCodesToCaseCodesPlusPermutation[64][2];
310#ifdef 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; }
how to decide whether a linear approximation to nonlinear geometry or field should be subdivided
a simple class to control print indentation
abstract base class for most VTK objects
An algorithm that refines an initial simplicial tessellation using edge subdivision.
vtkStreamingTessellator()
virtual TetrahedronProcessorFunction GetTetrahedronCallback() const
virtual const void * GetConstPrivateData() const
~vtkStreamingTessellator() override
vtkIdType GetCaseCount(int c)
virtual void SetSubdivisionAlgorithm(vtkEdgeSubdivisionCriterion *)
Get/Set the algorithm used to determine whether an edge should be subdivided or left as-is.
virtual void SetMaximumNumberOfSubdivisions(int num_subdiv_in)
Get/Set the maximum number of subdivisions that may occur.
TriangleProcessorFunction Callback2
virtual void SetFieldSize(int k, int s)
Get/Set the number of field value coordinates associated with each input and output point.
virtual VertexProcessorFunction GetVertexCallback() const
VertexProcessorFunction Callback0
EdgeProcessorFunction Callback1
void AdaptivelySample0Facet(double *v1) const
virtual const vtkEdgeSubdivisionCriterion * GetSubdivisionAlgorithm() const
virtual void SetVertexCallback(VertexProcessorFunction)
Get/Set the function called for each output line segment (1-facet).
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkEdgeSubdivisionCriterion * Algorithm
virtual vtkEdgeSubdivisionCriterion * GetSubdivisionAlgorithm()
int GetMaximumNumberOfSubdivisions()
virtual void SetEdgeCallback(EdgeProcessorFunction)
Get/Set the function called for each output line segment (1-facet).
int GetFieldSize(int k) const
virtual void * GetPrivateData() const
void ResetCounts()
Reset/access the histogram of subdivision cases encountered.
TetrahedronProcessorFunction Callback3
virtual void SetTetrahedronCallback(TetrahedronProcessorFunction)
Get/Set the function called for each output tetrahedron (3-facet).
const void * ConstPrivateData
static vtkStreamingTessellator * New()
virtual void SetPrivateData(void *Private)
Get/Set a void pointer passed to the triangle and edge output functions.
virtual TriangleProcessorFunction GetTriangleCallback() const
virtual void SetEmbeddingDimension(int k, int d)
Get/Set the number of parameter-space coordinates associated with each input and output point.
void AdaptivelySample2Facet(double *v1, double *v2, double *v3) const
virtual void SetConstPrivateData(const void *ConstPrivate)
Get/Set a constant void pointer passed to the simplex output functions.
vtkIdType GetSubcaseCount(int casenum, int sub)
virtual void SetTriangleCallback(TriangleProcessorFunction)
Get/Set the function called for each output triangle (2-facet).
int MaximumNumberOfSubdivisions
The number of subdivisions allowed.
virtual EdgeProcessorFunction GetEdgeCallback() const
int GetEmbeddingDimension(int k) const
void AdaptivelySample1Facet(double *v1, double *v2) const