|
Jafar
|
Class for quadtree utility of the module. More...
Class for quadtree utility of the module.
T is the bundle class of each cell, T must have some methods : T.xsize(), T.ysize()
Definition at line 46 of file Quadtree.hpp.
#include <Quadtree.hpp>

Public Types | |
| enum | { QUADTREE_TOP_LEFT_CELL = 0, QUADTREE_TOP_RIGHT_CELL, QUADTREE_BOTTOM_LEFT_CELL, QUADTREE_BOTTOM_RIGHT_CELL } |
| The quadrant index in the children array. | |
| enum | UNWISE_SIZE_DIVISION_POLITIC { LEFTTOP, BOTTOMRIGHT, BALANCE } |
| Adapted politic enumeration. More... | |
Public Member Functions | |
| Quadtree (RasterT *_raster, UNWISE_SIZE_DIVISION_POLITIC _uspolitic=LEFTTOP) | |
| Constructor from the raster. | |
| ~Quadtree () | |
| Destructor. | |
| QuadNodeInternal< T, RasterT > * | getRootCell () const |
| This method provides access to the origin Cell of a quadtree. | |
| bool | getClusterForCell (const RasterCellIndex &cell, RasterRect &cluster) const |
| Get the cluster (represented by a rectangle) that contains the given raster cell. | |
| bool | getClusterForCell (const RasterCellIndex &cell, RasterCellIndex &clusterRoot) const |
| Get the cluster (represented by the index of its origin) that contains the given raster cell. | |
| bool | getAdjacentClusters (const RasterCellIndex &root_cell, Decomp::SIDE side, std::list< RasterCellIndex > &clusters) const |
| Get all adjacents clusters of a given cluster. | |
| T | getData (const RasterRect &rect) const |
| Return the cost of a zone inside the quadtree, the zone should correspond to a cluster. | |
| T | getData (const RasterCellIndex &cluster) const |
| Return the cost of a cluster represented by this origin. | |
| std::list< QuadNodeLeaf< T, RasterT > * > | getFullLeavesList () const |
| Getter for leaves' list. | |
Private Member Functions | |
| QuadNodeLeaf< T, RasterT > * | getLeafForCell (const RasterCellIndex &cell) const |
| Get the cluster (the tree leaf) that contains the given raster cell. | |
| QuadNodeLeaf< T, RasterT > * | getLeafForRect (const RasterRect &rect) const |
| void | setNewLeaf (QuadNodeLeaf< T, RasterT > *leaf, bool multiCluster=false) |
| Update the Decomp accordingly to the QuadNodeLeaf raster coverage and keep track on all the QuadTree leaves. | |
Private Attributes | |
| QuadNodeInternal< T, RasterT > * | root |
| Pointer to root node. | |
| UNWISE_SIZE_DIVISION_POLITIC | uspolitic |
| The politic of division when the cell size is not multiple of 2. | |
| std::list< QuadNodeLeaf< T, RasterT > * > | allLeaves |
| List of all tree's leaves. | |
Friends | |
| class | QuadNode< T, RasterT > |
| class | QuadNodeInternal< T, RasterT > |
| class | QuadNodeLeaf< T, RasterT > |
| enum jafar::lgl::Quadtree::UNWISE_SIZE_DIVISION_POLITIC |
Adapted politic enumeration.
An adapted politic is used when the size (xsize or ysize) is not multiple of 2 LEFTTOP = if the xsize=2*i+1 => the left top child will have the xsize = i+1 and the top right xsize=i (the same for ysize) BALANCE means at one level
Definition at line 60 of file Quadtree.hpp.
| bool jafar::lgl::Quadtree< T, RasterT >::getAdjacentClusters | ( | const RasterCellIndex & | root_cell, |
| Decomp::SIDE | side, | ||
| std::list< RasterCellIndex > & | clusters | ||
| ) | const [virtual] |
Get all adjacents clusters of a given cluster.
The returned clusters are represented by their origins cells
Implements jafar::lgl::TDecomposer< T, RasterT >.
Definition at line 467 of file Quadtree.hpp.
References jafar::lgl::DecompCluster::xsize, and jafar::lgl::DecompCluster::ysize.
| T jafar::lgl::Quadtree< T, RasterT >::getData | ( | const RasterRect & | rect | ) | const [virtual] |
Return the cost of a zone inside the quadtree, the zone should correspond to a cluster.
Return the cost of a zone.
Implements jafar::lgl::TDecomposer< T, RasterT >.
Definition at line 620 of file Quadtree.hpp.
References jafar::lgl::RasterRect::xtopleft, and jafar::lgl::RasterRect::ytopleft.
| std::list< QuadNodeLeaf< T, RasterT > * > jafar::lgl::Quadtree< T, RasterT >::getFullLeavesList | ( | ) | const |
Getter for leaves' list.
Definition at line 415 of file Quadtree.hpp.
| void jafar::lgl::Quadtree< T, RasterT >::setNewLeaf | ( | QuadNodeLeaf< T, RasterT > * | leaf, |
| bool | multiCluster = false |
||
| ) | [private] |
Update the Decomp accordingly to the QuadNodeLeaf raster coverage and keep track on all the QuadTree leaves.
| leaf | QuadNodeLeaf to keep track on. |
| multiCluster | boolean that is true in case we are facing a cluster which can not be decomposed in a quadtree, this includes all clusters with at least one dimension to the unit. |
Keeping track on all leaves thanks to this line
Definition at line 677 of file Quadtree.hpp.
References jafar::lgl::RasterRect::xend(), jafar::lgl::RasterRect::xroot(), jafar::lgl::RasterRect::yend(), and jafar::lgl::RasterRect::yroot().
std::list<QuadNodeLeaf<T,RasterT>*> jafar::lgl::Quadtree< T, RasterT >::allLeaves [private] |
List of all tree's leaves.
Each new leaf is pushed into that list to keep track on it.
Definition at line 141 of file Quadtree.hpp.
| Generated on Wed Oct 15 2014 00:37:41 for Jafar by doxygen 1.7.6.1 |
|