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.6 by gwlarson, Wed Sep 16 18:16:29 1998 UTC vs.
Revision 3.7 by gwlarson, Tue Oct 6 18:18:54 1998 UTC

# Line 52 | Line 52
52  
53  
54   /* QUADTREE NODE FLAGS */
55 < #define QT_OFFSET(qt)           ((qt)>>5)
56 < #define QT_F_BIT(qt)            ((qt)&0x1f)
57 < #define QT_F_OP(f,qt,op)        ((f)[QT_OFFSET(qt)] op (0x1<<QT_F_BIT(qt)))
58 < #define QT_IS_FLAG(qt)          QT_F_OP(quad_flag,qt,&)
59 < #define QT_SET_FLAG(qt)         QT_F_OP(quad_flag,qt,|=)
60 < #define QT_CLR_FLAG(qt)         QT_F_OP(quad_flag,qt,|=~)
55 > #define QT_IS_FLAG(qt)          IS_FLAG(quad_flag,qt)
56 > #define QT_SET_FLAG(qt)         SET_FLAG(quad_flag,qt)
57 > #define QT_CLR_FLAG(qt)         CLR_FLAG(quad_flag,qt)
58 > #define QT_LEAF_IS_FLAG(qt)     IS_FLAG(qtsetflag,QT_INDEX(qt))
59 > #define QT_LEAF_SET_FLAG(qt)    SET_FLAG(qtsetflag,QT_INDEX(qt))
60 > #define QT_LEAF_CLR_FLAG(qt)    CLR_FLAG(qtsetflag,QT_INDEX(qt))
61  
62
62   /* OBJECT SET CODE */
63   #define QT_SET_CNT(s)          ((s)[0])
64   #define QT_SET_NTH_ELEM(s,n)   ((s)[(n)])  
# Line 73 | Line 72
72   #define MAXCSET          2*QT_MAXSET
73   #define QT_MAXCSET       MAXCSET
74   #ifndef QT_SET_THRESHOLD
75 < #define QT_SET_THRESHOLD  100  
75 > #define QT_SET_THRESHOLD 30  
76   #endif
77  
78   #ifndef QT_MAX_LEVELS
79   #define QT_MAX_LEVELS     12
80   #endif
81  
83 #define QT_HIT  -2
84 #define QT_DONE -4
85 #define QT_MODIFIED -8
86
82   #define QT_FILL_THRESHOLD 3
83   #define QT_EXPAND   8
84   #define QT_COMPRESS 16
85 + #define QT_DONE 32
86 + #define QT_MODIFIED 64
87  
88   #define QT_FLAG_FILL_TRI(f)  (((f)&0x7) == QT_FILL_THRESHOLD)
89   #define QT_FLAG_UPDATE(f)    ((f)& (QT_EXPAND | QT_COMPRESS))
90 + #define QT_FLAG_IS_DONE(f)   ((f)& QT_DONE)
91 + #define QT_FLAG_SET_DONE(f)   ((f) |= QT_DONE)
92 + #define QT_FLAG_IS_MODIFIED(f)   ((f)& QT_MODIFIED)
93 + #define QT_FLAG_SET_MODIFIED(f)   ((f) |= QT_MODIFIED)
94  
95 + #define qtSubdivide(qt) (qt = qtAlloc(),QT_CLEAR_CHILDREN(qt))
96 + #define qtSubdivide_tri(v0,v1,v2,a,b,c) (EDGE_MIDPOINT_VEC3(a,v0,v1), \
97 +                                         EDGE_MIDPOINT_VEC3(b,v1,v2), \
98 +                                         EDGE_MIDPOINT_VEC3(c,v2,v0))
99 +
100   extern QUADTREE  qtnewleaf(), qtaddelem(), qtdelelem();
101  
102   extern QUADTREE  *quad_block[QT_MAX_BLK];       /* quadtree blocks */
# Line 98 | Line 104 | extern int4  *quad_flag;                       /* zeroeth quadtree flag */
104  
105   extern OBJECT   **qtsettab;             /* quadtree leaf node table */
106   extern QUADTREE  qtnumsets;             /* number of used set indices */
107 <
107 > extern int4   *qtsetflag;
108   #ifdef DEBUG
109   extern OBJECT   *qtqueryset();
110   #else
# Line 108 | Line 114 | extern OBJECT  *qtqueryset();
114   #define qtinset(qt,id)  inset(qtqueryset(qt),id)
115   #define qtgetset(os,qt) setcopy(os,qtqueryset(qt))
116  
117 < extern QUADTREE *qtRoot_point_locate();
117 > /*
118 > QUADTREE qtRoot_point_locate(qt,q0,q1,q2,peq,pt,r0,r1,r2)
119 >   QUADTREE qt;
120 >   FVECT q0,q1,q2;
121 >   FPEQ peq;
122 >   FVECT pt;
123 >   FVECT r0,r1,r2;
124 >
125 >   Return the quadtree node containing pt. It is assumed that pt is in
126 >   the root node qt with ws vertices q0,q1,q2 and plane equation peq.
127 >   If r0 != NULL will return coordinates of node in (r0,r1,r2).
128 > */
129 >
130 > extern QUADTREE qtRoot_point_locate();
131 > extern QUADTREE qtRoot_add_tri();
132 > extern QUADTREE qtRoot_remove_tri();
133 > extern QUADTREE qtAdd_tri();
134 > extern QUADTREE qtRoot_visit_tri_edges();
135 > extern QUADTREE qtRoot_trace_ray();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines