119 #ifndef vtkHyperOctree_h
120 #define vtkHyperOctree_h
122 #include "vtkCommonDataModelModule.h"
127 class vtkHyperOctreeInternal;
130 class vtkHyperOctreeIdSet;
163 void CopyStructure(
vtkDataSet *ds) VTK_OVERRIDE;
183 void SetDimension(
int dim);
200 vtkIdType GetNumberOfCells() VTK_OVERRIDE;
211 vtkIdType GetNumberOfPoints() VTK_OVERRIDE;
235 vtkIdType GetMaxNumberOfPointsOnBoundary(
int level);
243 vtkIdType GetMaxNumberOfCellsOnBoundary(
int level);
257 vtkSetVector3Macro(Size,
double);
264 vtkGetVector3Macro(Size,
double);
271 vtkSetVector3Macro(Origin,
double);
273 vtkGetVector3Macro(Origin,
double);
335 int GetCellType(
vtkIdType cellId) VTK_OVERRIDE;
366 vtkIdType FindPoint(
double x[3]) VTK_OVERRIDE;
380 double tol2,
int& subId,
double pcoords[3],
381 double *weights) VTK_OVERRIDE;
392 double tol2,
int& subId,
double pcoords[3],
393 double *weights) VTK_OVERRIDE;
399 void Initialize() VTK_OVERRIDE;
407 int GetMaxCellSize() VTK_OVERRIDE;
438 void GetPointsOnParentFaces(
int faces[3],
521 void SetDualGridFlag(
int flag);
522 vtkGetMacro(DualGridFlag,
int);
533 unsigned long GetActualMemorySize() VTK_OVERRIDE;
546 ~vtkHyperOctree() VTK_OVERRIDE;
548 void ComputeBounds() VTK_OVERRIDE;
555 vtkHyperOctreeInternal *CellTree;
562 void UpdateDualArrays();
568 void UpdateGridArrays();
574 void DeleteInternalArrays();
576 void TraverseDualRecursively(vtkHyperOctreeLightWeightCursor* neighborhood,
577 unsigned short *xyzIds,
int level);
578 void TraverseGridRecursively(vtkHyperOctreeLightWeightCursor* neighborhood,
579 unsigned char* visited,
580 double* origin,
double*
size);
581 void EvaluateDualCorner(vtkHyperOctreeLightWeightCursor* neighborhood);
582 vtkIdType EvaluateGridCorner(
int level,vtkHyperOctreeLightWeightCursor* neighborhood,
583 unsigned char* visited,
int* cornerNeighborIds);
591 int NeighborhoodTraversalTable[216];
592 void GenerateGridNeighborhoodTraversalTable();
593 void GenerateDualNeighborhoodTraversalTable();
603 vtkIdType RecursiveFindPoint(
double x[3],
604 vtkHyperOctreeLightWeightCursor* cursor,
605 double *origin,
double *size);
612 vtkHyperOctree(const vtkHyperOctree&) VTK_DELETE_FUNCTION;
613 void operator=(const vtkHyperOctree&) VTK_DELETE_FUNCTION;
616 class VTKCOMMONDATAMODEL_EXPORT vtkHyperOctreeLightWeightCursor
619 vtkHyperOctreeLightWeightCursor();
622 void ToChild(
int child);
623 unsigned short GetIsLeaf();
625 vtkHyperOctree*
GetTree() {
return this->Tree; }
628 vtkHyperOctree* Tree;
630 unsigned short IsLeaf;
631 unsigned short Level;
object represents upward pointers from points to list of cells using each point
static vtkDataObject * New()
quickly locate points in 3-space
abstract class to specify dataset behavior
unsigned short GetLevel()
a cell that represents an orthogonal quadrilateral
void DeepCopy(vtkPistonReference *self, vtkPistonReference *other)
An object used by filters to store points computed on face or edge of an hyperoctant.
vtkHyperOctree * GetTree()
helper class to generate triangulations
dynamic, self-adjusting array of vtkIdType
A dataset structured as a tree where each node has exactly 2^n children.
provides thread-safe access to cells
void GetPoint(const int i, const int j, const int k, double pnt[3])
cell represents a 1D line
abstract class to specify cell behavior
a cell that represents a 3D orthogonal parallelepiped
a simple class to control print indentation
list of point or cell ids
int GetDataObjectType() override
Return the type of data object.
a cell that represents an n-sided polygon
represent and manipulate attribute data in a dataset
Objects that can traverse hyperoctree nodes.
void Initialize() override
Restore data object to initial state.
general representation of visualization data
represent and manipulate 3D points
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.