VTK
vtkReebGraph.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: $RCSfile: vtkReebGraph.h,v $
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*----------------------------------------------------------------------------
16  Copyright (c) Sandia Corporation
17  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
18 ----------------------------------------------------------------------------*/
19 
117 #ifndef __vtkReebGraph_h
118 #define __vtkReebGraph_h
119 
120 #include "vtkMutableDirectedGraph.h"
121 
122 class vtkDataArray;
123 class vtkDataSet;
124 class vtkIdList;
125 class vtkPolyData;
126 class vtkReebGraphSimplificationMetric;
127 class vtkUnstructuredGrid;
128 
130 {
131 
132 public:
133 
134  static vtkReebGraph *New();
135 
137  void PrintSelf(ostream& os, vtkIndent indent);
138  void PrintNodeData(ostream& os, vtkIndent indent);
139 
140  enum
141  {
142  ERR_INCORRECT_FIELD = -1,
143  ERR_NO_SUCH_FIELD = -2,
144  ERR_NOT_A_SIMPLICIAL_MESH = -3
145  };
146 
154  int Build(vtkPolyData *mesh, vtkDataArray *scalarField);
155 
161  int Build(vtkUnstructuredGrid *mesh, vtkDataArray *scalarField);
162 
163 
172  int Build(vtkPolyData *mesh, vtkIdType scalarFieldId);
173 
181  int Build(vtkUnstructuredGrid *mesh, vtkIdType scalarFieldId);
182 
183 
192  int Build(vtkPolyData *mesh, const char* scalarFieldName);
193 
201  int Build(vtkUnstructuredGrid *mesh, const char* scalarFieldName);
202 
204 
210  int StreamTriangle( vtkIdType vertex0Id, double scalar0,
211  vtkIdType vertex1Id, double scalar1,
212  vtkIdType vertex2Id, double scalar2);
214 
216 
223  int StreamTetrahedron( vtkIdType vertex0Id, double scalar0,
224  vtkIdType vertex1Id, double scalar1,
225  vtkIdType vertex2Id, double scalar2,
226  vtkIdType vertex3Id, double scalar3);
228 
236  void CloseStream();
237 
238  // Descrition:
239  // Implements deep copy
240  void DeepCopy(vtkDataObject *src);
241 
243 
268  int Simplify(double simplificationThreshold,
269  vtkReebGraphSimplificationMetric *simplificationMetric);
271 
273  void Set(vtkMutableDirectedGraph *g);
274 
275 protected:
276 
277  vtkReebGraph();
278  ~vtkReebGraph();
279 
280  class Implementation;
281  Implementation* Storage;
282 
283 private:
284  vtkReebGraph(const vtkReebGraph&); // Not implemented.
285  void operator=(const vtkReebGraph&); // Not implemented.
286 
287 };
288 
289 #endif
static vtkMutableDirectedGraph * New()
#define VTK_FILTERING_EXPORT
abstract class to specify dataset behavior
Definition: vtkDataSet.h:58
int vtkIdType
Definition: vtkType.h:255
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:81
Reeb graph computation for PL scalar fields.
Definition: vtkReebGraph.h:129
a simple class to control print indentation
Definition: vtkIndent.h:37
list of point or cell ids
Definition: vtkIdList.h:34
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:53
void PrintSelf(ostream &os, vtkIndent indent)
An editable directed graph.
helper class to get VTK data object types as string and instantiate them
Implementation * Storage
Definition: vtkReebGraph.h:280