85 #ifndef __vtkDecimatePro_h
86 #define __vtkDecimatePro_h
118 vtkSetClampMacro(TargetReduction,
double,0.0,1.0);
119 vtkGetMacro(TargetReduction,
double);
126 vtkSetMacro(PreserveTopology,
int);
127 vtkGetMacro(PreserveTopology,
int);
128 vtkBooleanMacro(PreserveTopology,
int);
135 vtkSetClampMacro(FeatureAngle,
double,0.0,180.0);
136 vtkGetMacro(FeatureAngle,
double);
144 vtkSetMacro(Splitting,
int);
145 vtkGetMacro(Splitting,
int);
146 vtkBooleanMacro(Splitting,
int);
153 vtkSetClampMacro(SplitAngle,
double,0.0,180.0);
154 vtkGetMacro(SplitAngle,
double);
164 vtkSetMacro(PreSplitMesh,
int);
165 vtkGetMacro(PreSplitMesh,
int);
166 vtkBooleanMacro(PreSplitMesh,
int);
175 vtkGetMacro(MaximumError,
double);
186 vtkSetMacro(AccumulateError,
int);
187 vtkGetMacro(AccumulateError,
int);
188 vtkBooleanMacro(AccumulateError,
int);
196 vtkSetMacro(ErrorIsAbsolute,
int);
197 vtkGetMacro(ErrorIsAbsolute,
int);
203 vtkGetMacro(AbsoluteError,
double);
209 vtkSetMacro(BoundaryVertexDeletion,
int);
210 vtkGetMacro(BoundaryVertexDeletion,
int);
211 vtkBooleanMacro(BoundaryVertexDeletion,
int);
220 vtkGetMacro(Degree,
int);
227 vtkSetClampMacro(InflectionPointRatio,
double,1.001,
VTK_DOUBLE_MAX);
228 vtkGetMacro(InflectionPointRatio,
double);
243 void GetInflectionPoints(
double *inflectionPoints);
250 double *GetInflectionPoints();
278 int EvaluateVertex(
vtkIdType ptId,
unsigned short int numTris,
282 int IsValidSplit(
int index);
285 void SplitVertex(
vtkIdType ptId,
int type,
unsigned short int numTris,
289 void DistributeError(
double error);
321 {this->MaxId = -1; this->Array =
new LocalVertex[sz];};
326 delete [] this->Array;
331 {this->MaxId++; this->Array[this->MaxId] = v;};
344 {this->MaxId = -1; this->Array =
new LocalTri[sz];};
349 delete [] this->Array;
354 {this->MaxId++; this->Array[this->MaxId] = t;};
367 void Insert(
vtkIdType id,
double error= -1.0);
368 int Pop(
double &error);
391 double TheSplitAngle;
LocalTri & GetTriangle(vtkIdType i)
void InsertNextTriangle(LocalTri &t)
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
concrete dataset represents vertices, lines, polygons, and triangle strips
dynamic, self-adjusting array of double
an list of ids arranged in priority order
LocalVertex * LocalVertexPtr
static vtkPolyDataAlgorithm * New()
void Split(const int N[3], const int minSide[3], vtkstd::vector< vtkAMRBox > &decomp)
void PrintSelf(ostream &os, vtkIndent indent)
LocalVertex & GetVertex(vtkIdType i)
TriArray(const vtkIdType sz)
Superclass for algorithms that produce only polydata as output.
a simple class to control print indentation
list of point or cell ids
void InsertNextVertex(LocalVertex &v)
double InflectionPointRatio
VertexArray(const vtkIdType sz)
vtkDoubleArray * InflectionPoints
int BoundaryVertexDeletion
reduce the number of triangles in a mesh
vtkIdType GetNumberOfVertices()
vtkIdType GetNumberOfTriangles()
vtkPriorityQueue * EdgeLengths