Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# vtkQuadricClustering Class Reference

`#include <vtkQuadricClustering.h>`

Inheritance diagram for vtkQuadricClustering:

[legend]
Collaboration diagram for vtkQuadricClustering:

[legend]
List of all members.

## Detailed Description

reduce the number of triangles in a mesh

Date:
  2002/11/03 22:51:55

Revision:
  1.33

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.

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.

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

See also:
  vtkDecimatePro vtkDecimate

Created by:
  - Henderson, Amy

CVS contributions (if > 5%):
  - Law, Charles (40%)
  - Henderson, Amy (35%)
  - Martin, Ken (8%)
  - Schroeder, Will (5%)
  - Geveci, Berk (5%)

CVS logs (CVSweb):
  - .`h` (`/Graphics/vtkQuadricClustering.h)`
  - .`cxx` (`/Graphics/vtkQuadricClustering.cxx)`

Tests:
  vtkQuadricClustering (Tests)

Definition at line 93 of file vtkQuadricClustering.h.

## [NOHEADER]

void | EndAppendUsingPoints (vtkPolyData *input)
int | UseInputPoints

## Public Types

typedef vtkPolyDataToPolyDataFilter | Superclass

## Public Methods

virtual const char * | GetClassName ()
virtual int | IsA (const char *type)
void | PrintSelf (ostream &os, vtkIndent indent)
virtual void | SetUseFeatureEdges (int)
virtual int | GetUseFeatureEdges ()
virtual void | UseFeatureEdgesOn ()
virtual void | UseFeatureEdgesOff ()
vtkFeatureEdges * | GetFeatureEdges ()
virtual void | SetUseFeaturePoints (int)
virtual int | GetUseFeaturePoints ()
virtual void | UseFeaturePointsOn ()
virtual void | UseFeaturePointsOff ()
virtual void | SetFeaturePointsAngle (float)
virtual float | GetFeaturePointsAngle ()
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])
int * | GetNumberOfDivisions ()
void | GetNumberOfDivisions (int div[3])
void | SetDivisionOrigin (float x, float y, float z)
void | SetDivisionOrigin (float o[3])
virtual float * | GetDivisionOrigin ()
virtual void | GetDivisionOrigin (float &, float &, float &)
virtual void | GetDivisionOrigin (float[3])
void | SetDivisionSpacing (float x, float y, float z)
void | SetDivisionSpacing (float s[3])
virtual float * | GetDivisionSpacing ()
virtual void | GetDivisionSpacing (float &, float &, float &)
virtual void | GetDivisionSpacing (float[3])
virtual void | SetUseInternalTriangles (int)
virtual int | GetUseInternalTriangles ()
virtual void | UseInternalTrianglesOn ()
virtual void | UseInternalTrianglesOff ()
virtual void | SetUseInputPoints (int)
virtual int | GetUseInputPoints ()
virtual void | UseInputPointsOn ()
virtual void | UseInputPointsOff ()
void | StartAppend (float *bounds)
void | StartAppend (float x0, float x1, float y0, float y1, float z0, float z1)
void | Append (vtkPolyData *piece)
void | EndAppend ()
virtual void | SetCopyCellData (int)
virtual int | GetCopyCellData ()
virtual void | CopyCellDataOn ()
virtual void | CopyCellDataOff ()

## Static Public Methods

int | IsTypeOf (const char *type)
vtkQuadricClustering * | SafeDownCast (vtkObject *o)
vtkQuadricClustering * | New ()

## Protected Methods

| vtkQuadricClustering ()
| ~vtkQuadricClustering ()
void | Execute ()
vtkIdType | HashPoint (float point[3])
void | InitializeQuadric (float quadric[9])
void | AddQuadric (vtkIdType binId, float quadric[9])
void | FindFeaturePoints (vtkCellArray *edges, vtkPoints *edgePts, float angle)
void | EndAppendVertexGeometry (vtkPolyData *input)
void | AppendFeatureQuadrics (vtkPolyData *pd)
void | ComputeRepresentativePoint (float quadric[9], vtkIdType binId, float point[3])
void | AddTriangles (vtkCellArray *tris, vtkPoints *points, int geometryFlag)
void | AddPolygons (vtkCellArray *polys, vtkPoints *points, int geometryFlag)
void | AddTriangle (vtkIdType *binIds, float *pt0, float *pt1, float *pt2, int geometeryFlag)
void | AddEdges (vtkCellArray *edges, vtkPoints *points, int geometryFlag)
void | AddEdge (vtkIdType *binIds, float *pt0, float *pt1, int geometeryFlag)
void | AddVertices (vtkCellArray *verts, vtkPoints *points, int geometryFlag)
void | AddVertex (vtkIdType binId, float *pt, int geometryFlag)

## Protected Attributes

int | UseFeatureEdges
int | UseFeaturePoints
int | UseInternalTriangles
int | NumberOfXDivisions
int | NumberOfYDivisions
int | NumberOfZDivisions
int | NumberOfDivisions [3]
int | ComputeNumberOfDivisions
float | DivisionOrigin [3]
float | DivisionSpacing [3]
float | Bounds [6]
float | XBinSize
float | YBinSize
float | ZBinSize
PointQuadric * | QuadricArray
vtkIdType | NumberOfBinsUsed
vtkCellArray * | OutputTriangleArray
vtkCellArray * | OutputLines
vtkFeatureEdges * | FeatureEdges
vtkPoints * | FeaturePoints
float | FeaturePointsAngle
int | CopyCellData
int | InCellCount
int | OutCellCount

## Member Typedef Documentation

typedef vtkPolyDataToPolyDataFilter vtkQuadricClustering::Superclass

| Reimplemented from vtkPolyDataToPolyDataFilter. Definition at line 96 of file vtkQuadricClustering.h.

## Constructor & Destructor Documentation

vtkQuadricClustering::vtkQuadricClustering | ( |  | ) | `[protected]`

| Use PolyVerticies will cause all of the points

vtkQuadricClustering::~vtkQuadricClustering | ( |  | ) | `[protected]`

## Member Function Documentation

virtual const char* vtkQuadricClustering::GetClassName | ( |  | ) | `[virtual]`

| Reimplemented from vtkPolyDataToPolyDataFilter.

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 vtkPolyDataToPolyDataFilter.

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 vtkPolyDataToPolyDataFilter.

vtkQuadricClustering* vtkQuadricClustering::SafeDownCast | ( | vtkObject * | o | ) | `[static]`

| Reimplemented from vtkPolyDataToPolyDataFilter.

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 vtkPolyDataToPolyDataFilter.

vtkQuadricClustering* vtkQuadricClustering::New | ( |  | ) | `[static]`

| Create an object with Debug turned off, modified time initialized to zero, and reference counting on. Reimplemented from vtkObject.

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 108 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 | ( | float |  | ) | `[virtual]`

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

virtual float vtkQuadricClustering::GetFeaturePointsAngle | ( |  | ) | `[virtual]`

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

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 input has few points.

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 input has few points.

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 input has few points.

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 input has few points.

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 input has few points.

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 input has few points.

void vtkQuadricClustering::SetNumberOfDivisions | ( | 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 input has few points.

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 input has few points.

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 input has few points.

void vtkQuadricClustering::SetDivisionOrigin | ( | float | x,
|  | float | y,
|  | float | 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.

void vtkQuadricClustering::SetDivisionOrigin | ( | float | 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. Definition at line 150 of file vtkQuadricClustering.h.

virtual float* 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.

virtual void vtkQuadricClustering::GetDivisionOrigin | ( | float & | ,
|  | float & | ,
|  | float & |
| ) | `[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.

virtual void vtkQuadricClustering::GetDivisionOrigin | ( | float | [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.

void vtkQuadricClustering::SetDivisionSpacing | ( | float | x,
|  | float | y,
|  | float | 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.

void vtkQuadricClustering::SetDivisionSpacing | ( | float | 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. Definition at line 153 of file vtkQuadricClustering.h.

virtual float* 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.

virtual void vtkQuadricClustering::GetDivisionSpacing | ( | float & | ,
|  | float & | ,
|  | float & |
| ) | `[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.

virtual void vtkQuadricClustering::GetDivisionSpacing | ( | float | [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.

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.

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 when the append methods 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 when the append methods 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 when the append methods 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 when the append methods are being called directly.

void vtkQuadricClustering::StartAppend | ( | float * | 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 | ( | float | x0,
|  | float | x1,
|  | float | y0,
|  | float | y1,
|  | float | z0,
|  | float | 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 184 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).

void vtkQuadricClustering::Execute | ( |  | ) | `[protected, virtual]`

| This method is the old style execute method Reimplemented from vtkSource.

vtkIdType vtkQuadricClustering::HashPoint | ( | float | point[3] | ) | `[protected]`

| Given a point, determine what bin it falls into.

void vtkQuadricClustering::ComputeRepresentativePoint | ( | float | quadric[9],
|  | vtkIdType | binId,
|  | float | point[3]
| ) | `[protected]`

| Determine the representative point for this bin.

void vtkQuadricClustering::AddTriangles | ( | vtkCellArray * | tris,
|  | vtkPoints * | points,
|  | int | geometryFlag
| ) | `[protected]`

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

void vtkQuadricClustering::AddPolygons | ( | vtkCellArray * | polys,
|  | vtkPoints * | points,
|  | int | geometryFlag
| ) | `[protected]`

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

void vtkQuadricClustering::AddTriangle | ( | vtkIdType * | binIds,
|  | float * | pt0,
|  | float * | pt1,
|  | float * | pt2,
|  | int | geometeryFlag
| ) | `[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
| ) | `[protected]`

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

void vtkQuadricClustering::AddEdge | ( | vtkIdType * | binIds,
|  | float * | pt0,
|  | float * | pt1,
|  | int | geometeryFlag
| ) | `[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
| ) | `[protected]`

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

void vtkQuadricClustering::AddVertex | ( | vtkIdType | binId,
|  | float * | pt,
|  | int | geometryFlag
| ) | `[protected]`

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

void vtkQuadricClustering::InitializeQuadric | ( | float | quadric[9] | ) | `[protected]`

| Initialize the quadric matrix to 0's.

void vtkQuadricClustering::AddQuadric | ( | vtkIdType | binId,
|  | float | quadric[9]
| ) | `[protected]`

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

void vtkQuadricClustering::FindFeaturePoints | ( | vtkCellArray * | edges,
|  | vtkPoints * | edgePts,
|  | float | 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 | ) | `[protected]`

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

void vtkQuadricClustering::EndAppendVertexGeometry | ( | vtkPolyData * | input | ) | `[protected]`

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

void vtkQuadricClustering::AppendFeatureQuadrics | ( | vtkPolyData * | pd | ) | `[protected]`

## Member Data Documentation

int vtkQuadricClustering::UseInputPoints`[protected]`

| This method will rep[lace the quadric generated points with the input points with the lowest error. Definition at line 260 of file vtkQuadricClustering.h.

int vtkQuadricClustering::UseFeatureEdges`[protected]`

| Definition at line 269 of file vtkQuadricClustering.h.

int vtkQuadricClustering::UseFeaturePoints`[protected]`

| Definition at line 270 of file vtkQuadricClustering.h.

int vtkQuadricClustering::UseInternalTriangles`[protected]`

| Definition at line 271 of file vtkQuadricClustering.h.

int vtkQuadricClustering::NumberOfXDivisions`[protected]`

| Definition at line 273 of file vtkQuadricClustering.h.

int vtkQuadricClustering::NumberOfYDivisions`[protected]`

| Definition at line 274 of file vtkQuadricClustering.h.

int vtkQuadricClustering::NumberOfZDivisions`[protected]`

| Definition at line 275 of file vtkQuadricClustering.h.

int vtkQuadricClustering::NumberOfDivisions[3]`[protected]`

| Definition at line 279 of file vtkQuadricClustering.h.

int vtkQuadricClustering::ComputeNumberOfDivisions`[protected]`

| Definition at line 284 of file vtkQuadricClustering.h.

float vtkQuadricClustering::DivisionOrigin[3]`[protected]`

| Definition at line 286 of file vtkQuadricClustering.h.

float vtkQuadricClustering::DivisionSpacing[3]`[protected]`

| Definition at line 287 of file vtkQuadricClustering.h.

float vtkQuadricClustering::Bounds[6]`[protected]`

| Definition at line 289 of file vtkQuadricClustering.h.

float vtkQuadricClustering::XBinSize`[protected]`

| Definition at line 290 of file vtkQuadricClustering.h.

float vtkQuadricClustering::YBinSize`[protected]`

| Definition at line 291 of file vtkQuadricClustering.h.

float vtkQuadricClustering::ZBinSize`[protected]`

| Definition at line 292 of file vtkQuadricClustering.h.

PointQuadric* vtkQuadricClustering::QuadricArray`[protected]`

| Definition at line 306 of file vtkQuadricClustering.h.

vtkIdType vtkQuadricClustering::NumberOfBinsUsed`[protected]`

| Definition at line 308 of file vtkQuadricClustering.h.

vtkCellArray* vtkQuadricClustering::OutputTriangleArray`[protected]`

| Definition at line 312 of file vtkQuadricClustering.h.

vtkCellArray* vtkQuadricClustering::OutputLines`[protected]`

| Definition at line 313 of file vtkQuadricClustering.h.

vtkFeatureEdges* vtkQuadricClustering::FeatureEdges`[protected]`

| Definition at line 315 of file vtkQuadricClustering.h.

vtkPoints* vtkQuadricClustering::FeaturePoints`[protected]`

| Definition at line 316 of file vtkQuadricClustering.h.

float vtkQuadricClustering::FeaturePointsAngle`[protected]`

| Definition at line 317 of file vtkQuadricClustering.h.

int vtkQuadricClustering::CopyCellData`[protected]`

| Definition at line 319 of file vtkQuadricClustering.h.

int vtkQuadricClustering::InCellCount`[protected]`

| Definition at line 320 of file vtkQuadricClustering.h.

int vtkQuadricClustering::OutCellCount`[protected]`

| Definition at line 321 of file vtkQuadricClustering.h.

The documentation for this class was generated from the following file:

- Graphics/vtkQuadricClustering.h