--- ray/src/hd/sm_qtree.h 1998/08/20 16:47:22 3.2 +++ ray/src/hd/sm_qtree.h 1998/08/25 11:03:27 3.3 @@ -25,39 +25,39 @@ #define EMPTY (-1) #define QT_IS_EMPTY(qt) ((qt) == EMPTY) -#define QT_IS_LEAF(qt) ((qt) < EMPTY) -#define QT_IS_TREE(qt) ((qt) > EMPTY) +#define QT_IS_LEAF(qt) ((qt) < EMPTY) +#define QT_IS_TREE(qt) ((qt) > EMPTY) -#define QT_INDEX(qt) (-(qt)-2) /* quadtree node from set */ -#define QT_SET_INDEX(i) (-((i)+2)) /* object set from node */ -#define QT_BLOCK(qt) ((qt)>>8) /* quadtree block index */ -#define QT_BLOCK_INDEX(qt) (((qt)&0377)<<2) /* quadtree index in block */ +#define QT_INDEX(qt) (-(qt)-2) /* quadtree node from set */ +#define QT_SET_INDEX(i) (-((i)+2)) /* object set from node */ +#define QT_BLOCK_SIZE 1024 /* quadtrees in block */ +#define QT_BLOCK(qt) ((qt)>>10) /* quadtree block index */ +#define QT_BLOCK_INDEX(qt) (((qt)&0x3ff)<<2) /* quadtree index in block */ #ifndef QT_MAX_BLK #ifdef BIGMEM -#define QT_MAX_BLK 65535 /* maximum quadtree block */ +#define QT_MAX_BLK 16383 /* maximum quadtree block */ #else -#define QT_MAX_BLK 8191 /* maximum quadtree block */ +#define QT_MAX_BLK 2047 /* maximum quadtree block */ #endif #endif - #define QT_NTH_CHILD(qt,br) (quad_block[QT_BLOCK(qt)][QT_BLOCK_INDEX(qt)+br]) -#define QT_NTH_CHILD_PTR(qt,br) \ - (&(quad_block[QT_BLOCK(qt)][QT_BLOCK_INDEX(qt)+br])) -#define QT_CLEAR_CHILDREN(qt) (QT_NTH_CHILD(qt,0)=EMPTY, \ -QT_NTH_CHILD(qt,1)=EMPTY,QT_NTH_CHILD(qt,2)=EMPTY,QT_NTH_CHILD(qt,3)=EMPTY) +#define QT_NTH_CHILD_PTR(qt,br) (&QT_NTH_CHILD(qt,br)) +#define QT_CLEAR_CHILDREN(qt) (QT_NTH_CHILD(qt,0)=QT_NTH_CHILD(qt,1)= \ + QT_NTH_CHILD(qt,2)=QT_NTH_CHILD(qt,3)=EMPTY) -#if 0 -#define QT_EMPTY 0 -#define QT_FULL 1 -#define QT_TREE 2 -#endif +/* QUADTREE NODE FLAGS */ +#define QT_OFFSET(qt) ((qt)>>5) +#define QT_F_BIT(qt) ((qt)&0x1f) +#define QT_F_OP(f,qt,op) ((f)[QT_OFFSET(qt)] op (0x1<