/** * An R-Tree implementation. In short, it is a balanced n-ary tree containing a hierarchy of * bounding rectangles. * * It only supports bulk-loading, i.e. creation from a batch of bounding rectangles. * This performs a bottom-up bulk load using the STR (sort-tile-recursive) algorithm. * * TODO: Experiment with other bulk-load algorithms (in particular the Hilbert pack variant, * which groups rects by position on the Hilbert curve, is probably worth a look). There also * exist top-down bulk load variants (VAMSplit, TopDownGreedy, etc). * * For more details see: * * Beckmann, N.; Kriegel, H. P.; Schneider, R.; Seeger, B. (1990). "The R*-tree: * an efficient and robust access method for points and rectangles"
*/ class SkRTree : public SkBBoxHierarchy { public:
SkRTree();
// Methods and constants below here are only public for tests.
// Return the depth of the tree structure. int getDepth() const { return fCount ? fRoot.fSubtree->fLevel + 1 : 0; } // Insertion count (not overall node count, which may be greater). int getCount() const { return fCount; }
// These values were empirically determined to produce reasonable performance in most cases. staticconstint kMinChildren = 6,
kMaxChildren = 11;
private: struct Node;
struct Branch { union {
Node* fSubtree; int fOpIndex;
};
SkRect fBounds;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.