Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkQuadricClustering Class Reference

#include <vtkQuadricClustering.h>

Inheritance diagram for vtkQuadricClustering:

Inheritance graph
[legend]
Collaboration diagram for vtkQuadricClustering:

Collaboration graph
[legend]
List of all members.

Detailed Description

reduce the number of triangles in a mesh

vtkQuadricClustering is a filter to reduce the number of triangles in a triangle mesh, forming a good approximation to the original geometry. The input to vtkQuadricClustering is a vtkPolyData object, and all types of polygonal data are handled.

The algorithm used is the one described by Peter Lindstrom in his Siggraph 2000 paper, "Out-of-Core Simplification of Large Polygonal Models." The general approach of the algorithm is to cluster vertices in a uniform binning of space, accumulating the quadric of each triangle (pushed out to the triangles vertices) within each bin, and then determining an optimal position for a single vertex in a bin by using the accumulated quadric. In more detail, the algorithm first gets the bounds of the input poly data. It then breaks this bounding volume into a user-specified number of spatial bins. It then reads each triangle from the input and hashes its vertices into these bins. (If this is the first time a bin has been visited, initialize its quadric to the 0 matrix.) The algorithm computes the error quadric for this triangle and adds it to the existing quadric of the bin in which each vertex is contained. Then, if 2 or more vertices of the triangle fall in the same bin, the triangle is dicarded. If the triangle is not discarded, it adds the triangle to the list of output triangles as a list of vertex identifiers. (There is one vertex id per bin.) After all the triangles have been read, the representative vertex for each bin is computed (an optimal location is found) using the quadric for that bin. This determines the spatial location of the vertices of each of the triangles in the output.

To use this filter, specify the divisions defining the spatial subdivision in the x, y, and z directions. You must also specify an input vtkPolyData. Then choose to either 1) use the original points that minimize the quadric error to produce the output triangles or 2) compute an optimal position in each bin to produce the output triangles (recommended and default behavior).

This filter can take multiple inputs. To do this, the user must explicity call StartAppend, Append (once for each input), and EndAppend. StartAppend sets up the data structure to hold the quadric matrices. Append processes each triangle in the input poly data it was called on, hashes its vertices to the appropriate bins, determines whether to keep this triangle, and updates the appropriate quadric matrices. EndAppend determines the spatial location of each of the representative vertices for the visited bins. While this approach does not fit into the visualization architecture and requires manual control, it has the advantage that extremely large data can be processed in pieces and appended to the filter piece-by-piece.

Warning:
This filter can drastically affect topology, i.e., topology is not preserved.

The filter handles input triangle strips and arbitrary polygons. Arbitrary polygons are assumed convex: during insertion they are triangulated using a fan of triangles from the first point in the polygons. If the polygon is concave, this can produce bad results. In this case, use vtkTriangleFilter to triangulate the polygons first.

See also:
vtkQuadricDecimation vtkDecimatePro vtkDecimate
Tests:
vtkQuadricClustering (Tests)

Definition at line 88 of file vtkQuadricClustering.h.
void SetNumberOfXDivisions (int num)
void SetNumberOfYDivisions (int num)
void SetNumberOfZDivisions (int num)
virtual int GetNumberOfXDivisions ()
virtual int GetNumberOfYDivisions ()
virtual int GetNumberOfZDivisions ()
void SetNumberOfDivisions (int div[3])
void SetNumberOfDivisions (int div0, int div1, int div2)
int * GetNumberOfDivisions ()
void GetNumberOfDivisions (int div[3])
static vtkQuadricClusteringNew ()
void FindFeaturePoints (vtkCellArray *edges, vtkPoints *edgePts, double angle)
void EndAppendUsingPoints (vtkPolyData *input, vtkPolyData *output)
int UseInputPoints

Public Types

typedef vtkPolyDataAlgorithm Superclass

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
virtual void SetAutoAdjustNumberOfDivisions (int)
virtual int GetAutoAdjustNumberOfDivisions ()
virtual void AutoAdjustNumberOfDivisionsOn ()
virtual void AutoAdjustNumberOfDivisionsOff ()
void SetDivisionOrigin (double x, double y, double z)
void SetDivisionOrigin (double o[3])
virtual double * GetDivisionOrigin ()
virtual void GetDivisionOrigin (double &, double &, double &)
virtual void GetDivisionOrigin (double[3])
void SetDivisionSpacing (double x, double y, double z)
void SetDivisionSpacing (double s[3])
virtual double * GetDivisionSpacing ()
virtual void GetDivisionSpacing (double &, double &, double &)
virtual void GetDivisionSpacing (double[3])
virtual void SetUseInputPoints (int)
virtual int GetUseInputPoints ()
virtual void UseInputPointsOn ()
virtual void UseInputPointsOff ()
virtual void SetUseFeatureEdges (int)
virtual int GetUseFeatureEdges ()
virtual void UseFeatureEdgesOn ()
virtual void UseFeatureEdgesOff ()
vtkFeatureEdgesGetFeatureEdges ()
virtual void SetUseFeaturePoints (int)
virtual int GetUseFeaturePoints ()
virtual void UseFeaturePointsOn ()
virtual void UseFeaturePointsOff ()
virtual void SetFeaturePointsAngle (double)
virtual double GetFeaturePointsAngle ()
virtual void SetUseInternalTriangles (int)
virtual int GetUseInternalTriangles ()
virtual void UseInternalTrianglesOn ()
virtual void UseInternalTrianglesOff ()
void StartAppend (double *bounds)
void StartAppend (double x0, double x1, double y0, double y1, double z0, double z1)
void Append (vtkPolyData *piece)
void EndAppend ()
virtual void SetCopyCellData (int)
virtual int GetCopyCellData ()
virtual void CopyCellDataOn ()
virtual void CopyCellDataOff ()

Static Public Member Functions

static int IsTypeOf (const char *type)
static vtkQuadricClusteringSafeDownCast (vtkObject *o)

Protected Member Functions

 vtkQuadricClustering ()
 ~vtkQuadricClustering ()
int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
int FillInputPortInformation (int, vtkInformation *)
void InitializeQuadric (double quadric[9])
void AddQuadric (vtkIdType binId, double quadric[9])
void EndAppendVertexGeometry (vtkPolyData *input, vtkPolyData *output)
void AppendFeatureQuadrics (vtkPolyData *pd, vtkPolyData *output)
vtkIdType HashPoint (double point[3])
void ComputeRepresentativePoint (double quadric[9], vtkIdType binId, double point[3])
void AddPolygons (vtkCellArray *polys, vtkPoints *points, int geometryFlag, vtkPolyData *input, vtkPolyData *output)
void AddStrips (vtkCellArray *strips, vtkPoints *points, int geometryFlag, vtkPolyData *input, vtkPolyData *output)
void AddTriangle (vtkIdType *binIds, double *pt0, double *pt1, double *pt2, int geometeryFlag, vtkPolyData *input, vtkPolyData *output)
void AddEdges (vtkCellArray *edges, vtkPoints *points, int geometryFlag, vtkPolyData *input, vtkPolyData *output)
void AddEdge (vtkIdType *binIds, double *pt0, double *pt1, int geometeryFlag, vtkPolyData *input, vtkPolyData *output)
void AddVertices (vtkCellArray *verts, vtkPoints *points, int geometryFlag, vtkPolyData *input, vtkPolyData *output)
void AddVertex (vtkIdType binId, double *pt, int geometryFlag, vtkPolyData *input, vtkPolyData *output)

Protected Attributes

int UseFeatureEdges
int UseFeaturePoints
int UseInternalTriangles
int NumberOfXDivisions
int NumberOfYDivisions
int NumberOfZDivisions
int NumberOfDivisions [3]
int ComputeNumberOfDivisions
double DivisionOrigin [3]
double DivisionSpacing [3]
int AutoAdjustNumberOfDivisions
double Bounds [6]
double XBinSize
double YBinSize
double ZBinSize
vtkIdType SliceSize
PointQuadricQuadricArray
vtkIdType NumberOfBinsUsed
vtkCellArrayOutputTriangleArray
vtkCellArrayOutputLines
vtkFeatureEdgesFeatureEdges
vtkPointsFeaturePoints
double FeaturePointsAngle
int CopyCellData
int InCellCount
int OutCellCount

Classes

struct  PointQuadric


Member Typedef Documentation

typedef vtkPolyDataAlgorithm vtkQuadricClustering::Superclass
 

Reimplemented from vtkPolyDataAlgorithm.

Definition at line 91 of file vtkQuadricClustering.h.


Constructor & Destructor Documentation

vtkQuadricClustering::vtkQuadricClustering  )  [protected]
 

vtkQuadricClustering::~vtkQuadricClustering  )  [protected]
 


Member Function Documentation

virtual const char* vtkQuadricClustering::GetClassName  )  [virtual]
 

Reimplemented from vtkPolyDataAlgorithm.

static int vtkQuadricClustering::IsTypeOf const char *  type  )  [static]
 

Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkPolyDataAlgorithm.

virtual int vtkQuadricClustering::IsA const char *  type  )  [virtual]
 

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkPolyDataAlgorithm.

static vtkQuadricClustering* vtkQuadricClustering::SafeDownCast vtkObject o  )  [static]
 

Reimplemented from vtkPolyDataAlgorithm.

void vtkQuadricClustering::PrintSelf ostream &  os,
vtkIndent  indent
[virtual]
 

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkPolyDataAlgorithm.

static vtkQuadricClustering* vtkQuadricClustering::New  )  [static]
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

Reimplemented from vtkPolyDataAlgorithm.

void vtkQuadricClustering::SetNumberOfXDivisions int  num  ) 
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

void vtkQuadricClustering::SetNumberOfYDivisions int  num  ) 
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

void vtkQuadricClustering::SetNumberOfZDivisions int  num  ) 
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

virtual int vtkQuadricClustering::GetNumberOfXDivisions  )  [virtual]
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

virtual int vtkQuadricClustering::GetNumberOfYDivisions  )  [virtual]
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

virtual int vtkQuadricClustering::GetNumberOfZDivisions  )  [virtual]
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

void vtkQuadricClustering::SetNumberOfDivisions int  div[3]  )  [inline]
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

Definition at line 107 of file vtkQuadricClustering.h.

void vtkQuadricClustering::SetNumberOfDivisions int  div0,
int  div1,
int  div2
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

int* vtkQuadricClustering::GetNumberOfDivisions  ) 
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

void vtkQuadricClustering::GetNumberOfDivisions int  div[3]  ) 
 

Set/Get the number of divisions along each axis for the spatial bins. The number of spatial bins is NumberOfXDivisions*NumberOfYDivisions* NumberOfZDivisions. The filter may choose to ignore large numbers of divisions if the input has few points and AutoAdjustNumberOfDivisions is enabled.

virtual void vtkQuadricClustering::SetAutoAdjustNumberOfDivisions int   )  [virtual]
 

Enable automatic adjustment of number of divisions. If off, the number of divisions specified by the user is always used (as long as it is valid).

virtual int vtkQuadricClustering::GetAutoAdjustNumberOfDivisions  )  [virtual]
 

Enable automatic adjustment of number of divisions. If off, the number of divisions specified by the user is always used (as long as it is valid).

virtual void vtkQuadricClustering::AutoAdjustNumberOfDivisionsOn  )  [virtual]
 

Enable automatic adjustment of number of divisions. If off, the number of divisions specified by the user is always used (as long as it is valid).

virtual void vtkQuadricClustering::AutoAdjustNumberOfDivisionsOff  )  [virtual]
 

Enable automatic adjustment of number of divisions. If off, the number of divisions specified by the user is always used (as long as it is valid).

void vtkQuadricClustering::SetDivisionOrigin double  x,
double  y,
double  z
 

This is an alternative way to set up the bins. If you are trying to match boundaries between pieces, then you should use these methods rather than SetNumberOfDivisions. To use these methods, specify the origin and spacing of the spatial binning.

void vtkQuadricClustering::SetDivisionOrigin double  o[3]  )  [inline]
 

This is an alternative way to set up the bins. If you are trying to match boundaries between pieces, then you should use these methods rather than SetNumberOfDivisions. To use these methods, specify the origin and spacing of the spatial binning.

Definition at line 129 of file vtkQuadricClustering.h.

virtual double* vtkQuadricClustering::GetDivisionOrigin  )  [virtual]
 

This is an alternative way to set up the bins. If you are trying to match boundaries between pieces, then you should use these methods rather than SetNumberOfDivisions. To use these methods, specify the origin and spacing of the spatial binning.

virtual void vtkQuadricClustering::GetDivisionOrigin double &  ,
double &  ,
double & 
[virtual]
 

This is an alternative way to set up the bins. If you are trying to match boundaries between pieces, then you should use these methods rather than SetNumberOfDivisions. To use these methods, specify the origin and spacing of the spatial binning.

virtual void vtkQuadricClustering::GetDivisionOrigin double  [3]  )  [virtual]
 

This is an alternative way to set up the bins. If you are trying to match boundaries between pieces, then you should use these methods rather than SetNumberOfDivisions. To use these methods, specify the origin and spacing of the spatial binning.

void vtkQuadricClustering::SetDivisionSpacing double  x,
double  y,
double  z
 

This is an alternative way to set up the bins. If you are trying to match boundaries between pieces, then you should use these methods rather than SetNumberOfDivisions. To use these methods, specify the origin and spacing of the spatial binning.

void vtkQuadricClustering::SetDivisionSpacing double  s[3]  )  [inline]
 

This is an alternative way to set up the bins. If you are trying to match boundaries between pieces, then you should use these methods rather than SetNumberOfDivisions. To use these methods, specify the origin and spacing of the spatial binning.

Definition at line 133 of file vtkQuadricClustering.h.

virtual double* vtkQuadricClustering::GetDivisionSpacing  )  [virtual]
 

This is an alternative way to set up the bins. If you are trying to match boundaries between pieces, then you should use these methods rather than SetNumberOfDivisions. To use these methods, specify the origin and spacing of the spatial binning.

virtual void vtkQuadricClustering::GetDivisionSpacing double &  ,
double &  ,
double & 
[virtual]
 

This is an alternative way to set up the bins. If you are trying to match boundaries between pieces, then you should use these methods rather than SetNumberOfDivisions. To use these methods, specify the origin and spacing of the spatial binning.

virtual void vtkQuadricClustering::GetDivisionSpacing double  [3]  )  [virtual]
 

This is an alternative way to set up the bins. If you are trying to match boundaries between pieces, then you should use these methods rather than SetNumberOfDivisions. To use these methods, specify the origin and spacing of the spatial binning.

virtual void vtkQuadricClustering::SetUseInputPoints int   )  [virtual]
 

Normally the point that minimizes the quadric error function is used as the output of the bin. When this flag is on, the bin point is forced to be one of the points from the input (the one with the smallest error). This option does not work (i.e., input points cannot be used) when the append methods (StartAppend(), Append(), EndAppend()) are being called directly.

virtual int vtkQuadricClustering::GetUseInputPoints  )  [virtual]
 

Normally the point that minimizes the quadric error function is used as the output of the bin. When this flag is on, the bin point is forced to be one of the points from the input (the one with the smallest error). This option does not work (i.e., input points cannot be used) when the append methods (StartAppend(), Append(), EndAppend()) are being called directly.

virtual void vtkQuadricClustering::UseInputPointsOn  )  [virtual]
 

Normally the point that minimizes the quadric error function is used as the output of the bin. When this flag is on, the bin point is forced to be one of the points from the input (the one with the smallest error). This option does not work (i.e., input points cannot be used) when the append methods (StartAppend(), Append(), EndAppend()) are being called directly.

virtual void vtkQuadricClustering::UseInputPointsOff  )  [virtual]
 

Normally the point that minimizes the quadric error function is used as the output of the bin. When this flag is on, the bin point is forced to be one of the points from the input (the one with the smallest error). This option does not work (i.e., input points cannot be used) when the append methods (StartAppend(), Append(), EndAppend()) are being called directly.

virtual void vtkQuadricClustering::SetUseFeatureEdges int   )  [virtual]
 

By default, this flag is off. When "UseFeatureEdges" is on, then quadrics are computed for boundary edges/feature edges. They influence the quadrics (position of points), but not the mesh. Which features to use can be controlled by the filter "FeatureEdges".

virtual int vtkQuadricClustering::GetUseFeatureEdges  )  [virtual]
 

By default, this flag is off. When "UseFeatureEdges" is on, then quadrics are computed for boundary edges/feature edges. They influence the quadrics (position of points), but not the mesh. Which features to use can be controlled by the filter "FeatureEdges".

virtual void vtkQuadricClustering::UseFeatureEdgesOn  )  [virtual]
 

By default, this flag is off. When "UseFeatureEdges" is on, then quadrics are computed for boundary edges/feature edges. They influence the quadrics (position of points), but not the mesh. Which features to use can be controlled by the filter "FeatureEdges".

virtual void vtkQuadricClustering::UseFeatureEdgesOff  )  [virtual]
 

By default, this flag is off. When "UseFeatureEdges" is on, then quadrics are computed for boundary edges/feature edges. They influence the quadrics (position of points), but not the mesh. Which features to use can be controlled by the filter "FeatureEdges".

vtkFeatureEdges* vtkQuadricClustering::GetFeatureEdges  )  [inline]
 

By default, this flag is off. When "UseFeatureEdges" is on, then quadrics are computed for boundary edges/feature edges. They influence the quadrics (position of points), but not the mesh. Which features to use can be controlled by the filter "FeatureEdges".

Definition at line 158 of file vtkQuadricClustering.h.

virtual void vtkQuadricClustering::SetUseFeaturePoints int   )  [virtual]
 

By default, this flag is off. It only has an effect when "UseFeatureEdges" is also on. When "UseFeaturePoints" is on, then quadrics are computed for boundary / feature points used in the boundary / feature edges. They influence the quadrics (position of points), but not the mesh.

virtual int vtkQuadricClustering::GetUseFeaturePoints  )  [virtual]
 

By default, this flag is off. It only has an effect when "UseFeatureEdges" is also on. When "UseFeaturePoints" is on, then quadrics are computed for boundary / feature points used in the boundary / feature edges. They influence the quadrics (position of points), but not the mesh.

virtual void vtkQuadricClustering::UseFeaturePointsOn  )  [virtual]
 

By default, this flag is off. It only has an effect when "UseFeatureEdges" is also on. When "UseFeaturePoints" is on, then quadrics are computed for boundary / feature points used in the boundary / feature edges. They influence the quadrics (position of points), but not the mesh.

virtual void vtkQuadricClustering::UseFeaturePointsOff  )  [virtual]
 

By default, this flag is off. It only has an effect when "UseFeatureEdges" is also on. When "UseFeaturePoints" is on, then quadrics are computed for boundary / feature points used in the boundary / feature edges. They influence the quadrics (position of points), but not the mesh.

virtual void vtkQuadricClustering::SetFeaturePointsAngle double   )  [virtual]
 

Set/Get the angle to use in determining whether a point on a boundary / feature edge is a feature point.

virtual double vtkQuadricClustering::GetFeaturePointsAngle  )  [virtual]
 

Set/Get the angle to use in determining whether a point on a boundary / feature edge is a feature point.

virtual void vtkQuadricClustering::SetUseInternalTriangles int   )  [virtual]
 

When this flag is on (and it is on by default), then triangles that are completely contained in a bin are added to the bin quadrics. When the the flag is off the filter operates faster, but the surface may not be as well behaved.

virtual int vtkQuadricClustering::GetUseInternalTriangles  )  [virtual]
 

When this flag is on (and it is on by default), then triangles that are completely contained in a bin are added to the bin quadrics. When the the flag is off the filter operates faster, but the surface may not be as well behaved.

virtual void vtkQuadricClustering::UseInternalTrianglesOn  )  [virtual]
 

When this flag is on (and it is on by default), then triangles that are completely contained in a bin are added to the bin quadrics. When the the flag is off the filter operates faster, but the surface may not be as well behaved.

virtual void vtkQuadricClustering::UseInternalTrianglesOff  )  [virtual]
 

When this flag is on (and it is on by default), then triangles that are completely contained in a bin are added to the bin quadrics. When the the flag is off the filter operates faster, but the surface may not be as well behaved.

void vtkQuadricClustering::StartAppend double *  bounds  ) 
 

These methods provide an alternative way of executing the filter. PolyData can be added to the result in pieces (append). In this mode, the user must specify the bounds of the entire model as an argument to the "StartAppend" method.

void vtkQuadricClustering::StartAppend double  x0,
double  x1,
double  y0,
double  y1,
double  z0,
double  z1
[inline]
 

These methods provide an alternative way of executing the filter. PolyData can be added to the result in pieces (append). In this mode, the user must specify the bounds of the entire model as an argument to the "StartAppend" method.

Definition at line 195 of file vtkQuadricClustering.h.

void vtkQuadricClustering::Append vtkPolyData piece  ) 
 

These methods provide an alternative way of executing the filter. PolyData can be added to the result in pieces (append). In this mode, the user must specify the bounds of the entire model as an argument to the "StartAppend" method.

void vtkQuadricClustering::EndAppend  ) 
 

These methods provide an alternative way of executing the filter. PolyData can be added to the result in pieces (append). In this mode, the user must specify the bounds of the entire model as an argument to the "StartAppend" method.

virtual void vtkQuadricClustering::SetCopyCellData int   )  [virtual]
 

This flag makes the filter copy cell data from input to output (the best it can). It uses input cells that trigger the addition of output cells (no averaging). This is off by default, and does not work when append is being called explicitely (non-pipeline usage).

virtual int vtkQuadricClustering::GetCopyCellData  )  [virtual]
 

This flag makes the filter copy cell data from input to output (the best it can). It uses input cells that trigger the addition of output cells (no averaging). This is off by default, and does not work when append is being called explicitely (non-pipeline usage).

virtual void vtkQuadricClustering::CopyCellDataOn  )  [virtual]
 

This flag makes the filter copy cell data from input to output (the best it can). It uses input cells that trigger the addition of output cells (no averaging). This is off by default, and does not work when append is being called explicitely (non-pipeline usage).

virtual void vtkQuadricClustering::CopyCellDataOff  )  [virtual]
 

This flag makes the filter copy cell data from input to output (the best it can). It uses input cells that trigger the addition of output cells (no averaging). This is off by default, and does not work when append is being called explicitely (non-pipeline usage).

int vtkQuadricClustering::RequestData vtkInformation ,
vtkInformationVector **  ,
vtkInformationVector
[protected, virtual]
 

This is called by the superclass. This is the method you should override.

Reimplemented from vtkPolyDataAlgorithm.

int vtkQuadricClustering::FillInputPortInformation int  ,
vtkInformation
[protected, virtual]
 

Fill the input port information objects for this algorithm. This is invoked by the first call to GetInputPortInformation for each port so subclasses can specify what they can handle.

Reimplemented from vtkPolyDataAlgorithm.

vtkIdType vtkQuadricClustering::HashPoint double  point[3]  )  [protected]
 

Given a point, determine what bin it falls into.

void vtkQuadricClustering::ComputeRepresentativePoint double  quadric[9],
vtkIdType  binId,
double  point[3]
[protected]
 

Determine the representative point for this bin.

void vtkQuadricClustering::AddPolygons vtkCellArray polys,
vtkPoints points,
int  geometryFlag,
vtkPolyData input,
vtkPolyData output
[protected]
 

Add triangles to the quadric array. If geometry flag is on then triangles are added to the output.

void vtkQuadricClustering::AddStrips vtkCellArray strips,
vtkPoints points,
int  geometryFlag,
vtkPolyData input,
vtkPolyData output
[protected]
 

Add triangles to the quadric array. If geometry flag is on then triangles are added to the output.

void vtkQuadricClustering::AddTriangle vtkIdType binIds,
double *  pt0,
double *  pt1,
double *  pt2,
int  geometeryFlag,
vtkPolyData input,
vtkPolyData output
[protected]
 

Add triangles to the quadric array. If geometry flag is on then triangles are added to the output.

void vtkQuadricClustering::AddEdges vtkCellArray edges,
vtkPoints points,
int  geometryFlag,
vtkPolyData input,
vtkPolyData output
[protected]
 

Add edges to the quadric array. If geometry flag is on then edges are added to the output.

void vtkQuadricClustering::AddEdge vtkIdType binIds,
double *  pt0,
double *  pt1,
int  geometeryFlag,
vtkPolyData input,
vtkPolyData output
[protected]
 

Add edges to the quadric array. If geometry flag is on then edges are added to the output.

void vtkQuadricClustering::AddVertices vtkCellArray verts,
vtkPoints points,
int  geometryFlag,
vtkPolyData input,
vtkPolyData output
[protected]
 

Add vertices to the quadric array. If geometry flag is on then vertices are added to the output.

void vtkQuadricClustering::AddVertex vtkIdType  binId,
double *  pt,
int  geometryFlag,
vtkPolyData input,
vtkPolyData output
[protected]
 

Add vertices to the quadric array. If geometry flag is on then vertices are added to the output.

void vtkQuadricClustering::InitializeQuadric double  quadric[9]  )  [protected]
 

Initialize the quadric matrix to 0's.

void vtkQuadricClustering::AddQuadric vtkIdType  binId,
double  quadric[9]
[protected]
 

Add this quadric to the quadric already associated with this bin.

void vtkQuadricClustering::FindFeaturePoints vtkCellArray edges,
vtkPoints edgePts,
double  angle
[protected]
 

Find the feature points of a given set of edges. The points returned are (1) those used by only one edge, (2) those used by > 2 edges, and (3) those where the angle between 2 edges using this point is < angle.

void vtkQuadricClustering::EndAppendUsingPoints vtkPolyData input,
vtkPolyData output
[protected]
 

This method will rep[lace the quadric generated points with the input points with the lowest error.

void vtkQuadricClustering::EndAppendVertexGeometry vtkPolyData input,
vtkPolyData output
[protected]
 

This method sets the verticies of the output. It duplicates the structure of the input cells (but decimiated).

void vtkQuadricClustering::AppendFeatureQuadrics vtkPolyData pd,
vtkPolyData output
[protected]
 


Member Data Documentation

int vtkQuadricClustering::UseInputPoints [protected]
 

Find the feature points of a given set of edges. The points returned are (1) those used by only one edge, (2) those used by > 2 edges, and (3) those where the angle between 2 edges using this point is < angle.

Definition at line 274 of file vtkQuadricClustering.h.

int vtkQuadricClustering::UseFeatureEdges [protected]
 

Definition at line 283 of file vtkQuadricClustering.h.

int vtkQuadricClustering::UseFeaturePoints [protected]
 

Definition at line 284 of file vtkQuadricClustering.h.

int vtkQuadricClustering::UseInternalTriangles [protected]
 

Definition at line 285 of file vtkQuadricClustering.h.

int vtkQuadricClustering::NumberOfXDivisions [protected]
 

Definition at line 287 of file vtkQuadricClustering.h.

int vtkQuadricClustering::NumberOfYDivisions [protected]
 

Definition at line 288 of file vtkQuadricClustering.h.

int vtkQuadricClustering::NumberOfZDivisions [protected]
 

Definition at line 289 of file vtkQuadricClustering.h.

int vtkQuadricClustering::NumberOfDivisions[3] [protected]
 

Definition at line 293 of file vtkQuadricClustering.h.

int vtkQuadricClustering::ComputeNumberOfDivisions [protected]
 

Definition at line 298 of file vtkQuadricClustering.h.

double vtkQuadricClustering::DivisionOrigin[3] [protected]
 

Definition at line 300 of file vtkQuadricClustering.h.

double vtkQuadricClustering::DivisionSpacing[3] [protected]
 

Definition at line 301 of file vtkQuadricClustering.h.

int vtkQuadricClustering::AutoAdjustNumberOfDivisions [protected]
 

Definition at line 302 of file vtkQuadricClustering.h.

double vtkQuadricClustering::Bounds[6] [protected]
 

Definition at line 304 of file vtkQuadricClustering.h.

double vtkQuadricClustering::XBinSize [protected]
 

Definition at line 305 of file vtkQuadricClustering.h.

double vtkQuadricClustering::YBinSize [protected]
 

Definition at line 306 of file vtkQuadricClustering.h.

double vtkQuadricClustering::ZBinSize [protected]
 

Definition at line 307 of file vtkQuadricClustering.h.

vtkIdType vtkQuadricClustering::SliceSize [protected]
 

Definition at line 308 of file vtkQuadricClustering.h.

PointQuadric* vtkQuadricClustering::QuadricArray [protected]
 

Definition at line 324 of file vtkQuadricClustering.h.

vtkIdType vtkQuadricClustering::NumberOfBinsUsed [protected]
 

Definition at line 325 of file vtkQuadricClustering.h.

vtkCellArray* vtkQuadricClustering::OutputTriangleArray [protected]
 

Definition at line 329 of file vtkQuadricClustering.h.

vtkCellArray* vtkQuadricClustering::OutputLines [protected]
 

Definition at line 330 of file vtkQuadricClustering.h.

vtkFeatureEdges* vtkQuadricClustering::FeatureEdges [protected]
 

Definition at line 332 of file vtkQuadricClustering.h.

vtkPoints* vtkQuadricClustering::FeaturePoints [protected]
 

Definition at line 333 of file vtkQuadricClustering.h.

double vtkQuadricClustering::FeaturePointsAngle [protected]
 

Definition at line 334 of file vtkQuadricClustering.h.

int vtkQuadricClustering::CopyCellData [protected]
 

Definition at line 336 of file vtkQuadricClustering.h.

int vtkQuadricClustering::InCellCount [protected]
 

Definition at line 337 of file vtkQuadricClustering.h.

int vtkQuadricClustering::OutCellCount [protected]
 

Definition at line 338 of file vtkQuadricClustering.h.


The documentation for this class was generated from the following file:
Generated on Tue Jan 22 00:12:31 2008 for VTK by  doxygen 1.4.3-20050530