85 #ifndef vtkDecimatePro_h
86 #define vtkDecimatePro_h
119 vtkSetClampMacro(TargetReduction,
double,0.0,1.0);
120 vtkGetMacro(TargetReduction,
double);
127 vtkSetMacro(PreserveTopology,
int);
128 vtkGetMacro(PreserveTopology,
int);
129 vtkBooleanMacro(PreserveTopology,
int);
136 vtkSetClampMacro(FeatureAngle,
double,0.0,180.0);
137 vtkGetMacro(FeatureAngle,
double);
145 vtkSetMacro(Splitting,
int);
146 vtkGetMacro(Splitting,
int);
147 vtkBooleanMacro(Splitting,
int);
154 vtkSetClampMacro(SplitAngle,
double,0.0,180.0);
155 vtkGetMacro(SplitAngle,
double);
165 vtkSetMacro(PreSplitMesh,
int);
166 vtkGetMacro(PreSplitMesh,
int);
167 vtkBooleanMacro(PreSplitMesh,
int);
176 vtkGetMacro(MaximumError,
double);
187 vtkSetMacro(AccumulateError,
int);
188 vtkGetMacro(AccumulateError,
int);
189 vtkBooleanMacro(AccumulateError,
int);
197 vtkSetMacro(ErrorIsAbsolute,
int);
198 vtkGetMacro(ErrorIsAbsolute,
int);
204 vtkGetMacro(AbsoluteError,
double);
210 vtkSetMacro(BoundaryVertexDeletion,
int);
211 vtkGetMacro(BoundaryVertexDeletion,
int);
212 vtkBooleanMacro(BoundaryVertexDeletion,
int);
221 vtkGetMacro(Degree,
int);
228 vtkSetClampMacro(InflectionPointRatio,
double,1.001,
VTK_DOUBLE_MAX);
229 vtkGetMacro(InflectionPointRatio,
double);
244 void GetInflectionPoints(
double *inflectionPoints);
251 double *GetInflectionPoints();
257 vtkSetMacro(OutputPointsPrecision,
int);
258 vtkGetMacro(OutputPointsPrecision,
int);
288 int EvaluateVertex(
vtkIdType ptId,
unsigned short int numTris,
292 int IsValidSplit(
int index);
295 void SplitVertex(
vtkIdType ptId,
int type,
unsigned short int numTris,
299 void DistributeError(
double error);
331 {this->MaxId = -1; this->Array =
new LocalVertex[sz];};
334 delete [] this->Array;
338 {this->MaxId++; this->Array[this->MaxId] = v;};
351 {this->MaxId = -1; this->Array =
new LocalTri[sz];};
354 delete [] this->Array;
358 {this->MaxId++; this->Array[this->MaxId] = t;};
371 void Insert(
vtkIdType id,
double error= -1.0);
372 int Pop(
double &error);
395 double TheSplitAngle;
LocalTri & GetTriangle(vtkIdType i)
void InsertNextTriangle(LocalTri &t)
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
#define VTKFILTERSCORE_EXPORT
concrete dataset represents vertices, lines, polygons, and triangle strips
dynamic, self-adjusting array of double
a list of ids arranged in priority order
LocalVertex * LocalVertexPtr
static vtkPolyDataAlgorithm * New()
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
int OutputPointsPrecision
reduce the number of triangles in a mesh
vtkIdType GetNumberOfVertices()
vtkIdType GetNumberOfTriangles()
vtkPriorityQueue * EdgeLengths