ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/sm_stree.h
Revision: 3.2
Committed: Fri Sep 11 11:52:27 1998 UTC (25 years, 7 months ago) by gwlarson
Content type: text/plain
Branch: MAIN
Changes since 3.1: +5 -2 lines
Log Message:
fixed triangle insertion using edge tracing

File Contents

# User Rev Content
1 gwlarson 3.1 /* Copyright (c) 1998 Silicon Graphics, Inc. */
2    
3     /* SCCSid "$SunId$ SGI" */
4    
5     /*
6     * sm_stree.h - header file for spherical quadtree code:
7     *
8     */
9    
10     #include "sm_qtree.h"
11    
12     #define SQRT3_INV 0.5773502692
13    
14    
15     typedef struct _STREE {
16     QUADTREE root; /* quadtree triangulation of sphere */
17     FVECT center; /* sphere center */
18     FVECT base[4]; /* 4 vertices on sphere that define base triangulation
19     of 4 triangles: assume cover sphere and triangles
20     are base verts (0,1,2),(0,2,3),(0,3,1), and (1,3,2)
21     */
22     }STREE;
23    
24     #define ST_ROOT(s) ((s)->root)
25 gwlarson 3.2 #define ST_ROOT_PTR(s) (&(s)->root)
26 gwlarson 3.1 #define ST_NTH_ROOT(s,n) QT_NTH_CHILD(ST_ROOT(s),n)
27     #define ST_NTH_ROOT_PTR(s,n) QT_NTH_CHILD_PTR(ST_ROOT(s),n)
28     #define ST_CLEAR_ROOT(s) QT_CLEAR_CHILDREN(ST_ROOT(s))
29    
30     #define ST_CENTER(s) ((s)->center)
31     #define ST_SET_CENTER(s,b) VCOPY(ST_CENTER(s),b)
32     #define ST_BASE(s) ((s)->base)
33     #define ST_NTH_BASE(s,n) ((s)->base[(n)])
34     #define ST_SET_NTH_BASE(s,n,b) VCOPY(ST_NTH_BASE(s,n),b)
35     #define ST_SET_BASE(s,b) (VCOPY(ST_NTH_BASE(s,0),(b)[0]), \
36     VCOPY(ST_NTH_BASE(s,1),(b)[1]), \
37     VCOPY(ST_NTH_BASE(s,2),(b)[2]), \
38     VCOPY(ST_NTH_BASE(s,3),(b)[3]))
39     #define ST_COORD(s,p,r) VSUB(r,p,ST_CENTER(s))
40 gwlarson 3.2 #define ST_CLEAR_FLAGS(s) qtClearAllFlags()
41 gwlarson 3.1 /* STREE functions
42    
43    
44     STREE *stInit(STREE *st)
45     Initialize STREE: if st = NULL, allocate a new one, else clear
46     return pointer to initialized structure
47    
48     QUADTREE *stPoint_locate(STREE *st,FVECT pt)
49     Find stree node that projection of pt on sphere falls in
50    
51     stInsert_tri()
52     for every quadtree tri in the base- find node all leaf nodes that
53     tri overlaps and add tri to set. If this causes any of the nodes
54     to be over threshhold- split
55     stDelete_tri()
56     for every quadtree tri in the base- find node all leaf nodes that
57     tri overlaps. If this causes any of the nodes to be under
58     threshold- merge
59     */
60     extern int stTri_verts[4][3];
61 gwlarson 3.2 extern int stTri_nbrs[4][3];
62 gwlarson 3.1 extern FVECT stDefault_base[4];
63    
64    
65 gwlarson 3.2 extern STREE *stAlloc();
66     extern QUADTREE *stPoint_locate_cell();
67 gwlarson 3.1
68    
69    
70    
71    
72