VTK
9.1.0
|
A data object structured as a tree. More...
#include <vtkHyperTree.h>
Public Types | |
typedef vtkObject | Superclass |
Public Member Functions | |
virtual vtkTypeBool | IsA (const char *type) |
Return 1 if this class is the same type of (or a subclass of) the named class. | |
vtkHyperTree * | NewInstance () const |
void | PrintSelf (ostream &os, vtkIndent indent) override |
Methods invoked by print to print information about the object including superclasses. | |
void | Initialize (unsigned char branchFactor, unsigned char dimension, unsigned char numberOfChildren) |
Restore the initial state: only one vertice is then a leaf: the root cell for the hypertree. | |
virtual void | InitializeForReader (vtkIdType numberOfLevels, vtkIdType nbVertices, vtkIdType nbVerticesOfLastLevel, vtkBitArray *isParent, vtkBitArray *isMasked, vtkBitArray *outIsMasked)=0 |
Restore a state from read data, without using a cursor Call after create hypertree with initialize. | |
virtual void | BuildFromBreadthFirstOrderDescriptor (vtkBitArray *descriptor, vtkIdType numberOfBits, vtkIdType startIndex=0)=0 |
This method builds the indexing of this tree given a breadth first order descriptor. | |
virtual void | ComputeBreadthFirstOrderDescriptor (vtkBitArray *inputMask, vtkTypeInt64Array *numberOfVerticesPerDepth, vtkBitArray *descriptor, vtkIdList *breadthFirstIdMap)=0 |
This method computes the breadth first order descriptor of the current tree. | |
void | CopyStructure (vtkHyperTree *ht) |
Copy the structure by sharing the decomposition description of the tree. | |
virtual vtkHyperTree * | Freeze (const char *mode)=0 |
Return a freeze instance (a priori compact but potentially unmodifiable). | |
unsigned int | GetNumberOfLevels () const |
Return the number of levels. | |
vtkIdType | GetNumberOfVertices () const |
Return the number of all vertices (coarse and fine) in the tree. | |
vtkIdType | GetNumberOfNodes () const |
Return the number of nodes (coarse) in the tree. | |
vtkIdType | GetNumberOfLeaves () const |
Return the number of leaf (fine) in the tree. | |
int | GetBranchFactor () const |
Return the branch factor of the tree. | |
int | GetDimension () const |
Return the spatial dimension of the tree. | |
vtkIdType | GetNumberOfChildren () const |
Return the number of children per node of the tree. | |
std::shared_ptr< vtkHyperTreeGridScales > | InitializeScales (const double *scales, bool reinitialize=false) const |
In an hypertree, all cells are the same size by level. | |
virtual unsigned long | GetActualMemorySizeBytes ()=0 |
Return memory used in bytes. | |
unsigned int | GetActualMemorySize () |
Return memory used in kibibytes (1024 bytes). | |
virtual bool | IsGlobalIndexImplicit ()=0 |
Return if implicit global index maping has been used. | |
virtual void | SetGlobalIndexStart (vtkIdType start)=0 |
Set the start implicit global index mapping for the first cell in the current tree. | |
vtkIdType | GetGlobalIndexStart () const |
Get the start global index for the current tree for implicit global index mapping. | |
virtual void | SetGlobalIndexFromLocal (vtkIdType index, vtkIdType global)=0 |
Set the mapping between a node index in tree and a explicit global index mapping. | |
virtual vtkIdType | GetGlobalIndexFromLocal (vtkIdType index) const =0 |
Get the global id of a local node identified by index. | |
virtual vtkIdType | GetGlobalNodeIndexMax () const =0 |
Return the maximum value reached by global index mapping (implicit or explicit). | |
virtual bool | IsLeaf (vtkIdType index) const =0 |
Return if a vertice identified by index in tree as being leaf. | |
virtual void | SubdivideLeaf (vtkIdType index, unsigned int level)=0 |
Subdivide a vertice, only if its a leaf. | |
virtual bool | IsTerminalNode (vtkIdType index) const =0 |
Return if a vertice identified by index in tree as a terminal node. | |
virtual vtkIdType | GetElderChildIndex (unsigned int index_parent) const =0 |
Return the elder child index, local index node of first child, of node, coarse cell, identified by index_parent. | |
virtual const unsigned int * | GetElderChildIndexArray (size_t &nbElements) const =0 |
Return the elder child index array, internals of the tree structure Should be used with great care, for consulting and not modifying. | |
void | SetTreeIndex (vtkIdType treeIndex) |
Set/Get tree index in hypertree grid. | |
vtkIdType | GetTreeIndex () const |
Set/Get tree index in hypertree grid. | |
void | GetScale (double s[3]) const |
Set/Get scale of the tree in each direction for the ground level (0). | |
double | GetScale (unsigned int d) const |
Set/Get scale of the tree in each direction for the ground level (0). | |
void | SetScales (std::shared_ptr< vtkHyperTreeGridScales > scales) const |
In an hypertree, all cells are the same size by level. | |
bool | HasScales () const |
Return the existence scales. | |
std::shared_ptr< vtkHyperTreeGridScales > | GetScales () const |
Return all scales. | |
Public Member Functions inherited from vtkObject | |
vtkBaseTypeMacro (vtkObject, vtkObjectBase) | |
virtual void | DebugOn () |
Turn debugging output on. | |
virtual void | DebugOff () |
Turn debugging output off. | |
bool | GetDebug () |
Get the value of the debug flag. | |
void | SetDebug (bool debugFlag) |
Set the value of the debug flag. | |
virtual void | Modified () |
Update the modification time for this object. | |
virtual vtkMTimeType | GetMTime () |
Return this object's modified time. | |
void | PrintSelf (ostream &os, vtkIndent indent) override |
Methods invoked by print to print information about the object including superclasses. | |
void | RemoveObserver (unsigned long tag) |
void | RemoveObservers (unsigned long event) |
void | RemoveObservers (const char *event) |
void | RemoveAllObservers () |
vtkTypeBool | HasObserver (unsigned long event) |
vtkTypeBool | HasObserver (const char *event) |
int | InvokeEvent (unsigned long event) |
int | InvokeEvent (const char *event) |
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
vtkCommand * | GetCommand (unsigned long tag) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
void | RemoveObserver (vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
void | RemoveObservers (unsigned long event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
void | RemoveObservers (const char *event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
vtkTypeBool | HasObserver (unsigned long event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
vtkTypeBool | HasObserver (const char *event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
Overloads to AddObserver that allow developers to add class member functions as callbacks for events. | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
Overloads to AddObserver that allow developers to add class member functions as callbacks for events. | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
Allow user to set the AbortFlagOn() with the return value of the callback method. | |
int | InvokeEvent (unsigned long event, void *callData) |
This method invokes an event and return whether the event was aborted or not. | |
int | InvokeEvent (const char *event, void *callData) |
This method invokes an event and return whether the event was aborted or not. | |
Public Member Functions inherited from vtkObjectBase | |
const char * | GetClassName () const |
Return the class name as a string. | |
virtual vtkTypeBool | IsA (const char *name) |
Return 1 if this class is the same type of (or a subclass of) the named class. | |
virtual vtkIdType | GetNumberOfGenerationsFromBase (const char *name) |
Given the name of a base class of this class type, return the distance of inheritance between this class type and the named class (how many generations of inheritance are there between this class and the named class). | |
virtual void | Delete () |
Delete a VTK object. | |
virtual void | FastDelete () |
Delete a reference to this object. | |
void | InitializeObjectBase () |
void | Print (ostream &os) |
Print an object to an ostream. | |
virtual void | Register (vtkObjectBase *o) |
Increase the reference count (mark as used by another object). | |
virtual void | UnRegister (vtkObjectBase *o) |
Decrease the reference count (release by another object). | |
int | GetReferenceCount () |
Return the current reference count of this object. | |
void | SetReferenceCount (int) |
Sets the reference count. | |
bool | GetIsInMemkind () const |
A local state flag that remembers whether this object lives in the normal or extended memory space. | |
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. | |
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. | |
Static Public Member Functions | |
static vtkTypeBool | IsTypeOf (const char *type) |
static vtkHyperTree * | SafeDownCast (vtkObjectBase *o) |
static vtkHyperTree * | CreateInstance (unsigned char branchFactor, unsigned char dimension) |
Return an instance of an implementation of a hypertree for given branch factor and dimension. | |
Static Public Member Functions inherited from vtkObject | |
static vtkObject * | New () |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on. | |
static void | BreakOnError () |
This method is called when vtkErrorMacro executes. | |
static void | SetGlobalWarningDisplay (int val) |
This is a global flag that controls whether any debug, warning or error messages are displayed. | |
static void | GlobalWarningDisplayOn () |
This is a global flag that controls whether any debug, warning or error messages are displayed. | |
static void | GlobalWarningDisplayOff () |
This is a global flag that controls whether any debug, warning or error messages are displayed. | |
static int | GetGlobalWarningDisplay () |
This is a global flag that controls whether any debug, warning or error messages are displayed. | |
Static Public Member Functions inherited from vtkObjectBase | |
static vtkTypeBool | IsTypeOf (const char *name) |
Return 1 if this class type is the same type of (or a subclass of) the named class. | |
static vtkIdType | GetNumberOfGenerationsFromBaseType (const char *name) |
Given a the name of a base class of this class type, return the distance of inheritance between this class type and the named class (how many generations of inheritance are there between this class and the named class). | |
static vtkObjectBase * | New () |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on. | |
static void | SetMemkindDirectory (const char *directoryname) |
The name of a directory, ideally mounted -o dax, to memory map an extended memory space within. | |
static bool | GetUsingMemkind () |
A global state flag that controls whether vtkObjects are constructed in the usual way (the default) or within the extended memory space. | |
Protected Member Functions | |
virtual vtkObjectBase * | NewInstanceInternal () const |
vtkHyperTree () | |
~vtkHyperTree () override=default | |
virtual void | InitializePrivate ()=0 |
virtual void | PrintSelfPrivate (ostream &os, vtkIndent indent)=0 |
virtual void | CopyStructurePrivate (vtkHyperTree *ht)=0 |
Protected Member Functions inherited from vtkObject | |
vtkObject () | |
~vtkObject () override | |
void | RegisterInternal (vtkObjectBase *, vtkTypeBool check) override |
void | UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) override |
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr) |
These methods allow a command to exclusively grab all events. | |
void | InternalReleaseFocus () |
These methods allow a command to exclusively grab all events. | |
Protected Member Functions inherited from vtkObjectBase | |
vtkObjectBase () | |
virtual | ~vtkObjectBase () |
virtual void | RegisterInternal (vtkObjectBase *, vtkTypeBool check) |
virtual void | UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) |
virtual void | ReportReferences (vtkGarbageCollector *) |
vtkObjectBase (const vtkObjectBase &) | |
void | operator= (const vtkObjectBase &) |
Protected Attributes | |
unsigned char | BranchFactor |
unsigned char | Dimension |
unsigned char | NumberOfChildren |
std::shared_ptr< vtkHyperTreeData > | Datas |
std::shared_ptr< vtkHyperTreeGridScales > | Scales |
Protected Attributes inherited from vtkObject | |
bool | Debug |
vtkTimeStamp | MTime |
vtkSubjectHelper * | SubjectHelper |
Protected Attributes inherited from vtkObjectBase | |
std::atomic< int32_t > | ReferenceCount |
vtkWeakPointerBase ** | WeakPointers |
Additional Inherited Members | |
Static Protected Member Functions inherited from vtkObjectBase | |
static vtkMallocingFunction | GetCurrentMallocFunction () |
static vtkReallocingFunction | GetCurrentReallocFunction () |
static vtkFreeingFunction | GetCurrentFreeFunction () |
static vtkFreeingFunction | GetAlternateFreeFunction () |
A data object structured as a tree.
An hypertree grid is a dataobject containing a rectilinear grid of elements that can be either null or a hypertree. An hypertree is a dataobject describing a decomposition tree. A VERTICE is an element of this tree. A NODE, also called COARSE cell, is a specific vertice which is refined and than has either exactly f^d children, where f in {2,3} is the branching factor, the same value for all trees in this hypertree grid, and d in {1,2,3} is the spatial dimension. It is called coarse because there are smaller child cells. A LEAF, also called FINE cell, is a vertice without children, not refined. It is called fine because in the same space there are no finer cells. In a tree, we can find coarse cells smaller than fine cell but not in the same space.
Such trees have particular names for f=2:
The original octree class name came 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} * } *
Attributes are associated with (all) cells, not with points. The attributes that are associated with coarses, it's used for LoD (Level-of-Detail). The attributes on coarse cells can be given by the code or/and computed by the use of a specifc filter exploiting the values from its children (which can be leaves or not).
The geometry is implicitly given by the size of the root node on each axis and position of the origin. In fact, in 3D, the geometry is then not limited to a cube but can have a rectangular shape.
By construction, an hypertree is efficient in memory usage. The LoD feature allows for quick culling of part of the dataobject.
This is an abstract class used as a superclass by a custom templated compact class. Other versions of this code could be made available to meet other needs without questioning cursors and filters. All methods are pure virtual. This is done to hide templates.
* +y * +-+-+ ^ * |2|3| | * +-+-+ O +z +-> +x * |0|1| * +-+-+ * +y * +-+-+ ^ * |6|7| | * +-+-+ 1 +z +-> +x * |4|5| * +-+-+ *
* +y * +-+-+ ^ * |2|3| | * +-+-+ +-> +x * |0|1| * +-+-+ *
* O+-> +x *
It's more difficult with f=3.
Definition at line 176 of file vtkHyperTree.h.
typedef vtkObject vtkHyperTree::Superclass |
Definition at line 179 of file vtkHyperTree.h.
|
protected |
|
overrideprotecteddefault |
|
static |
|
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 vtkObjectBase.
|
static |
|
protectedvirtual |
vtkHyperTree * vtkHyperTree::NewInstance | ( | ) | const |
|
overridevirtual |
void vtkHyperTree::Initialize | ( | unsigned char | branchFactor, |
unsigned char | dimension, | ||
unsigned char | numberOfChildren | ||
) |
Restore the initial state: only one vertice is then a leaf: the root cell for the hypertree.
branchFactor | |
dimension | |
numberOfChildren |
|
pure virtual |
Restore a state from read data, without using a cursor Call after create hypertree with initialize.
numberOfLevels | the maximum number of levels. |
nbVertices | the number of vertices of the future tree (coarse and leaves), fixed either the information loading (for load reduction) or defined by the fixed level of reader. |
nbVerticesOfLastLevel | the number of vertices of last valid level. |
isParent | a binary decomposition tree by level with constraint all describe children. It is useless to declare all the lastest values to False, especially the last level may not be defined. |
isMasked | a binary mask corresponding. It is useless to declare all the latest values to False. |
outIsMasked | the mask of hypertree grid including this hypertree which is a vtkBitArray. |
|
pure virtual |
This method builds the indexing of this tree given a breadth first order descriptor.
This descriptor is the same bit array that would be created by ComputeBreadthFirstOrderDescriptor
. The current tree is ready to use after calling this method.
descriptor | is a binary descriptor, in breadth first order, that describes the tree topology. If vertex of index id in breadth first order has children, then the corresponding value in descriptor is one. Otherwise, it is set to zero. Remember that arrays are appended, meaning that the index in descriptor corresponding to id in the current tree would be the size of descriptor before calling this method, plus id . |
numberOfBits | Number of bits to be read in the descriptor to build the tree. Remember that the last depth of the tree is not encoded in the descriptor, as we know that they are full of zeros (because leaves have no children). |
startIndex | Input descriptor is being read starting at this index. |
|
pure virtual |
This method computes the breadth first order descriptor of the current tree.
It takes as input the input mask inputMask
which should be provided by the vtkHyperTreeGrid
in which this vtkHyperTree
lies. In addition to computing the descriptor, it computes the mapping between the current memory layout of this tree with the breadth first order version of it.
Outputs are numberOfVerticesPerDepth
, descriptor
and breadthFirstIdMap
. Each of those arrays are appended with new data, so one can create one unique big array for an entire vtkHyperTreeGrid
concatenating breadth first order description and mapping of concatenated trees.
inputMask | the mask provided by vtkHyperTreeGrid . |
numberOfVerticesPerDepth | is self explanatory: from depth 0 to the maximum depth of the tree, it stores the number of vertices at each depth. If the input tree has masked subtrees such that getting rid of those subtrees reduces the depth, then numberOfVerticesPerDepth will take this smaller depth into account rather than adding zeros. In other words, numberOfVerticesPerDepth cannot have zero values. |
descriptor | is a binary descriptor, in breadth first order, that describes the tree topology. If vertex of index id in breadth first order has children, then the corresponding value in descriptor is one. Otherwise, it is set to zero. Remember that arrays are appended, meaning that the index in descriptor corresponding to id in the current tree would be the size of descriptor before calling this method, plus id . |
breadthFirstIdMap | maps breadth first ordering to current indexing of the current tree. In other word, the value at appended position id in this array gives the corresponding index in the current tree. |
void vtkHyperTree::CopyStructure | ( | vtkHyperTree * | ht | ) |
Copy the structure by sharing the decomposition description of the tree.
|
pure virtual |
Return a freeze instance (a priori compact but potentially unmodifiable).
This method is calling by the Squeeze method of hypertree grid. The mode parameter will allow to propose different instances. Today, there is none, the freeze call does not do anything.
|
inline |
Set/Get tree index in hypertree grid.
Services for internal use between hypertree grid and hypertree.
Definition at line 301 of file vtkHyperTree.h.
|
inline |
Set/Get tree index in hypertree grid.
Services for internal use between hypertree grid and hypertree.
Definition at line 302 of file vtkHyperTree.h.
|
inline |
Return the number of levels.
Definition at line 308 of file vtkHyperTree.h.
|
inline |
Return the number of all vertices (coarse and fine) in the tree.
Definition at line 317 of file vtkHyperTree.h.
|
inline |
Return the number of nodes (coarse) in the tree.
Definition at line 322 of file vtkHyperTree.h.
|
inline |
Return the number of leaf (fine) in the tree.
Definition at line 327 of file vtkHyperTree.h.
|
inline |
Return the branch factor of the tree.
Definition at line 335 of file vtkHyperTree.h.
|
inline |
Return the spatial dimension of the tree.
Definition at line 340 of file vtkHyperTree.h.
|
inline |
Return the number of children per node of the tree.
This value is branchfactoring scale spatial dimenion (f^d).
Definition at line 346 of file vtkHyperTree.h.
void vtkHyperTree::GetScale | ( | double | s[3] | ) | const |
Set/Get scale of the tree in each direction for the ground level (0).
double vtkHyperTree::GetScale | ( | unsigned int | d | ) | const |
Set/Get scale of the tree in each direction for the ground level (0).
std::shared_ptr< vtkHyperTreeGridScales > vtkHyperTree::InitializeScales | ( | const double * | scales, |
bool | reinitialize = false |
||
) | const |
In an hypertree, all cells are the same size by level.
This fonction initialize this cache system is particular used by the symetric filter.
|
static |
Return an instance of an implementation of a hypertree for given branch factor and dimension.
Other versions of this code could be made available to meet other needs without questioning cursors and filters. Since an instance, an other instance can be creating by call the method Freeze (by default, nothing more, instance currently is returning).
|
pure virtual |
Return memory used in bytes.
NB: Ignore the attribute array because its size is added by the data set.
|
inline |
Return memory used in kibibytes (1024 bytes).
NB: Ignore the attribute array because its size is added by the data set.
Definition at line 387 of file vtkHyperTree.h.
|
pure virtual |
Return if implicit global index maping has been used.
If true, the initialize has been done by SetGlobalIndexStart (one call by hypertree). If false, the initialize has been done by SetGlobalIndexFromLocal (one call by cell of hypertree). GetGlobalIndexFromLocel get the good value of global index mapping for one cell what ever the initialize metho used.
|
pure virtual |
Set the start implicit global index mapping for the first cell in the current tree.
The implicit global index mapping of a node will be computed by this start index + the node index (local offset in tree). The node index begin by 0, the origin cell in tree. The follow values are organizing by fatrie as i to i+NumberOfChildren, for all children of one coarse cell, i is 1+8*s with s in integer. The order of fatrie depend of order to call SubdivideLeaf. This global index mapping permits to access a value of field for a cell, in implicit, the order values depends of implicit order linking with the order build of this tree. WARNING: See of hypertree grid, for to use a implicit global index mapping, you have to build hypertree by hypertree without to recome in hypertree also build. For this tree, in debug, assert is calling if tried call SetGlobalIndexFromLocal.
|
inline |
Get the start global index for the current tree for implicit global index mapping.
Definition at line 429 of file vtkHyperTree.h.
|
pure virtual |
Set the mapping between a node index in tree and a explicit global index mapping.
This global index mapping permits to access a value of field for a cell, in explicit, the index depend of order values. For this tree, in debug, assert is calling if tried call SetGlobalIndexStart.
Get the global id of a local node identified by index.
Use the explicit mapping function if available or the implicit mapping build with start global index.
|
pure virtual |
Return the maximum value reached by global index mapping (implicit or explicit).
|
pure virtual |
Return if a vertice identified by index in tree as being leaf.
|
pure virtual |
Subdivide a vertice, only if its a leaf.
|
pure virtual |
Return if a vertice identified by index in tree as a terminal node.
For this, all childrens mus be all leaves.
|
pure virtual |
Return the elder child index, local index node of first child, of node, coarse cell, identified by index_parent.
|
pure virtual |
Return the elder child index array, internals of the tree structure Should be used with great care, for consulting and not modifying.
|
inline |
In an hypertree, all cells are the same size by level.
This fonction initializes this cache system is particulary used by the symetric filter. Here, you set a scales since extern description (sharing).
Definition at line 501 of file vtkHyperTree.h.
|
inline |
Return the existence scales.
Definition at line 508 of file vtkHyperTree.h.
|
inline |
Return all scales.
Definition at line 515 of file vtkHyperTree.h.
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
|
protected |
Definition at line 534 of file vtkHyperTree.h.
|
protected |
Definition at line 537 of file vtkHyperTree.h.
|
protected |
Definition at line 540 of file vtkHyperTree.h.
|
protected |
Definition at line 543 of file vtkHyperTree.h.
|
mutableprotected |
Definition at line 549 of file vtkHyperTree.h.