66#ifndef vtkQuadricDecimation_h
67#define vtkQuadricDecimation_h
69#include "vtkFiltersCoreModule.h"
72VTK_ABI_NAMESPACE_BEGIN
92 vtkSetClampMacro(TargetReduction,
double, 0.0, 1.0);
93 vtkGetMacro(TargetReduction,
double);
139 vtkSetMacro(Regularization,
double);
140 vtkGetMacro(Regularization,
double);
155 vtkSetMacro(BoundaryWeightFactor,
double);
156 vtkGetMacro(BoundaryWeightFactor,
double);
163 vtkGetMacro(MapPointData,
bool);
164 vtkSetMacro(MapPointData,
bool);
165 vtkBooleanMacro(MapPointData,
bool);
198 vtkSetMacro(ScalarsWeight,
double);
199 vtkSetMacro(VectorsWeight,
double);
200 vtkSetMacro(NormalsWeight,
double);
201 vtkSetMacro(TCoordsWeight,
double);
202 vtkSetMacro(TensorsWeight,
double);
203 vtkGetMacro(ScalarsWeight,
double);
204 vtkGetMacro(VectorsWeight,
double);
205 vtkGetMacro(NormalsWeight,
double);
206 vtkGetMacro(TCoordsWeight,
double);
207 vtkGetMacro(TensorsWeight,
double);
215 vtkGetMacro(ActualReduction,
double);
274 const double t0[3],
const double t1[3],
const double t2[3],
const double* x);
299 bool MapPointData =
false;
332 double Regularization = 0.05;
336 double BoundaryWeightFactor = 1.0;
340 int AttributeComponents[6];
341 double AttributeScale[6];
dynamic, self-adjusting array of double
keep track of edges (edge is pair of integer id's)
list of point or cell ids
a simple class to control print indentation
represent and manipulate point attribute data
Superclass for algorithms that produce only polydata as output.
concrete dataset represents vertices, lines, polygons, and triangle strips
a list of ids arranged in priority order
reduce the number of triangles in a mesh
void SetPointAttributeArray(vtkIdType ptId[2], const double *x)
Helper function to set and get the point and it's attributes as an array.
void AddBoundaryConstraints()
Free boundary edges are weighted.
double * VolumeConstraints
vtkTypeBool TCoordsAttribute
int NumberOfEdgeCollapses
vtkDoubleArray * TargetPoints
void FindAffectedEdges(vtkIdType p1Id, vtkIdType p2Id, vtkIdList *edges)
Find all edges that will have an endpoint change ids because of an edge collapse.
void ComputeNumberOfComponents()
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkTypeBool NormalsAttribute
vtkIdList * EndPoint1List
ErrorQuadric * ErrorQuadrics
void ComputeQuadric(vtkIdType pointId)
Compute quadric for this vertex.
void GetAttributeComponents()
Find out how many components there are for each attribute for this poly data.
double ComputeCost2(vtkIdType edgeId, double *x)
Compute cost for contracting this edge and the point that gives us this cost.
static vtkQuadricDecimation * New()
void GetPointAttributeArray(vtkIdType ptId, double *x)
Helper function to set and get the point and it's attributes as an array.
vtkTypeBool ScalarsAttribute
vtkIdType GetEdgeCellId(vtkIdType p1Id, vtkIdType p2Id)
Find a cell that uses this edge.
double ComputeCost(vtkIdType edgeId, double *x)
Compute cost for contracting this edge and the point that gives us this cost.
vtkIdList * EndPoint2List
int CollapseEdge(vtkIdType pt0Id, vtkIdType pt1Id)
Do the dirty work of eliminating the edge; return the number of triangles deleted.
vtkPriorityQueue * EdgeCosts
vtkIdList * CollapseCellIds
~vtkQuadricDecimation() override
int TrianglePlaneCheck(const double t0[3], const double t1[3], const double t2[3], const double *x)
vtkTypeBool AttributeErrorMetric
vtkTypeBool VolumePreservation
vtkTypeBool TensorsAttribute
void InitializeQuadrics(vtkIdType numPts)
Compute quadric for all vertices.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void AddQuadric(vtkIdType oldPtId, vtkIdType newPtId)
Add the quadrics for these 2 points since the edge between them has been collapsed.
int IsGoodPlacement(vtkIdType pt0Id, vtkIdType pt1Id, const double *x)
void UpdateEdgeData(vtkIdType pt0Id, vtkIdType pt1Id)
vtkTypeBool VectorsAttribute
std::pair< boost::graph_traits< vtkGraph * >::edge_iterator, boost::graph_traits< vtkGraph * >::edge_iterator > edges(vtkGraph *g)