VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
vtkHyperOctree Class Reference

A dataset structured as a tree where each node has exactly 2^n children. More...

#include <vtkHyperOctree.h>

Inheritance diagram for vtkHyperOctree:
[legend]
Collaboration diagram for vtkHyperOctree:
[legend]

Public Types

typedef vtkDataSet Superclass
 
- Public Types inherited from vtkDataSet
enum  FieldDataType { DATA_OBJECT_FIELD =0, POINT_DATA_FIELD =1, CELL_DATA_FIELD =2 }
 
typedef vtkDataObject Superclass
 
- Public Types inherited from vtkDataObject
typedef vtkObject Superclass
 
enum  FieldAssociations {
  FIELD_ASSOCIATION_POINTS, FIELD_ASSOCIATION_CELLS, FIELD_ASSOCIATION_NONE, FIELD_ASSOCIATION_POINTS_THEN_CELLS,
  FIELD_ASSOCIATION_VERTICES, FIELD_ASSOCIATION_EDGES, FIELD_ASSOCIATION_ROWS, NUMBER_OF_ASSOCIATIONS
}
 
enum  AttributeTypes {
  POINT, CELL, FIELD, POINT_THEN_CELL,
  VERTEX, EDGE, ROW, NUMBER_OF_ATTRIBUTE_TYPES
}
 
enum  FieldOperations { FIELD_OPERATION_PRESERVED, FIELD_OPERATION_REINTERPOLATED, FIELD_OPERATION_MODIFIED, FIELD_OPERATION_REMOVED }
 
- Public Types inherited from vtkObject
typedef vtkObjectBase Superclass
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkHyperOctreeNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
int GetDataObjectType ()
 
void CopyStructure (vtkDataSet *ds)
 
int GetDimension ()
 
void SetDimension (int dim)
 
vtkIdType GetNumberOfCells ()
 
vtkIdType GetNumberOfLeaves ()
 
vtkIdType GetNumberOfPoints ()
 
vtkIdType GetMaxNumberOfPoints (int level)
 
vtkIdType GetMaxNumberOfPointsOnBoundary (int level)
 
vtkIdType GetMaxNumberOfCellsOnBoundary (int level)
 
vtkIdType GetNumberOfLevels ()
 
vtkHyperOctreeCursorNewCellCursor ()
 
void SubdivideLeaf (vtkHyperOctreeCursor *leaf)
 
void CollapseTerminalNode (vtkHyperOctreeCursor *node)
 
virtual doubleGetPoint (vtkIdType ptId)
 
virtual void GetPoint (vtkIdType id, double x[3])
 
virtual vtkCellGetCell (vtkIdType cellId)
 
virtual void GetCell (vtkIdType cellId, vtkGenericCell *cell)
 
virtual int GetCellType (vtkIdType cellId)
 
virtual void GetPointCells (vtkIdType ptId, vtkIdList *cellIds)
 
virtual vtkIdType FindPoint (double x[3])
 
void Initialize ()
 
virtual int GetMaxCellSize ()
 
vtkDataSetAttributesGetLeafData ()
 
unsigned long GetActualMemorySize ()
 
virtual void SetSize (double, double, double)
 
virtual void SetSize (double[3])
 
virtual doubleGetSize ()
 
virtual void GetSize (double &, double &, double &)
 
virtual void GetSize (double[3])
 
virtual void SetOrigin (double, double, double)
 
virtual void SetOrigin (double[3])
 
virtual doubleGetOrigin ()
 
virtual void GetOrigin (double &, double &, double &)
 
virtual void GetOrigin (double[3])
 
virtual void GetCellPoints (vtkIdType cellId, vtkIdList *ptIds)
 
virtual void GetCellPoints (vtkIdType cellId, vtkIdType &npts, vtkIdType *&pts)
 
virtual void GetCellNeighbors (vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds)
 
virtual vtkIdType FindCell (double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)
 
virtual vtkIdType FindCell (double x[3], vtkCell *cell, vtkGenericCell *gencell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)
 
void ShallowCopy (vtkDataObject *src)
 
void DeepCopy (vtkDataObject *src)
 
void GetPointsOnFace (vtkHyperOctreeCursor *sibling, int face, int level, vtkHyperOctreePointsGrabber *grabber)
 
void GetPointsOnParentFaces (int faces[3], int level, vtkHyperOctreeCursor *cursor, vtkHyperOctreePointsGrabber *grabber)
 
void GetPointsOnEdge (vtkHyperOctreeCursor *sibling, int level, int axis, int k, int j, vtkHyperOctreePointsGrabber *grabber)
 
void GetPointsOnParentEdge (vtkHyperOctreeCursor *cursor, int level, int axis, int k, int j, vtkHyperOctreePointsGrabber *grabber)
 
void GetPointsOnEdge2D (vtkHyperOctreeCursor *sibling, int edge, int level, vtkHyperOctreePointsGrabber *grabber)
 
void GetPointsOnParentEdge2D (vtkHyperOctreeCursor *cursor, int edge, int level, vtkHyperOctreePointsGrabber *grabber)
 
void SetDualGridFlag (int flag)
 
virtual int GetDualGridFlag ()
 
- Public Member Functions inherited from vtkDataSet
vtkDataSetNewInstance () const
 
virtual void CopyAttributes (vtkDataSet *ds)
 
virtual vtkCellIteratorNewCellIterator ()
 
virtual void GetCellBounds (vtkIdType cellId, double bounds[6])
 
virtual void GetCellTypes (vtkCellTypes *types)
 
unsigned long int GetMTime ()
 
vtkCellDataGetCellData ()
 
vtkPointDataGetPointData ()
 
virtual void Squeeze ()
 
doubleGetBounds ()
 
void GetBounds (double bounds[6])
 
doubleGetCenter ()
 
void GetCenter (double center[3])
 
double GetLength ()
 
virtual void GetScalarRange (double range[2])
 
doubleGetScalarRange ()
 
int CheckAttributes ()
 
virtual vtkFieldDataGetAttributesAsFieldData (int type)
 
virtual vtkIdType GetNumberOfElements (int type)
 
bool HasAnyGhostCells ()
 
bool HasAnyGhostPoints ()
 
vtkUnsignedCharArrayGetPointGhostArray ()
 
void UpdatePointGhostArrayCache ()
 
vtkUnsignedCharArrayAllocatePointGhostArray ()
 
vtkUnsignedCharArrayGetCellGhostArray ()
 
void UpdateCellGhostArrayCache ()
 
vtkUnsignedCharArrayAllocateCellGhostArray ()
 
vtkIdType FindPoint (double x, double y, double z)
 
virtual vtkCellFindAndGetCell (double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)
 
virtual void GenerateGhostArray (int zeroExt[6])
 
virtual void GenerateGhostArray (int zeroExt[6], bool cellOnly)
 
virtual bool HasAnyBlankCells ()
 
virtual bool HasAnyBlankPoints ()
 
- Public Member Functions inherited from vtkDataObject
vtkDataObjectNewInstance () const
 
void ReleaseData ()
 
unsigned long GetUpdateTime ()
 
virtual void CopyInformationToPipeline (vtkInformation *vtkNotUsed(info))
 
void DataHasBeenGenerated ()
 
virtual void PrepareForNewData ()
 
virtual int GetExtentType ()
 
virtual void Crop (const int *updateExtent)
 
virtual vtkDataSetAttributesGetAttributes (int type)
 
virtual int GetAttributeTypeForArray (vtkAbstractArray *arr)
 
virtual vtkInformationGetInformation ()
 
virtual void SetInformation (vtkInformation *)
 
virtual int GetDataReleased ()
 
virtual void SetFieldData (vtkFieldData *)
 
virtual vtkFieldDataGetFieldData ()
 
virtual void CopyInformationFromPipeline (vtkInformation *vtkNotUsed(info))
 
void GlobalReleaseDataFlagOn ()
 
void GlobalReleaseDataFlagOff ()
 
- Public Member Functions inherited from vtkObject
vtkObjectNewInstance () const
 
virtual void DebugOn ()
 
virtual void DebugOff ()
 
bool GetDebug ()
 
void SetDebug (bool debugFlag)
 
virtual void Modified ()
 
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
 
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
 
vtkCommandGetCommand (unsigned long tag)
 
void RemoveObserver (vtkCommand *)
 
void RemoveObservers (unsigned long event, vtkCommand *)
 
void RemoveObservers (const char *event, vtkCommand *)
 
int HasObserver (unsigned long event, vtkCommand *)
 
int HasObserver (const char *event, vtkCommand *)
 
void RemoveObserver (unsigned long tag)
 
void RemoveObservers (unsigned long event)
 
void RemoveObservers (const char *event)
 
void RemoveAllObservers ()
 
int HasObserver (unsigned long event)
 
int HasObserver (const char *event)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
int InvokeEvent (unsigned long event, void *callData)
 
int InvokeEvent (const char *event, void *callData)
 
int InvokeEvent (unsigned long event)
 
int InvokeEvent (const char *event)
 
- Public Member Functions inherited from vtkObjectBase
const char * GetClassName () const
 
virtual void Delete ()
 
virtual void FastDelete ()
 
void Print (ostream &os)
 
virtual void Register (vtkObjectBase *o)
 
virtual void UnRegister (vtkObjectBase *o)
 
void SetReferenceCount (int)
 
void PrintRevisions (ostream &)
 
virtual void PrintHeader (ostream &os, vtkIndent indent)
 
virtual void PrintTrailer (ostream &os, vtkIndent indent)
 
int GetReferenceCount ()
 

Static Public Member Functions

static vtkInformationIntegerKeyLEVELS ()
 
static vtkInformationIntegerKeyDIMENSION ()
 
static vtkInformationDoubleVectorKeySIZES ()
 
static vtkHyperOctreeNew ()
 
static int IsTypeOf (const char *type)
 
static vtkHyperOctreeSafeDownCast (vtkObjectBase *o)
 
static vtkHyperOctreeGetData (vtkInformation *info)
 
static vtkHyperOctreeGetData (vtkInformationVector *v, int i=0)
 
- Static Public Member Functions inherited from vtkDataSet
static int IsTypeOf (const char *type)
 
static vtkDataSetSafeDownCast (vtkObjectBase *o)
 
static vtkDataSetGetData (vtkInformation *info)
 
static vtkDataSetGetData (vtkInformationVector *v, int i=0)
 
- Static Public Member Functions inherited from vtkDataObject
static vtkDataObjectNew ()
 
static int IsTypeOf (const char *type)
 
static vtkDataObjectSafeDownCast (vtkObjectBase *o)
 
static const char * GetAssociationTypeAsString (int associationType)
 
static int GetAssociationTypeFromString (const char *associationType)
 
static vtkInformationStringKeyDATA_TYPE_NAME ()
 
static vtkInformationDataObjectKeyDATA_OBJECT ()
 
static vtkInformationIntegerKeyDATA_EXTENT_TYPE ()
 
static vtkInformationIntegerPointerKeyDATA_EXTENT ()
 
static vtkInformationIntegerVectorKeyALL_PIECES_EXTENT ()
 
static vtkInformationIntegerKeyDATA_PIECE_NUMBER ()
 
static vtkInformationIntegerKeyDATA_NUMBER_OF_PIECES ()
 
static vtkInformationIntegerKeyDATA_NUMBER_OF_GHOST_LEVELS ()
 
static vtkInformationDoubleKeyDATA_TIME_STEP ()
 
static vtkInformationInformationVectorKeyPOINT_DATA_VECTOR ()
 
static vtkInformationInformationVectorKeyCELL_DATA_VECTOR ()
 
static vtkInformationInformationVectorKeyVERTEX_DATA_VECTOR ()
 
static vtkInformationInformationVectorKeyEDGE_DATA_VECTOR ()
 
static vtkInformationIntegerKeyFIELD_ARRAY_TYPE ()
 
static vtkInformationIntegerKeyFIELD_ASSOCIATION ()
 
static vtkInformationIntegerKeyFIELD_ATTRIBUTE_TYPE ()
 
static vtkInformationIntegerKeyFIELD_ACTIVE_ATTRIBUTE ()
 
static vtkInformationIntegerKeyFIELD_NUMBER_OF_COMPONENTS ()
 
static vtkInformationIntegerKeyFIELD_NUMBER_OF_TUPLES ()
 
static vtkInformationIntegerKeyFIELD_OPERATION ()
 
static vtkInformationDoubleVectorKeyFIELD_RANGE ()
 
static vtkInformationIntegerVectorKeyPIECE_EXTENT ()
 
static vtkInformationStringKeyFIELD_NAME ()
 
static vtkInformationDoubleVectorKeyORIGIN ()
 
static vtkInformationDoubleVectorKeySPACING ()
 
static vtkInformationDoubleVectorKeyBOUNDING_BOX ()
 
static vtkInformationDataObjectKeySIL ()
 
static vtkInformationGetActiveFieldInformation (vtkInformation *info, int fieldAssociation, int attributeType)
 
static vtkInformationGetNamedFieldInformation (vtkInformation *info, int fieldAssociation, const char *name)
 
static void RemoveNamedFieldInformation (vtkInformation *info, int fieldAssociation, const char *name)
 
static vtkInformationSetActiveAttribute (vtkInformation *info, int fieldAssociation, const char *attributeName, int attributeType)
 
static void SetActiveAttributeInfo (vtkInformation *info, int fieldAssociation, int attributeType, const char *name, int arrayType, int numComponents, int numTuples)
 
static void SetPointDataActiveScalarInfo (vtkInformation *info, int arrayType, int numComponents)
 
static vtkDataObjectGetData (vtkInformation *info)
 
static vtkDataObjectGetData (vtkInformationVector *v, int i=0)
 
static void SetGlobalReleaseDataFlag (int val)
 
static int GetGlobalReleaseDataFlag ()
 
- Static Public Member Functions inherited from vtkObject
static int IsTypeOf (const char *type)
 
static vtkObjectSafeDownCast (vtkObjectBase *o)
 
static vtkObjectNew ()
 
static void BreakOnError ()
 
static void SetGlobalWarningDisplay (int val)
 
static void GlobalWarningDisplayOn ()
 
static void GlobalWarningDisplayOff ()
 
static int GetGlobalWarningDisplay ()
 
- Static Public Member Functions inherited from vtkObjectBase
static int IsTypeOf (const char *name)
 
static vtkObjectBaseNew ()
 

Protected Member Functions

virtual vtkObjectBaseNewInstanceInternal () const
 
 vtkHyperOctree ()
 
 ~vtkHyperOctree ()
 
void ComputeBounds ()
 
void UpdateDualArrays ()
 
vtkPointsGetLeafCenters ()
 
vtkIdTypeArrayGetCornerLeafIds ()
 
void UpdateGridArrays ()
 
vtkPointsGetCornerPoints ()
 
vtkIdTypeArrayGetLeafCornerIds ()
 
void DeleteInternalArrays ()
 
void TraverseDualRecursively (vtkHyperOctreeLightWeightCursor *neighborhood, unsigned short *xyzIds, int level)
 
void TraverseGridRecursively (vtkHyperOctreeLightWeightCursor *neighborhood, unsigned char *visited, double *origin, double *size)
 
void EvaluateDualCorner (vtkHyperOctreeLightWeightCursor *neighborhood)
 
vtkIdType EvaluateGridCorner (int level, vtkHyperOctreeLightWeightCursor *neighborhood, unsigned char *visited, int *cornerNeighborIds)
 
void GenerateGridNeighborhoodTraversalTable ()
 
void GenerateDualNeighborhoodTraversalTable ()
 
void BuildLinks ()
 
vtkIdType RecursiveFindPoint (double x[3], vtkHyperOctreeLightWeightCursor *cursor, double *origin, double *size)
 
- Protected Member Functions inherited from vtkDataSet
 vtkDataSet ()
 
 ~vtkDataSet ()
 
virtual void ComputeScalarRange ()
 
bool IsAnyBitSet (vtkUnsignedCharArray *a, int bitFlag)
 
- Protected Member Functions inherited from vtkDataObject
 vtkDataObject ()
 
 ~vtkDataObject ()
 
- Protected Member Functions inherited from vtkObject
 vtkObject ()
 
virtual ~vtkObject ()
 
virtual void RegisterInternal (vtkObjectBase *, int check)
 
virtual void UnRegisterInternal (vtkObjectBase *, int check)
 
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
 
void InternalReleaseFocus ()
 
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
 
virtual ~vtkObjectBase ()
 
virtual void CollectRevisions (ostream &)
 
virtual void ReportReferences (vtkGarbageCollector *)
 
 vtkObjectBase (const vtkObjectBase &)
 
void operator= (const vtkObjectBase &)
 

Protected Attributes

int Dimension
 
double Size [3]
 
double Origin [3]
 
vtkHyperOctreeInternal * CellTree
 
vtkHyperOctreeCursorTmpChild
 
vtkPointsLeafCenters
 
vtkIdTypeArrayCornerLeafIds
 
vtkPointsCornerPoints
 
vtkIdTypeArrayLeafCornerIds
 
int NeighborhoodTraversalTable [216]
 
vtkLineLine
 
vtkPixelPixel
 
vtkVoxelVoxel
 
vtkCellLinksLinks
 
int DualGridFlag
 
- Protected Attributes inherited from vtkDataSet
vtkCellDataCellData
 
vtkPointDataPointData
 
vtkCallbackCommandDataObserver
 
vtkTimeStamp ComputeTime
 
double Bounds [6]
 
double Center [3]
 
double ScalarRange [2]
 
vtkTimeStamp ScalarRangeComputeTime
 
vtkUnsignedCharArrayPointGhostArray
 
vtkUnsignedCharArrayCellGhostArray
 
bool PointGhostArrayCached
 
bool CellGhostArrayCached
 
- Protected Attributes inherited from vtkDataObject
vtkFieldDataFieldData
 
int DataReleased
 
vtkTimeStamp UpdateTime
 
vtkInformationInformation
 
- Protected Attributes inherited from vtkObject
bool Debug
 
vtkTimeStamp MTime
 
vtkSubjectHelper * SubjectHelper
 
- Protected Attributes inherited from vtkObjectBase
vtkAtomicInt32 ReferenceCount
 
vtkWeakPointerBase ** WeakPointers
 

Friends

class vtkHyperOctreeLightWeightCursor
 

Detailed Description

A dataset structured as a tree where each node has exactly 2^n children.

An hyperoctree is a dataset where each node has either exactly 2^n children or no child at all if the node is a leaf. `n' is the dimension of the dataset (1 (binary tree), 2 (quadtree) or 3 (octree) ). The class name comes from the following paper:

@ARTICLE{yau-srihari-1983,
 author={Mann-May Yau and Sargur N. Srihari},
 title={A Hierarchical Data Structure for Multidimensional Digital Images},
 journal={Communications of the ACM},
 month={July},
 year={1983},
 volume={26},
 number={7},
 pages={504--515}
 }

Each node is a cell. Attributes are associated with cells, not with points. The geometry is implicitly given by the size of the root node on each axis and position of the center and the orientation. (TODO: review center position and orientation). The geometry is then not limited to an hybercube but can have a rectangular shape. Attributes are associated with leaves. For LOD (Level-Of-Detail) purpose, attributes can be computed on none-leaf nodes by computing the average values from its children (which can be leaves or not).

By construction, an hyperoctree is efficient in memory usage when the geometry is sparse. The LOD feature allows to cull quickly part of the dataset.

A couple of filters can be applied on this dataset: contour, outline, geometry.

3D case (octree) for each node, each child index (from 0 to 7) is encoded in the following orientation. It is easy to access each child as a cell of a grid. Note also that the binary representation is relevant, each bit code a side: bit 0 encodes -x side (0) or +x side (1) bit 1 encodes -y side (0) or +y side (1) bit 2 encodes -z side (0) or +z side (2)

The cases with fewer dimensions are consistent with the octree case:

Quadtree: in counter-clockwise

Definition at line 142 of file vtkHyperOctree.h.

Member Typedef Documentation

Definition at line 150 of file vtkHyperOctree.h.

Constructor & Destructor Documentation

vtkHyperOctree::vtkHyperOctree ( )
protected
vtkHyperOctree::~vtkHyperOctree ( )
protected

Member Function Documentation

static vtkInformationIntegerKey* vtkHyperOctree::LEVELS ( )
static
static vtkInformationIntegerKey* vtkHyperOctree::DIMENSION ( )
static
static vtkInformationDoubleVectorKey* vtkHyperOctree::SIZES ( )
static
static vtkHyperOctree* vtkHyperOctree::New ( )
static
static int vtkHyperOctree::IsTypeOf ( const char *  type)
static
virtual int vtkHyperOctree::IsA ( const char *  name)
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 vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkDataSet.

static vtkHyperOctree* vtkHyperOctree::SafeDownCast ( vtkObjectBase o)
static
virtual vtkObjectBase* vtkHyperOctree::NewInstanceInternal ( ) const
protectedvirtual

Reimplemented from vtkDataSet.

vtkHyperOctree* vtkHyperOctree::NewInstance ( ) const
void vtkHyperOctree::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 vtkDataSet.

int vtkHyperOctree::GetDataObjectType ( )
virtual

Return what type of dataset this is.

Reimplemented from vtkDataSet.

void vtkHyperOctree::CopyStructure ( vtkDataSet ds)
virtual

Copy the geometric and topological structure of an input rectilinear grid object.

Implements vtkDataSet.

int vtkHyperOctree::GetDimension ( )

Return the dimension of the tree (1D:binary tree(2 children), 2D:quadtree(4 children), 3D:octree (8 children))

Postcondition
valid_result: result>=1 && result<=3
void vtkHyperOctree::SetDimension ( int  dim)

Set the dimension of the tree with `dim'. See GetDimension() for details.

Precondition
valid_dim: dim>=1 && dim<=3
Postcondition
dimension_is_set: GetDimension()==dim
vtkIdType vtkHyperOctree::GetNumberOfCells ( )
virtual

Return the number of cells in the dual grid.

Postcondition
positive_result: result>=0

Implements vtkDataSet.

vtkIdType vtkHyperOctree::GetNumberOfLeaves ( )

Get the number of leaves in the tree.

vtkIdType vtkHyperOctree::GetNumberOfPoints ( )
virtual

Return the number of points in the dual grid.

Postcondition
positive_result: result>=0

Implements vtkDataSet.

vtkIdType vtkHyperOctree::GetMaxNumberOfPoints ( int  level)

Return the number of points corresponding to an hyperoctree starting at level `level' where all the leaves at at the last level. In this case, the hyperoctree is like a uniform grid. So this number is the number of points of the uniform grid.

Precondition
positive_level: level>=0 && level<this->GetNumberOfLevels()
Postcondition
definition: result==(2^(GetNumberOfLevels()-level-1)+1)^GetDimension()
vtkIdType vtkHyperOctree::GetMaxNumberOfPointsOnBoundary ( int  level)

Return the number of points corresponding to the boundary of an hyperoctree starting at level `level' where all the leaves at at the last level. In this case, the hyperoctree is like a uniform grid. So this number is the number of points of on the boundary of the uniform grid. For an octree, the boundary are the faces. For a quadtree, the boundary are the edges.

Precondition
2d_or_3d: this->GetDimension()==2 || this->GetDimension()==3
positive_level: level>=0 && level<this->GetNumberOfLevels()
Postcondition
min_result: result>=GetMaxNumberOfPoints(this->GetNumberOfLevels()-1)
max_result: result<=GetMaxNumberOfPoints(level)
vtkIdType vtkHyperOctree::GetMaxNumberOfCellsOnBoundary ( int  level)

Return the number of cells corresponding to the boundary of a cell of level `level' where all the leaves at at the last level.

Precondition
positive_level: level>=0 && level<this->GetNumberOfLevels()
Postcondition
positive_result: result>=0
vtkIdType vtkHyperOctree::GetNumberOfLevels ( )

Return the number of levels.

Postcondition
result_greater_or_equal_to_one: result>=1
virtual void vtkHyperOctree::SetSize ( double  ,
double  ,
double   
)
virtual

Set the size on each axis.

virtual void vtkHyperOctree::SetSize ( double  [3])
virtual

Set the size on each axis.

virtual double* vtkHyperOctree::GetSize ( )
virtual

Return the size on each axis.

virtual void vtkHyperOctree::GetSize ( double ,
double ,
double  
)
virtual

Return the size on each axis.

virtual void vtkHyperOctree::GetSize ( double  [3])
virtual

Return the size on each axis.

virtual void vtkHyperOctree::SetOrigin ( double  ,
double  ,
double   
)
virtual

Set the origin (position of corner (0,0,0) of the root.

virtual void vtkHyperOctree::SetOrigin ( double  [3])
virtual

Set the origin (position of corner (0,0,0) of the root.

virtual double* vtkHyperOctree::GetOrigin ( )
virtual

Set the origin (position of corner (0,0,0) of the root.

virtual void vtkHyperOctree::GetOrigin ( double ,
double ,
double  
)
virtual

Set the origin (position of corner (0,0,0) of the root.

virtual void vtkHyperOctree::GetOrigin ( double  [3])
virtual

Set the origin (position of corner (0,0,0) of the root.

vtkHyperOctreeCursor* vtkHyperOctree::NewCellCursor ( )

Create a new cursor: an object that can traverse the cell of an hyperoctree.

Postcondition
result_exists: result!=0
void vtkHyperOctree::SubdivideLeaf ( vtkHyperOctreeCursor leaf)

Subdivide node pointed by cursor, only if its a leaf. At the end, cursor points on the node that used to be leaf.

Precondition
leaf_exists: leaf!=0
is_a_leaf: leaf->CurrentIsLeaf()
void vtkHyperOctree::CollapseTerminalNode ( vtkHyperOctreeCursor node)

Collapse a node for which all children are leaves. At the end, cursor points on the leaf that used to be a node.

Precondition
node_exists: node!=0
node_is_node: !node->CurrentIsLeaf()
children_are_leaves: node->CurrentIsTerminalNode()
virtual double* vtkHyperOctree::GetPoint ( vtkIdType  ptId)
virtual

Get point coordinates with ptId such that: 0 <= ptId < NumberOfPoints. THIS METHOD IS NOT THREAD SAFE.

Implements vtkDataSet.

virtual void vtkHyperOctree::GetPoint ( vtkIdType  id,
double  x[3] 
)
virtual

Copy point coordinates into user provided array x[3] for specified point id. THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED

Reimplemented from vtkDataSet.

virtual vtkCell* vtkHyperOctree::GetCell ( vtkIdType  cellId)
virtual

Get cell with cellId such that: 0 <= cellId < NumberOfCells. THIS METHOD IS NOT THREAD SAFE.

Implements vtkDataSet.

virtual void vtkHyperOctree::GetCell ( vtkIdType  cellId,
vtkGenericCell cell 
)
virtual

Get cell with cellId such that: 0 <= cellId < NumberOfCells. This is a thread-safe alternative to the previous GetCell() method. THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED

Implements vtkDataSet.

virtual int vtkHyperOctree::GetCellType ( vtkIdType  cellId)
virtual

Get type of cell with cellId such that: 0 <= cellId < NumberOfCells. THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED

Implements vtkDataSet.

virtual void vtkHyperOctree::GetCellPoints ( vtkIdType  cellId,
vtkIdList ptIds 
)
virtual

Topological inquiry to get points defining cell. THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED

Implements vtkDataSet.

virtual void vtkHyperOctree::GetCellPoints ( vtkIdType  cellId,
vtkIdType npts,
vtkIdType *&  pts 
)
virtual

Topological inquiry to get points defining cell. THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED

virtual void vtkHyperOctree::GetPointCells ( vtkIdType  ptId,
vtkIdList cellIds 
)
virtual

Topological inquiry to get cells using point. THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED

Implements vtkDataSet.

virtual void vtkHyperOctree::GetCellNeighbors ( vtkIdType  cellId,
vtkIdList ptIds,
vtkIdList cellIds 
)
virtual

Topological inquiry to get all cells using list of points exclusive of cell specified (e.g., cellId). Note that the list consists of only cells that use ALL the points provided. THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED

Reimplemented from vtkDataSet.

virtual vtkIdType vtkHyperOctree::FindPoint ( double  x[3])
virtual

Locate the closest point to the global coordinate x. Return the point id. If point id < 0; then no point found. (This may arise when point is outside of dataset.) THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED

Implements vtkDataSet.

virtual vtkIdType vtkHyperOctree::FindCell ( double  x[3],
vtkCell cell,
vtkIdType  cellId,
double  tol2,
int subId,
double  pcoords[3],
double weights 
)
virtual

Locate cell based on global coordinate x and tolerance squared. If cell and cellId is non-NULL, then search starts from this cell and looks at immediate neighbors. Returns cellId >= 0 if inside, < 0 otherwise. The parametric coordinates are provided in pcoords[3]. The interpolation weights are returned in weights[]. (The number of weights is equal to the number of points in the found cell). Tolerance is used to control how close the point is to be considered "in" the cell. THIS METHOD IS NOT THREAD SAFE.

Implements vtkDataSet.

virtual vtkIdType vtkHyperOctree::FindCell ( double  x[3],
vtkCell cell,
vtkGenericCell gencell,
vtkIdType  cellId,
double  tol2,
int subId,
double  pcoords[3],
double weights 
)
virtual

This is a version of the above method that can be used with multithreaded applications. A vtkGenericCell must be passed in to be used in internal calls that might be made to GetCell() THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED

Implements vtkDataSet.

void vtkHyperOctree::Initialize ( )
virtual

Restore data object to initial state, THIS METHOD IS NOT THREAD SAFE.

Reimplemented from vtkDataSet.

virtual int vtkHyperOctree::GetMaxCellSize ( )
virtual

Convenience method returns largest cell size in dataset. This is generally used to allocate memory for supporting data structures. This is the number of points of a cell. THIS METHOD IS THREAD SAFE

Implements vtkDataSet.

void vtkHyperOctree::ShallowCopy ( vtkDataObject src)
virtual

Shallow and Deep copy.

Reimplemented from vtkDataSet.

void vtkHyperOctree::DeepCopy ( vtkDataObject src)
virtual

Shallow and Deep copy.

Reimplemented from vtkDataSet.

void vtkHyperOctree::GetPointsOnFace ( vtkHyperOctreeCursor sibling,
int  face,
int  level,
vtkHyperOctreePointsGrabber grabber 
)

Get the points of node `sibling' on its face `face'.

Precondition
sibling_exists: sibling!=0
sibling_not_leaf: !sibling->CurrentIsLeaf()
sibling_3d: sibling->GetDimension()==3
valid_face: face>=0 && face<6
valid_level_not_leaf: level>=0 level<(this->GetNumberOfLevels()-1)
void vtkHyperOctree::GetPointsOnParentFaces ( int  faces[3],
int  level,
vtkHyperOctreeCursor cursor,
vtkHyperOctreePointsGrabber grabber 
)

Get the points of the parent node of `cursor' on its faces `faces' at level `level' or deeper.

Precondition
cursor_exists: cursor!=0
cursor_3d: cursor->GetDimension()==3
valid_level: level>=0
boolean_faces: (faces[0]==0 || faces[0]==1) && (faces[1]==0 || faces[1]==1) && (faces[2]==0 || faces[2]==1)
void vtkHyperOctree::GetPointsOnEdge ( vtkHyperOctreeCursor sibling,
int  level,
int  axis,
int  k,
int  j,
vtkHyperOctreePointsGrabber grabber 
)

Get the points of node `sibling' on its edge `axis','k','j'. If axis==0, the edge is X-aligned and k gives the z coordinate and j the y-coordinate. If axis==1, the edge is Y-aligned and k gives the x coordinate and j the z coordinate. If axis==2, the edge is Z-aligned and k gives the y coordinate and j the x coordinate.

Precondition
sibling_exists: sibling!=0
sibling_3d: sibling->GetDimension()==3
sibling_not_leaf: !sibling->CurrentIsLeaf()
valid_axis: axis>=0 && axis<3
valid_k: k>=0 && k<=1
valid_j: j>=0 && j<=1
valid_level_not_leaf: level>=0 level<(this->Input->GetNumberOfLevels()-1)
void vtkHyperOctree::GetPointsOnParentEdge ( vtkHyperOctreeCursor cursor,
int  level,
int  axis,
int  k,
int  j,
vtkHyperOctreePointsGrabber grabber 
)

Get the points of the parent node of `cursor' on its edge `axis','k','j' at level `level' or deeper. If axis==0, the edge is X-aligned and k gives the z coordinate and j the y-coordinate. If axis==1, the edge is Y-aligned and k gives the x coordinate and j the z coordinate. If axis==2, the edge is Z-aligned and k gives the y coordinate and j the x coordinate.

Precondition
cursor_exists: cursor!=0
cursor_3d: cursor->GetDimension()==3
valid_level: level>=0
valid_range_axis: axis>=0 && axis<3
valid_range_k: k>=0 && k<=1
valid_range_j: j>=0 && j<=1
void vtkHyperOctree::GetPointsOnEdge2D ( vtkHyperOctreeCursor sibling,
int  edge,
int  level,
vtkHyperOctreePointsGrabber grabber 
)

Get the points of node `sibling' on its edge `edge'.

Precondition
sibling_exists: sibling!=0
sibling_not_leaf: !sibling->CurrentIsLeaf()
sibling_2d: sibling->GetDimension()==2
valid_edge: edge>=0 && edge<4
valid_level_not_leaf: level>=0 level<(this->Input->GetNumberOfLevels()-1)
void vtkHyperOctree::GetPointsOnParentEdge2D ( vtkHyperOctreeCursor cursor,
int  edge,
int  level,
vtkHyperOctreePointsGrabber grabber 
)

Get the points of the parent node of `cursor' on its edge `edge' at level `level' or deeper. (edge=0 for -X, 1 for +X, 2 for -Y, 3 for +Y)

Precondition
cursor_exists: cursor!=0
cursor_2d: cursor->GetDimension()==2
valid_level: level>=0
valid_edge: edge>=0 && edge<4
vtkDataSetAttributes* vtkHyperOctree::GetLeafData ( )

A generic way to set the leaf data attributes. This can be either point data for dual or cell data for normal grid.

void vtkHyperOctree::SetDualGridFlag ( int  flag)

Switch between returning leaves as cells, or the dual grid.

virtual int vtkHyperOctree::GetDualGridFlag ( )
virtual

Switch between returning leaves as cells, or the dual grid.

unsigned long vtkHyperOctree::GetActualMemorySize ( )
virtual

Return the actual size of the data in kibibytes (1024 bytes). This number is valid only after the pipeline has updated. The memory size returned is guaranteed to be greater than or equal to the memory required to represent the data (e.g., extra space in arrays, etc. are not included in the return value). THIS METHOD IS THREAD SAFE.

Reimplemented from vtkDataSet.

static vtkHyperOctree* vtkHyperOctree::GetData ( vtkInformation info)
static

Retrieve an instance of this class from an information object.

static vtkHyperOctree* vtkHyperOctree::GetData ( vtkInformationVector v,
int  i = 0 
)
static

Retrieve an instance of this class from an information object.

void vtkHyperOctree::ComputeBounds ( )
protectedvirtual

Compute the data bounding box from data points. THIS METHOD IS NOT THREAD SAFE.

Reimplemented from vtkDataSet.

void vtkHyperOctree::UpdateDualArrays ( )
protected
vtkPoints* vtkHyperOctree::GetLeafCenters ( )
protected
vtkIdTypeArray* vtkHyperOctree::GetCornerLeafIds ( )
protected
void vtkHyperOctree::UpdateGridArrays ( )
protected
vtkPoints* vtkHyperOctree::GetCornerPoints ( )
protected
vtkIdTypeArray* vtkHyperOctree::GetLeafCornerIds ( )
protected
void vtkHyperOctree::DeleteInternalArrays ( )
protected
void vtkHyperOctree::TraverseDualRecursively ( vtkHyperOctreeLightWeightCursor neighborhood,
unsigned short *  xyzIds,
int  level 
)
protected
void vtkHyperOctree::TraverseGridRecursively ( vtkHyperOctreeLightWeightCursor neighborhood,
unsigned char *  visited,
double origin,
double size 
)
protected
void vtkHyperOctree::EvaluateDualCorner ( vtkHyperOctreeLightWeightCursor neighborhood)
protected
vtkIdType vtkHyperOctree::EvaluateGridCorner ( int  level,
vtkHyperOctreeLightWeightCursor neighborhood,
unsigned char *  visited,
int cornerNeighborIds 
)
protected
void vtkHyperOctree::GenerateGridNeighborhoodTraversalTable ( )
protected
void vtkHyperOctree::GenerateDualNeighborhoodTraversalTable ( )
protected
void vtkHyperOctree::BuildLinks ( )
protected
vtkIdType vtkHyperOctree::RecursiveFindPoint ( double  x[3],
vtkHyperOctreeLightWeightCursor cursor,
double origin,
double size 
)
protected

Friends And Related Function Documentation

friend class vtkHyperOctreeLightWeightCursor
friend

Definition at line 481 of file vtkHyperOctree.h.

Member Data Documentation

int vtkHyperOctree::Dimension
protected

Definition at line 471 of file vtkHyperOctree.h.

double vtkHyperOctree::Size[3]
protected

Definition at line 473 of file vtkHyperOctree.h.

double vtkHyperOctree::Origin[3]
protected

Definition at line 474 of file vtkHyperOctree.h.

vtkHyperOctreeInternal* vtkHyperOctree::CellTree
protected

Definition at line 476 of file vtkHyperOctree.h.

vtkHyperOctreeCursor* vtkHyperOctree::TmpChild
protected

Definition at line 478 of file vtkHyperOctree.h.

vtkPoints* vtkHyperOctree::LeafCenters
protected

Definition at line 488 of file vtkHyperOctree.h.

vtkIdTypeArray* vtkHyperOctree::CornerLeafIds
protected

Definition at line 489 of file vtkHyperOctree.h.

vtkPoints* vtkHyperOctree::CornerPoints
protected

Definition at line 494 of file vtkHyperOctree.h.

vtkIdTypeArray* vtkHyperOctree::LeafCornerIds
protected

Definition at line 495 of file vtkHyperOctree.h.

int vtkHyperOctree::NeighborhoodTraversalTable[216]
protected

Definition at line 514 of file vtkHyperOctree.h.

vtkLine* vtkHyperOctree::Line
protected

Definition at line 519 of file vtkHyperOctree.h.

vtkPixel* vtkHyperOctree::Pixel
protected

Definition at line 520 of file vtkHyperOctree.h.

vtkVoxel* vtkHyperOctree::Voxel
protected

Definition at line 521 of file vtkHyperOctree.h.

vtkCellLinks* vtkHyperOctree::Links
protected

Definition at line 523 of file vtkHyperOctree.h.

int vtkHyperOctree::DualGridFlag
protected

Definition at line 532 of file vtkHyperOctree.h.


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