VTK
vtkHyperOctreeCutter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkHyperOctreeCutter.h
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 =========================================================================*/
48 #ifndef vtkHyperOctreeCutter_h
49 #define vtkHyperOctreeCutter_h
50 
51 #include "vtkFiltersHyperTreeModule.h" // For export macro
52 #include "vtkPolyDataAlgorithm.h"
53 
54 #include "vtkContourValues.h" // Needed for inline methods
55 
56 #include "vtkCutter.h" // for VTK_SORT_BY_VALUE and VTK_SORT_BY_CELL
57 
58 //#define VTK_SORT_BY_VALUE 0
59 //#define VTK_SORT_BY_CELL 1
60 // This does not really belong here, ut it is for a temporary
61 // fix until this filter can be converted to geernate unstructured grids.
62 //#define VTK_NUMBER_OF_CELL_TYPES 68
63 
66 class vtkHyperOctree;
69 class vtkTetra;
72 
74 {
75 public:
77  void PrintSelf(ostream& os, vtkIndent indent);
78 
82 
84 
86  void SetValue(int i, double value)
87  {this->ContourValues->SetValue(i,value);}
89 
91 
92  double GetValue(int i)
93  {return this->ContourValues->GetValue(i);}
95 
97 
99  double *GetValues()
100  {return this->ContourValues->GetValues();}
102 
104 
107  void GetValues(double *contourValues)
108  {this->ContourValues->GetValues(contourValues);}
110 
112 
115  void SetNumberOfContours(int number)
116  {this->ContourValues->SetNumberOfContours(number);}
118 
120 
122  {return this->ContourValues->GetNumberOfContours();}
124 
126 
128  void GenerateValues(int numContours, double range[2])
129  {this->ContourValues->GenerateValues(numContours, range);}
131 
133 
135  void GenerateValues(int numContours, double rangeStart, double rangeEnd)
136  {this->ContourValues->GenerateValues(numContours, rangeStart, rangeEnd);}
138 
141  unsigned long GetMTime();
142 
144 
148 
150 
153  vtkSetMacro(GenerateCutScalars,int);
154  vtkGetMacro(GenerateCutScalars,int);
155  vtkBooleanMacro(GenerateCutScalars,int);
157 
159 
164 
166 
177  vtkGetMacro(SortBy,int);
179  {this->SetSortBy(VTK_SORT_BY_VALUE);}
181  {this->SetSortBy(VTK_SORT_BY_CELL);}
183 
185 
186  const char *GetSortByAsString()
187  {
188  if ( this->SortBy == VTK_SORT_BY_VALUE )
189  {
190  return "SortByValue";
191  }
192  else
193  {
194  return "SortByCell";
195  }
196  }
198 
202 
203 protected:
206 
210 
212 
215  int level,
216  double bounds[6]);
218 
220 
221 
223  int SortBy;
226 
229 
230 
234 
239  vtkHyperOctreeCursor *Sibling; // to avoid allocation in the loop
240 
241  int Iter; // iterate over contour values in case of VTK_SORT_BY_CELL
242 
243 
247 
250 
251  vtkIdType CellTypeCounter[65536]; // up-to-65536 points per octant
253  vtkIdType TemplateCounter; // record the number of octants that succceed
254  // to use the template triangulator
255 
256  // in VTK_SORT_BY_VALUE case, rejection test need to combine all values.
257  int *AllLess;
260 
261 private:
262  vtkHyperOctreeCutter(const vtkHyperOctreeCutter&); // Not implemented.
263  void operator=(const vtkHyperOctreeCutter&); // Not implemented.
264 };
265 
266 #endif
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:39
vtkHyperOctreeCutter::OutPD
vtkPointData * OutPD
Definition: vtkHyperOctreeCutter.h:237
vtkHyperOctreeCutter::NewPolys
vtkCellArray * NewPolys
Definition: vtkHyperOctreeCutter.h:233
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkHyperOctreeCutter::RequestUpdateExtent
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
vtkHyperOctreeCutter::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
vtkPointData
represent and manipulate point attribute data
Definition: vtkPointData.h:37
vtkIdType
int vtkIdType
Definition: vtkType.h:275
vtkPolygon
a cell that represents an n-sided polygon
Definition: vtkPolygon.h:45
vtkHyperOctreeCutter::NewVerts
vtkCellArray * NewVerts
Definition: vtkHyperOctreeCutter.h:231
vtkDataSetAttributes
represent and manipulate attribute data in a dataset
Definition: vtkDataSetAttributes.h:58
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:41
vtkHyperOctreeCutter::Tetra
vtkTetra * Tetra
Definition: vtkHyperOctreeCutter.h:245
VTK_SORT_BY_VALUE
#define VTK_SORT_BY_VALUE
Definition: vtkCutter.h:58
vtkHyperOctreeCutter::TetScalars
vtkDoubleArray * TetScalars
Definition: vtkHyperOctreeCutter.h:246
vtkHyperOctreeCutter::Output
vtkPolyData * Output
Definition: vtkHyperOctreeCutter.h:228
vtkHyperOctreeCutter::Grabber
vtkHyperOctreeClipCutPointsGrabber * Grabber
Definition: vtkHyperOctreeCutter.h:259
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkHyperOctreeCursor
Objects that can traverse hyperoctree nodes.
Definition: vtkHyperOctreeCursor.h:51
vtkHyperOctreeCutter::CutFunction
vtkImplicitFunction * CutFunction
Definition: vtkHyperOctreeCutter.h:219
vtkgl::range
GLenum GLint * range
Definition: vtkgl.h:14180
vtkFiltersHyperTreeModule.h
vtkHyperOctreeClipCutPointsGrabber
A concrete implementation of vtkHyperOctreePointsGrabber used by vtkClipHyperOctree and vtkHyperOctre...
Definition: vtkHyperOctreeClipCutPointsGrabber.h:36
vtkOrderedTriangulator
helper class to generate triangulations
Definition: vtkOrderedTriangulator.h:117
vtkHyperOctreeCutter::SetSortByToSortByValue
void SetSortByToSortByValue()
Definition: vtkHyperOctreeCutter.h:178
vtkPolyDataAlgorithm.h
vtkHyperOctreeCutter::Locator
vtkIncrementalPointLocator * Locator
Definition: vtkHyperOctreeCutter.h:222
vtkImplicitFunction
abstract interface for implicit functions
Definition: vtkImplicitFunction.h:58
vtkX3D::port
@ port
Definition: vtkX3D.h:447
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
VTKFILTERSHYPERTREE_EXPORT
#define VTKFILTERSHYPERTREE_EXPORT
Definition: vtkFiltersHyperTreeModule.h:15
vtkHyperOctreeCutter::SetNumberOfContours
void SetNumberOfContours(int number)
Definition: vtkHyperOctreeCutter.h:115
vtkHyperOctreeCutter::~vtkHyperOctreeCutter
~vtkHyperOctreeCutter()
vtkgl::value
GLsizei const GLfloat * value
Definition: vtkgl.h:12021
vtkHyperOctreeCutter::GetValue
double GetValue(int i)
Definition: vtkHyperOctreeCutter.h:92
vtkHyperOctreeCutter::GetSortByAsString
const char * GetSortByAsString()
Definition: vtkHyperOctreeCutter.h:186
vtkHyperOctreeCutter::InCD
vtkDataSetAttributes * InCD
Definition: vtkHyperOctreeCutter.h:235
vtkHyperOctreeCutter::Sibling
vtkHyperOctreeCursor * Sibling
Definition: vtkHyperOctreeCutter.h:239
vtkHyperOctreeCutter::Iter
int Iter
Definition: vtkHyperOctreeCutter.h:241
vtkContourValues
helper object to manage setting and generating contour values
Definition: vtkContourValues.h:35
vtkHyperOctreeCutter::vtkHyperOctreeCutter
vtkHyperOctreeCutter(vtkImplicitFunction *cf=NULL)
vtkCellData
represent and manipulate cell attribute data
Definition: vtkCellData.h:38
vtkHyperOctreeCutter::ContourValues
vtkContourValues * ContourValues
Definition: vtkHyperOctreeCutter.h:224
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkCellArray
object to represent cell connectivity
Definition: vtkCellArray.h:50
vtkHyperOctreeCutter::NewLines
vtkCellArray * NewLines
Definition: vtkHyperOctreeCutter.h:232
vtkIncrementalPointLocator
Abstract class in support of both point location and point insertion.
Definition: vtkIncrementalPointLocator.h:54
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkHyperOctreeCutter::New
static vtkHyperOctreeCutter * New()
vtkHyperOctreeCutter::CellScalars
vtkDoubleArray * CellScalars
Definition: vtkHyperOctreeCutter.h:244
vtkgl::level
GLint level
Definition: vtkgl.h:11316
vtkHyperOctreeCutter::GenerateValues
void GenerateValues(int numContours, double rangeStart, double rangeEnd)
Definition: vtkHyperOctreeCutter.h:135
vtkHyperOctreeCutter::Polygon
vtkPolygon * Polygon
Definition: vtkHyperOctreeCutter.h:249
vtkHyperOctreeCutter::Triangulator
vtkOrderedTriangulator * Triangulator
Definition: vtkHyperOctreeCutter.h:238
vtkHyperOctreeCutter::Input
vtkHyperOctree * Input
Definition: vtkHyperOctreeCutter.h:227
vtkContourValues.h
vtkHyperOctreeCutter::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkHyperOctreeCutter
Cut vtkHyperOctree with user-specified implicit function.
Definition: vtkHyperOctreeCutter.h:74
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkHyperOctreeCutter::AllGreater
int * AllGreater
Definition: vtkHyperOctreeCutter.h:258
vtkX3D::info
@ info
Definition: vtkX3D.h:376
vtkHyperOctreeCutter::SetCutFunction
virtual void SetCutFunction(vtkImplicitFunction *)
vtkHyperOctreeCutter::GenerateCutScalars
int GenerateCutScalars
Definition: vtkHyperOctreeCutter.h:225
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkHyperOctreeCutter::TotalCounter
vtkIdType TotalCounter
Definition: vtkHyperOctreeCutter.h:252
vtkHyperOctreeCutter::FillInputPortInformation
virtual int FillInputPortInformation(int port, vtkInformation *info)
vtkDoubleArray
dynamic, self-adjusting array of double
Definition: vtkDoubleArray.h:49
vtkHyperOctreeCutter::SetLocator
void SetLocator(vtkIncrementalPointLocator *locator)
vtkHyperOctreeCutter::GetNumberOfContours
int GetNumberOfContours()
Definition: vtkHyperOctreeCutter.h:121
vtkCutter.h
vtkHyperOctreeCutter::GetValues
void GetValues(double *contourValues)
Definition: vtkHyperOctreeCutter.h:107
vtkHyperOctree
A dataset structured as a tree where each node has exactly 2^n children.
Definition: vtkHyperOctree.h:143
vtkHyperOctreeCutter::GetValues
double * GetValues()
Definition: vtkHyperOctreeCutter.h:99
vtkTetra
a 3D cell that represents a tetrahedron
Definition: vtkTetra.h:47
vtkHyperOctreeCutter::Pts
vtkPoints * Pts
Definition: vtkHyperOctreeCutter.h:248
vtkHyperOctreeCutter::CreateDefaultLocator
void CreateDefaultLocator()
VTK_SORT_BY_CELL
#define VTK_SORT_BY_CELL
Definition: vtkCutter.h:59
vtkHyperOctreeCutter::SetSortByToSortByCell
void SetSortByToSortByCell()
Definition: vtkHyperOctreeCutter.h:180
vtkHyperOctreeCutter::SortBy
int SortBy
Definition: vtkHyperOctreeCutter.h:223
vtkHyperOctreeCutter::GetMTime
unsigned long GetMTime()
vtkHyperOctreeCutter::AllLess
int * AllLess
Definition: vtkHyperOctreeCutter.h:257
vtkHyperOctreeCutter::OutCD
vtkCellData * OutCD
Definition: vtkHyperOctreeCutter.h:236
vtkHyperOctreeCutter::SetValue
void SetValue(int i, double value)
Definition: vtkHyperOctreeCutter.h:86
vtkHyperOctreeCutter::TemplateCounter
vtkIdType TemplateCounter
Definition: vtkHyperOctreeCutter.h:253
vtkHyperOctreeCutter::CutNode
void CutNode(vtkHyperOctreeCursor *cursor, int level, double bounds[6])
vtkHyperOctreeCutter::GenerateValues
void GenerateValues(int numContours, double range[2])
Definition: vtkHyperOctreeCutter.h:128
vtkPolyDataAlgorithm
Superclass for algorithms that produce only polydata as output.
Definition: vtkPolyDataAlgorithm.h:44