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);
336 int GetCellType(
vtkIdType cellId) VTK_OVERRIDE;
367 vtkIdType FindPoint(
double x[3]) VTK_OVERRIDE;
381 double tol2,
int& subId,
double pcoords[3],
382 double *weights) VTK_OVERRIDE;
393 double tol2,
int& subId,
double pcoords[3],
394 double *weights) VTK_OVERRIDE;
400 void Initialize() VTK_OVERRIDE;
408 int GetMaxCellSize() VTK_OVERRIDE;
439 void GetPointsOnParentFaces(
int faces[3],
522 void SetDualGridFlag(
int flag);
523 vtkGetMacro(DualGridFlag,
int);
534 unsigned long GetActualMemorySize() VTK_OVERRIDE;
547 ~vtkHyperOctree() VTK_OVERRIDE;
549 void ComputeBounds() VTK_OVERRIDE;
556 vtkHyperOctreeInternal *CellTree;
563 void UpdateDualArrays();
569 void UpdateGridArrays();
575 void DeleteInternalArrays();
577 void TraverseDualRecursively(vtkHyperOctreeLightWeightCursor* neighborhood,
578 unsigned short *xyzIds,
int level);
579 void TraverseGridRecursively(vtkHyperOctreeLightWeightCursor* neighborhood,
580 unsigned char* visited,
581 double* origin,
double*
size);
582 void EvaluateDualCorner(vtkHyperOctreeLightWeightCursor* neighborhood);
583 vtkIdType EvaluateGridCorner(
int level,vtkHyperOctreeLightWeightCursor* neighborhood,
584 unsigned char* visited,
int* cornerNeighborIds);
592 int NeighborhoodTraversalTable[216];
593 void GenerateGridNeighborhoodTraversalTable();
594 void GenerateDualNeighborhoodTraversalTable();
604 vtkIdType RecursiveFindPoint(
double x[3],
605 vtkHyperOctreeLightWeightCursor* cursor,
606 double *origin,
double *size);
613 vtkHyperOctree(const vtkHyperOctree&) VTK_DELETE_FUNCTION;
614 void operator=(const vtkHyperOctree&) VTK_DELETE_FUNCTION;
617 class VTKCOMMONDATAMODEL_EXPORT vtkHyperOctreeLightWeightCursor
620 vtkHyperOctreeLightWeightCursor();
623 void ToChild(
int child);
624 unsigned short GetIsLeaf();
626 vtkHyperOctree*
GetTree() {
return this->Tree; }
629 vtkHyperOctree* Tree;
631 unsigned short IsLeaf;
632 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
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.