67#ifndef vtkStreamingTessellator_h
68#define vtkStreamingTessellator_h
70#include "vtkFiltersCoreModule.h"
74#undef PARAVIEW_DEBUG_TESSELLATOR
76VTK_ABI_NAMESPACE_BEGIN
86 typedef void (*VertexProcessorFunction)(
88 typedef void (*EdgeProcessorFunction)(
90 typedef void (*TriangleProcessorFunction)(
92 typedef void (*TetrahedronProcessorFunction)(
const double*,
const double*,
const double*,
105 virtual
void SetTetrahedronCallback(TetrahedronProcessorFunction);
107 virtual TetrahedronProcessorFunction GetTetrahedronCallback() const;
115 virtual
void SetTriangleCallback(TriangleProcessorFunction);
117 virtual TriangleProcessorFunction GetTriangleCallback() const;
125 virtual
void SetEdgeCallback(EdgeProcessorFunction);
127 virtual EdgeProcessorFunction GetEdgeCallback() const;
135 virtual
void SetVertexCallback(VertexProcessorFunction);
137 virtual VertexProcessorFunction GetVertexCallback() const;
145 virtual
void SetPrivateData(
void* Private);
147 virtual
void* GetPrivateData() const;
158 virtual
void SetConstPrivateData(const
void* ConstPrivate);
160 virtual const
void* GetConstPrivateData() const;
190 virtual
void SetEmbeddingDimension(
int k,
int d);
191 int GetEmbeddingDimension(
int k) const;
224 virtual
void SetFieldSize(
int k,
int s);
225 int GetFieldSize(
int k) const;
232 virtual
void SetMaximumNumberOfSubdivisions(
int num_subdiv_in);
233 int GetMaximumNumberOfSubdivisions();
256 void AdaptivelySample3FacetLinear(
double* v0,
double* v1,
double* v2,
double* v3) const;
257 void AdaptivelySample2FacetLinear(
double* v0,
double* v1,
double* v2) const;
258 void AdaptivelySample1FacetLinear(
double* v0,
double* v1) const;
260 void AdaptivelySample3Facet(
double* v0,
double* v1,
double* v2,
double* v3) const;
261 void AdaptivelySample2Facet(
double* v0,
double* v1,
double* v2) const;
262 void AdaptivelySample1Facet(
double* v0,
double* v1) const;
263 void AdaptivelySample0Facet(
double* v0) const;
281#ifdef PARAVIEW_DEBUG_TESSELLATOR
282 for (
int i = 0; i < 11; ++i)
284 this->CaseCounts[i] = 0;
285 for (
int j = 0; j < 51; ++j)
287 this->SubcaseCounts[i][j] = 0;
294#ifdef PARAVIEW_DEBUG_TESSELLATOR
295 return this->CaseCounts[c];
303#ifdef PARAVIEW_DEBUG_TESSELLATOR
304 return this->SubcaseCounts[casenum][sub];
314 static int EdgeCodesToCaseCodesPlusPermutation[64][2];
326#ifdef PARAVIEW_DEBUG_TESSELLATOR
339 int PointDimension[4];
346 int EmbeddingDimension[4];
368 double* v0,
double* v1,
double* v2,
double* v3)
const
373 double* v0,
double* v1,
double* v2)
const
384 if (k <= 0 || k >= 4)
391 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()
~vtkStreamingTessellator() override
void AdaptivelySample1Facet(double *v0, double *v1, int maxDepth) const
vtkIdType GetCaseCount(int c)
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...
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...
int BestTets(int *, double **, int, int) const
VertexProcessorFunction Callback0
EdgeProcessorFunction Callback1
int PointDimension[4]
PointDimension is the length of each double* array associated with each point passed to a subdivision...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkEdgeSubdivisionCriterion * Algorithm
int GetMaximumNumberOfSubdivisions()
Get/Set the maximum number of subdivisions that may occur.
int GetFieldSize(int k) const
Get/Set the number of field value coordinates associated with each input and output point.
void AdaptivelySample1Facet(double *v0, double *v1) const
This will adaptively subdivide the tetrahedron (3-facet), triangle (2-facet), or edge (1-facet) until...
TetrahedronProcessorFunction Callback3
void AdaptivelySample3Facet(double *v0, double *v1, double *v2, double *v3, int maxDepth) const
const void * ConstPrivateData
static vtkStreamingTessellator * New()
vtkIdType GetSubcaseCount(int casenum, int sub)
Reset/access the histogram of subdivision cases encountered.
int EmbeddingDimension[4]
The parametric dimension of each point passed to the subdivision algorithm.
int MaximumNumberOfSubdivisions
The number of subdivisions allowed.
int GetEmbeddingDimension(int k) const
Get/Set the number of parameter-space coordinates associated with each input and output point.
void AdaptivelySample2Facet(double *v0, double *v1, double *v2, int maxDepth, int move=7) const
#define VTK_MARSHAL_EXCLUDE_REASON_NOT_SUPPORTED
#define VTK_MARSHALEXCLUDE(reason)