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.7 by gwlarson, Tue Oct 6 18:18:54 1998 UTC vs.
Revision 3.15 by greg, Fri Jun 20 00:25:49 2003 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1998 Silicon Graphics, Inc. */
2 <
3 < /* SCCSid "$SunId$ SGI" */
4 <
1 > /* RCSid: $Id$ */
2   /*
3   *  sm_qtree.h - header file for routines using spherical quadtrees.
4   *
# Line 19 | Line 16
16   *
17   *              < -1:   it is an index to a set of objects
18   */
22 #include "object.h"
19  
20 + typedef struct _FUNC {
21 +    int (*func)();
22 +    int (*func_after)();
23 +    int *argptr;
24 + }FUNC;
25 +
26 + #define F_FUNC(f) (f.func)
27 + #define F_FUNC2(f) (f.func_after)
28 + #define F_ARGS(f) (f.argptr)
29   #define  QUADTREE               int
30  
31   #define  EMPTY          (-1)
# Line 37 | Line 42
42  
43  
44   #ifndef  QT_MAX_BLK
45 < #ifdef  BIGMEM
41 < #define  QT_MAX_BLK     16383           /* maximum quadtree block */
42 < #else
45 > #ifdef  SMLMEM
46   #define  QT_MAX_BLK     2047            /* maximum quadtree block */
47 + #else
48 + #define  QT_MAX_BLK     16383           /* maximum quadtree block */
49   #endif
50   #endif
51  
# Line 64 | Line 69
69   #define QT_SET_NTH_ELEM(s,n)   ((s)[(n)])  
70  
71   #define QT_CLEAR_SET(s)        ((s)[0] = 0)
72 < #define QT_SET_NEXT_ELEM(p)    (*(p)++)
72 > #define QT_SET_NEXT_ELEM(p)    (*(++p))
73   #define QT_SET_PTR(s)          (&((s)[1]))
74  
75  
# Line 72 | Line 77
77   #define MAXCSET          2*QT_MAXSET
78   #define QT_MAXCSET       MAXCSET
79   #ifndef QT_SET_THRESHOLD
80 < #define QT_SET_THRESHOLD 30  
80 > #define QT_SET_THRESHOLD 32  
81   #endif
82  
83   #ifndef QT_MAX_LEVELS
84 < #define QT_MAX_LEVELS     12
84 > #define QT_MAX_LEVELS     10
85   #endif
86  
87 < #define QT_FILL_THRESHOLD 3
87 > #define QT_FILL_THRESHOLD 2
88   #define QT_EXPAND   8
89   #define QT_COMPRESS 16
90   #define QT_DONE 32
# Line 93 | Line 98
98   #define QT_FLAG_SET_MODIFIED(f)   ((f) |= QT_MODIFIED)
99  
100   #define qtSubdivide(qt) (qt = qtAlloc(),QT_CLEAR_CHILDREN(qt))
101 < #define qtSubdivide_tri(v0,v1,v2,a,b,c) (EDGE_MIDPOINT_VEC3(a,v0,v1), \
102 <                                         EDGE_MIDPOINT_VEC3(b,v1,v2), \
103 <                                         EDGE_MIDPOINT_VEC3(c,v2,v0))
101 > #define qtSubdivide_tri(v0,v1,v2,a,b,c) (EDGE_MIDPOINT(a,v1,v2), \
102 >                                         EDGE_MIDPOINT(b,v2,v0), \
103 >                                         EDGE_MIDPOINT(c,v0,v1))
104  
105   extern QUADTREE  qtnewleaf(), qtaddelem(), qtdelelem();
106  
107   extern QUADTREE  *quad_block[QT_MAX_BLK];       /* quadtree blocks */
108 < extern int4  *quad_flag;                        /* zeroeth quadtree flag */
108 > extern int32  *quad_flag;                       /* zeroeth quadtree flag */
109  
110   extern OBJECT   **qtsettab;             /* quadtree leaf node table */
111   extern QUADTREE  qtnumsets;             /* number of used set indices */
112 < extern int4   *qtsetflag;
112 > extern int32   *qtsetflag;
113   #ifdef DEBUG
114   extern OBJECT   *qtqueryset();
115   #else
116   #define qtqueryset(qt)  (qtsettab[QT_SET_INDEX(qt)])
117   #endif
118 <
118 > #if 0
119 > #define qtremovelast(qt) ((*(qtqueryset(qt)))--)
120 > #endif
121   #define qtinset(qt,id)  inset(qtqueryset(qt),id)
122   #define qtgetset(os,qt) setcopy(os,qtqueryset(qt))
123  
124 +
125 + #define SIDES_GTR(b0,b1,b2,s0,s1,s2,a,b,c) \
126 +    (s0 = ((b0[0] > a?4:0) | (b1[0] > a?2:0) | (b2[0] > a?1:0)), \
127 +     s1 = ((b0[1] > b?4:0) | (b1[1] > b?2:0) | (b2[1] > b?1:0)), \
128 +     s2 = ((b0[2] > c?4:0) | (b1[2] > c?2:0) | (b2[2] > c?1:0)))
129 +
130 + #define SIDES_LESS(b0,b1,b2,s0,s1,s2,a,b,c) \
131 +    (s0 = ((b0[0] < a?4:0) | (b1[0] < a?2:0) | (b2[0] < a?1:0)), \
132 +     s1 = ((b0[1] < b?4:0) | (b1[1] < b?2:0) | (b2[1] < b?1:0)), \
133 +     s2 = ((b0[2] < c?4:0) | (b1[2] < c?2:0) | (b2[2] < c?1:0)))
134 +
135   /*
136   QUADTREE qtRoot_point_locate(qt,q0,q1,q2,peq,pt,r0,r1,r2)
137     QUADTREE qt;
# Line 133 | Line 151 | extern QUADTREE qtRoot_remove_tri();
151   extern QUADTREE qtAdd_tri();
152   extern QUADTREE qtRoot_visit_tri_edges();
153   extern QUADTREE qtRoot_trace_ray();
154 +
155 +
156 +
157 +
158 +
159 +

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines