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*,
185 int GetEmbeddingDimension(
int k)
const;
219 int GetFieldSize(
int k)
const;
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;
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;
284 #ifdef PARAVIEW_DEBUG_TESSELLATOR
285 return this->CaseCounts[c];
293 #ifdef PARAVIEW_DEBUG_TESSELLATOR
294 return this->SubcaseCounts[casenum][sub];
304 static int EdgeCodesToCaseCodesPlusPermutation[64][2];
316 #ifdef PARAVIEW_DEBUG_TESSELLATOR
329 int PointDimension[4];
336 int EmbeddingDimension[4];
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)
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
~vtkStreamingTessellator() override
void AdaptivelySample1Facet(double *v0, double *v1, int maxDepth) const
vtkIdType GetCaseCount(int c)
void AdaptivelySample2Facet(double *v0, double *v1, double *v2) const
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
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...
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
int BestTets(int *, double **, int, int) const
VertexProcessorFunction Callback0
EdgeProcessorFunction Callback1
virtual void * GetPrivateData() const
void AdaptivelySample0Facet(double *v0) const
int PointDimension[4]
PointDimension is the length of each double* array associated with each point passed to a subdivision...
virtual void SetVertexCallback(VertexProcessorFunction)
Get/Set the function called for each output line segment (1-facet).
static vtkStreamingTessellator * New()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkEdgeSubdivisionCriterion * Algorithm
int GetMaximumNumberOfSubdivisions()
virtual void SetEdgeCallback(EdgeProcessorFunction)
Get/Set the function called for each output line segment (1-facet).
int GetFieldSize(int k) const
void ResetCounts()
Reset/access the histogram of subdivision cases encountered.
void AdaptivelySample1Facet(double *v0, double *v1) const
virtual vtkEdgeSubdivisionCriterion * GetSubdivisionAlgorithm()
TetrahedronProcessorFunction Callback3
virtual void SetTetrahedronCallback(TetrahedronProcessorFunction)
Get/Set the function called for each output tetrahedron (3-facet).
void AdaptivelySample3Facet(double *v0, double *v1, double *v2, double *v3, int maxDepth) const
const void * ConstPrivateData
virtual const void * GetConstPrivateData() const
virtual void SetPrivateData(void *Private)
Get/Set a void pointer passed to the triangle and edge output functions.
virtual const vtkEdgeSubdivisionCriterion * GetSubdivisionAlgorithm() const
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.
virtual void SetConstPrivateData(const void *ConstPrivate)
Get/Set a constant void pointer passed to the simplex output functions.
vtkIdType GetSubcaseCount(int casenum, int sub)
int EmbeddingDimension[4]
The parametric dimension of each point passed to the subdivision algorithm.
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 AdaptivelySample2Facet(double *v0, double *v1, double *v2, int maxDepth, int move=7) const