47#ifndef vtkQuadricDecimation_h 
   48#define vtkQuadricDecimation_h 
   51#include "vtkFiltersCoreModule.h"  
   54VTK_ABI_NAMESPACE_BEGIN
 
   74  vtkSetClampMacro(TargetReduction, 
double, 0.0, 1.0);
 
   75  vtkGetMacro(TargetReduction, 
double);
 
  121  vtkSetMacro(Regularization, 
double);
 
  122  vtkGetMacro(Regularization, 
double);
 
  137  vtkSetMacro(BoundaryWeightFactor, 
double);
 
  138  vtkGetMacro(BoundaryWeightFactor, 
double);
 
  145  vtkGetMacro(MapPointData, 
bool);
 
  146  vtkSetMacro(MapPointData, 
bool);
 
  147  vtkBooleanMacro(MapPointData, 
bool);
 
  180  vtkSetMacro(ScalarsWeight, 
double);
 
  181  vtkSetMacro(VectorsWeight, 
double);
 
  182  vtkSetMacro(NormalsWeight, 
double);
 
  183  vtkSetMacro(TCoordsWeight, 
double);
 
  184  vtkSetMacro(TensorsWeight, 
double);
 
  185  vtkGetMacro(ScalarsWeight, 
double);
 
  186  vtkGetMacro(VectorsWeight, 
double);
 
  187  vtkGetMacro(NormalsWeight, 
double);
 
  188  vtkGetMacro(TCoordsWeight, 
double);
 
  189  vtkGetMacro(TensorsWeight, 
double);
 
  197  vtkGetMacro(ActualReduction, 
double);
 
  256    const double t0[3], 
const double t1[3], 
const double t2[3], 
const double* x);
 
  267                          "the edge to interpolate point data")
 
  268  void SetPointAttributeArray(
vtkIdType ptId, const 
double* x);
 
  269  void SetPointAttributeArray(
vtkIdType ptId[2], const 
double* x);
 
  277  void GetAttributeComponents();
 
  279  double TargetReduction;
 
  280  double ActualReduction;
 
  284  bool MapPointData = false;
 
  292  double ScalarsWeight;
 
  293  double VectorsWeight;
 
  294  double NormalsWeight;
 
  295  double TCoordsWeight;
 
  296  double TensorsWeight;
 
  298  int NumberOfEdgeCollapses;
 
  304  int NumberOfComponents;
 
  317  double Regularization = 0.05;
 
  321  double BoundaryWeightFactor = 1.0;
 
  325  int AttributeComponents[6];
 
  326  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 AddBoundaryConstraints()
Free boundary edges are weighted.
 
double * VolumeConstraints
 
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.
 
ErrorQuadric * ErrorQuadrics
 
void ComputeQuadric(vtkIdType pointId)
Compute quadric for this vertex.
 
double ComputeCost2(vtkIdType edgeId, double *x)
Compute cost for contracting this edge and the point that gives us this cost.
 
static vtkQuadricDecimation * New()
 
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.
 
int CollapseEdge(vtkIdType pt0Id, vtkIdType pt1Id)
Do the dirty work of eliminating the edge; return the number of triangles deleted.
 
vtkIdList * CollapseCellIds
 
~vtkQuadricDecimation() override
 
int TrianglePlaneCheck(const double t0[3], const double t1[3], const double t2[3], const double *x)
 
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)
 
std::pair< boost::graph_traits< vtkGraph * >::edge_iterator, boost::graph_traits< vtkGraph * >::edge_iterator > edges(vtkGraph *g)
 
#define VTK_DEPRECATED_IN_9_3_0(reason)