75 #ifndef vtkStreamingTessellator_h 76 #define vtkStreamingTessellator_h 78 #include "vtkFiltersCoreModule.h" 81 #undef PARAVIEW_DEBUG_TESSELLATOR 92 typedef void (*VertexProcessorFunction)(
94 typedef void (*EdgeProcessorFunction)(
96 typedef void (*TriangleProcessorFunction)(
98 typedef void (*TetrahedronProcessorFunction)(
const double*,
const double*,
const double*,
110 virtual void SetTetrahedronCallback(TetrahedronProcessorFunction);
111 virtual TetrahedronProcessorFunction GetTetrahedronCallback()
const;
118 virtual void SetTriangleCallback(TriangleProcessorFunction);
119 virtual TriangleProcessorFunction GetTriangleCallback()
const;
126 virtual void SetEdgeCallback(EdgeProcessorFunction);
127 virtual EdgeProcessorFunction GetEdgeCallback()
const;
134 virtual void SetVertexCallback(VertexProcessorFunction);
135 virtual VertexProcessorFunction GetVertexCallback()
const;
142 virtual void SetPrivateData(
void* Private);
143 virtual void* GetPrivateData()
const;
153 virtual void SetConstPrivateData(
const void* ConstPrivate);
154 virtual const void* GetConstPrivateData()
const;
184 virtual void SetEmbeddingDimension(
int k,
int d);
185 int GetEmbeddingDimension(
int k)
const;
218 virtual void SetFieldSize(
int k,
int s);
219 int GetFieldSize(
int k)
const;
226 virtual void SetMaximumNumberOfSubdivisions(
int num_subdiv_in);
227 int GetMaximumNumberOfSubdivisions();
250 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3)
const;
251 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2)
const;
252 void AdaptivelySample1Facet(
double* v0,
double* v1)
const;
253 void AdaptivelySample0Facet(
double* v0)
const;
271 #ifdef PARAVIEW_DEBUG_TESSELLATOR 272 for (
int i = 0; i < 11; ++i)
274 this->CaseCounts[i] = 0;
275 for (
int j = 0; j < 51; ++j)
277 this->SubcaseCounts[i][j] = 0;
280 #endif // PARAVIEW_DEBUG_TESSELLATOR 284 #ifdef PARAVIEW_DEBUG_TESSELLATOR 285 return this->CaseCounts[c];
289 #endif // PARAVIEW_DEBUG_TESSELLATOR 293 #ifdef PARAVIEW_DEBUG_TESSELLATOR 294 return this->SubcaseCounts[casenum][sub];
299 #endif // PARAVIEW_DEBUG_TESSELLATOR 304 static int EdgeCodesToCaseCodesPlusPermutation[64][2];
316 #ifdef PARAVIEW_DEBUG_TESSELLATOR 319 #endif // PARAVIEW_DEBUG_TESSELLATOR 329 int PointDimension[4];
336 int EmbeddingDimension[4];
346 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3,
int maxDepth)
const;
347 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2,
int maxDepth,
int move = 7)
const;
348 void AdaptivelySample1Facet(
double* v0,
double* v1,
int maxDepth)
const;
350 int BestTets(
int*,
double**,
int,
int)
const;
358 double* v0,
double* v1,
double* v2,
double* v3)
const 363 double* v0,
double* v1,
double* v2)
const 374 if (k <= 0 || k >= 4)
381 if (k <= 0 || k >= 4)
391 #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 PointDimension[4]
PointDimension is the length of each double* array associated with each point passed to a 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...
int EmbeddingDimension[4]
The parametric dimension of each point passed to the subdivision algorithm.
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
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...
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