ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/sm_qtree.h
(Generate patch)

Comparing ray/src/hd/sm_qtree.h (file contents):
Revision 3.2 by gwlarson, Thu Aug 20 16:47:22 1998 UTC vs.
Revision 3.3 by gwlarson, Tue Aug 25 11:03:27 1998 UTC

# Line 25 | Line 25
25   #define  EMPTY          (-1)
26  
27   #define  QT_IS_EMPTY(qt)        ((qt) == EMPTY)
28 < #define  QT_IS_LEAF(qt) ((qt) < EMPTY)
29 < #define  QT_IS_TREE(qt) ((qt) > EMPTY)
28 > #define  QT_IS_LEAF(qt)         ((qt) < EMPTY)
29 > #define  QT_IS_TREE(qt)         ((qt) > EMPTY)
30  
31 < #define  QT_INDEX(qt)          (-(qt)-2)        /* quadtree node from set */
32 < #define  QT_SET_INDEX(i)       (-((i)+2))       /* object set from node */
33 < #define  QT_BLOCK(qt)         ((qt)>>8)         /* quadtree block index */
34 < #define  QT_BLOCK_INDEX(qt)   (((qt)&0377)<<2)  /* quadtree index in block */
31 > #define  QT_INDEX(qt)           (-(qt)-2)       /* quadtree node from set */
32 > #define  QT_SET_INDEX(i)        (-((i)+2))      /* object set from node */
33 > #define  QT_BLOCK_SIZE          1024            /* quadtrees in block */
34 > #define  QT_BLOCK(qt)           ((qt)>>10)      /* quadtree block index */
35 > #define  QT_BLOCK_INDEX(qt)   (((qt)&0x3ff)<<2) /* quadtree index in block */
36  
37   #ifndef  QT_MAX_BLK
38   #ifdef  BIGMEM
39 < #define  QT_MAX_BLK     65535           /* maximum quadtree block */
39 > #define  QT_MAX_BLK     16383           /* maximum quadtree block */
40   #else
41 < #define  QT_MAX_BLK     8191            /* maximum quadtree block */
41 > #define  QT_MAX_BLK     2047            /* maximum quadtree block */
42   #endif
43   #endif
44  
45  
45
46   #define  QT_NTH_CHILD(qt,br) (quad_block[QT_BLOCK(qt)][QT_BLOCK_INDEX(qt)+br])
47 < #define  QT_NTH_CHILD_PTR(qt,br) \
48 <                    (&(quad_block[QT_BLOCK(qt)][QT_BLOCK_INDEX(qt)+br]))
49 < #define  QT_CLEAR_CHILDREN(qt) (QT_NTH_CHILD(qt,0)=EMPTY, \
50 < QT_NTH_CHILD(qt,1)=EMPTY,QT_NTH_CHILD(qt,2)=EMPTY,QT_NTH_CHILD(qt,3)=EMPTY)
47 > #define  QT_NTH_CHILD_PTR(qt,br) (&QT_NTH_CHILD(qt,br))
48 > #define  QT_CLEAR_CHILDREN(qt) (QT_NTH_CHILD(qt,0)=QT_NTH_CHILD(qt,1)= \
49 >                        QT_NTH_CHILD(qt,2)=QT_NTH_CHILD(qt,3)=EMPTY)
50  
51  
52 < #if 0
53 < #define  QT_EMPTY       0
54 < #define  QT_FULL        1
55 < #define  QT_TREE        2
56 < #endif
52 > /* QUADTREE NODE FLAGS */
53 > #define QT_OFFSET(qt)           ((qt)>>5)
54 > #define QT_F_BIT(qt)            ((qt)&0x1f)
55 > #define QT_F_OP(f,qt,op)        ((f)[QT_OFFSET(qt)] op (0x1<<QT_F_BIT(qt)))
56 > #define QT_IS_FLAG(qt)          QT_F_OP(quad_flag,qt,&)
57 > #define QT_SET_FLAG(qt)         QT_F_OP(quad_flag,qt,|=)
58 > #define QT_CLR_FLAG(qt)         QT_F_OP(quad_flag,qt,|=~)
59  
60  
60
61   /* OBJECT SET CODE */
62   #define QT_SET_CNT(s)          ((s)[0])
63   #define QT_SET_NTH_ELEM(s,n)   ((s)[(n)])  
# Line 67 | Line 67 | QT_NTH_CHILD(qt,1)=EMPTY,QT_NTH_CHILD(qt,2)=EMPTY,QT_N
67   #define QT_SET_PTR(s)          (&((s)[1]))
68  
69  
70 < #define QT_MAX_SET        MAXSET
71 < #define MAXCSET           MAXSET*2
70 > #define QT_MAX_SET        255
71 > #define MAXCSET           QT_MAX_SET*2
72   #ifndef QT_SET_THRESHOLD
73   #define QT_SET_THRESHOLD  30  
74   #endif
# Line 77 | Line 77 | QT_NTH_CHILD(qt,1)=EMPTY,QT_NTH_CHILD(qt,2)=EMPTY,QT_N
77   #define QT_MAX_LEVELS     17
78   #endif
79  
80 #define QT_BLOCK_SIZE 256
81
80   extern QUADTREE  qtnewleaf(), qtaddelem(), qtdelelem();
81  
82   extern QUADTREE  *quad_block[QT_MAX_BLK];       /* quadtree blocks */
83 + extern int4  *quad_flag;                        /* zeroeth quadtree flag */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines