Class xlifepp::ClusterTree#

template<typename T = FeDof>
class ClusterTree#

frontal class of a tree representation (xlifepp::ClusterNode class) of cloud of objects that have a characteristic Point of location Be cautious, it uses a pointer to a vector of T that has to be kept in memory.

Full copy of objects should be safer but it is memory expansive, see later

Public Functions

ClusterTree(const std::vector<T>&, ClusteringMethod, number_t, number_t = 0, bool = true, bool = true, CloseNodeRule = _fmmCloseNodeRule, real_t = 1.)#

constructor from a list of objects

void print(std::ostream&) const#

print tree

void printLeaves(std::ostream&) const#

print only leaves of the tree

void saveToFile(const string_t &fn, bool withRealBox = false) const#

save points and bounding boxes or real bounding boxes on file (withRealBox=true)

save points and bounding box on file (for graphic representation)

void updateBoundingBoxes()#

update recursively bounding boxes

void updateCloseNodes()#

update recursively closeNodes vector

void updateDofNumbers()#

update recursively dofNumbers_ vector

void updateElements()#

update recursively elements_ vector

void updateInfo()#

update tree info (depth, number of nodes, …)

void updateNumbers()#

update recursively numbers_ vector

void updateParentNumbers()#

update recursively all parentNumbers_ vector

void updateRealBoundingBoxes()#

update recursively real bounding boxes

Public Members

bool clearObjects_#

if true deallocate vector points_ when clear

CloseNodeRule closeRule_#

rule to decide if two tree nodes are close

number_t depth#

depth of the tree, max depth when given >0 in constructor

real_t etaClose_#

scalar parameter for the CloseNodeRule

number_t maxInBox_#

maximum number of points in a leaf

ClusteringMethod method_#

clustering method (see enum)

number_t nbLeaves#

number of leaves (info)

number_t nbNodes#

number of nodes (info)

bool noEmptyBox_#

do not keep empty boxes in tree

std::vector<T> *objects_#

pointer to a list of objects

bool storeNodeData_#

store data on each node if true

bool withOverlap_#

true if dof numbering of nodes overlap (case of a cluster of elements)