/* Print out the data in a node. */ void RTreePrintNode(struct RTree_Node *n, int depth, struct RTree *t) { int i, maxkids; RTreeTabIn(depth); maxkids = (n->level > 0 ? t->nodecard : t->leafcard); fprintf(stdout, "node"); if (n->level == 0) fprintf(stdout, " LEAF"); else if (n->level > 0) fprintf(stdout, " NONLEAF"); else fprintf(stdout, " TYPE=?"); fprintf(stdout, " level=%d count=%d", n->level, n->count); for (i = 0; i < maxkids; i++) { if (n->level == 0) { RTreeTabIn(depth); RTreePrintRect(&(n->branch[i].rect), depth); fprintf(stdout, "\t%d: data id = %d\n", i, n->branch[i].child.id); } else { RTreeTabIn(depth); fprintf(stdout, "branch %d\n", i); RTreePrintBranch(&(n->branch[i]), depth + 1, t); } } }
/*----------------------------------------------------------------------------- | Print out the data for a rectangle. -----------------------------------------------------------------------------*/ void RTreePrintRect(struct Rect *R, int depth) { register struct Rect *r = R; register int i; assert(r); RTreeTabIn(depth); printf("rect:\n"); for (i = 0; i < NUMDIMS; i++) { RTreeTabIn(depth+1); printf("%f\t%f\n", r->boundary[i], r->boundary[i + NUMDIMS]); } }