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

Comparing ray/src/common/octree.h (file contents):
Revision 1.3 by greg, Thu Sep 6 23:32:39 1990 UTC vs.
Revision 2.5 by greg, Sat Feb 22 02:07:22 2003 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1986 Regents of the University of California */
2 <
3 < /* SCCSid "$SunId$ LBL" */
4 <
1 > /* RCSid: $Id$ */
2   /*
3   *  octree.h - header file for routines using octrees.
4 + */
5 +
6 + /* ====================================================================
7 + * The Radiance Software License, Version 1.0
8   *
9 < *     7/28/85
9 > * Copyright (c) 1990 - 2002 The Regents of the University of California,
10 > * through Lawrence Berkeley National Laboratory.   All rights reserved.
11 > *
12 > * Redistribution and use in source and binary forms, with or without
13 > * modification, are permitted provided that the following conditions
14 > * are met:
15 > *
16 > * 1. Redistributions of source code must retain the above copyright
17 > *         notice, this list of conditions and the following disclaimer.
18 > *
19 > * 2. Redistributions in binary form must reproduce the above copyright
20 > *       notice, this list of conditions and the following disclaimer in
21 > *       the documentation and/or other materials provided with the
22 > *       distribution.
23 > *
24 > * 3. The end-user documentation included with the redistribution,
25 > *           if any, must include the following acknowledgment:
26 > *             "This product includes Radiance software
27 > *                 (http://radsite.lbl.gov/)
28 > *                 developed by the Lawrence Berkeley National Laboratory
29 > *               (http://www.lbl.gov/)."
30 > *       Alternately, this acknowledgment may appear in the software itself,
31 > *       if and wherever such third-party acknowledgments normally appear.
32 > *
33 > * 4. The names "Radiance," "Lawrence Berkeley National Laboratory"
34 > *       and "The Regents of the University of California" must
35 > *       not be used to endorse or promote products derived from this
36 > *       software without prior written permission. For written
37 > *       permission, please contact [email protected].
38 > *
39 > * 5. Products derived from this software may not be called "Radiance",
40 > *       nor may "Radiance" appear in their name, without prior written
41 > *       permission of Lawrence Berkeley National Laboratory.
42 > *
43 > * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
44 > * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
45 > * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
46 > * DISCLAIMED.   IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
47 > * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
48 > * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
49 > * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
50 > * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 > * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
52 > * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 > * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54 > * SUCH DAMAGE.
55 > * ====================================================================
56 > *
57 > * This software consists of voluntary contributions made by many
58 > * individuals on behalf of Lawrence Berkeley National Laboratory.   For more
59 > * information on Lawrence Berkeley National Laboratory, please see
60 > * <http://www.lbl.gov/>.
61   */
62  
63   /*
# Line 20 | Line 72
72   *              < -1:   it is an index to a set of objects
73   */
74  
75 < typedef int  OCTREE;
75 > #ifndef  OCTREE
76 > #define  OCTREE         int
77 > #endif
78  
79   #define  EMPTY          (-1)
80  
# Line 29 | Line 83 | typedef int  OCTREE;
83   #define  istree(ot)     ((ot) > EMPTY)
84  
85   #define  oseti(ot)      (-(ot)-2)       /* object set index */
86 < #define  octbi(ot)      ((ot)>>8)       /* octree block index */
87 < #define  octti(ot)      (((ot)&0377)<<3)/* octree index in block */
86 > #define  OCTBLKSIZ      04000           /* octree block size */
87 > #define  octbi(ot)      ((ot)>>11)      /* octree block index */
88 > #define  octti(ot)      (((ot)&03777)<<3)/* octree index in block */
89  
90 + #ifndef  MAXOBLK
91 + #ifdef  BIGMEM
92 + #define  MAXOBLK        32767           /* maximum octree block */
93 + #else
94   #define  MAXOBLK        4095            /* maximum octree block */
95 + #endif
96 + #endif
97  
98   extern OCTREE  *octblock[MAXOBLK];      /* octree blocks */
99  
100   #define  octkid(ot,br)  (octblock[octbi(ot)][octti(ot)+br])
101  
41 extern OCTREE  octalloc(), combine(), fullnode();
42
102   /*
103   *      The cube structure is used to hold an octree and its cubic
104   *      boundaries.
# Line 61 | Line 120 | extern CUBE  thescene;                 /* the main scene */
120   #define  IO_FILES       010             /* object file names */
121   #define  IO_BOUNDS      020             /* octree boundary */
122   #define  IO_ALL         (~0)            /* everything */
123 +                                /* octree format identifier */
124 + #define  OCTFMT         "Radiance_octree"
125                                  /* magic number for octree files */
126 < #define  OCTMAGIC       (283+sizeof(OBJECT))
126 > #define  MAXOBJSIZ      8               /* maximum sizeof(OBJECT) */
127 > #define  OCTMAGIC       ( 4 *MAXOBJSIZ+251)     /* increment first value */
128                                  /* octree node types */
129   #define  OT_EMPTY       0
130   #define  OT_FULL        1
# Line 71 | Line 133 | extern CUBE  thescene;                 /* the main scene */
133   #define  O_MISS         0               /* no intersection */
134   #define  O_HIT          1               /* intersection */
135   #define  O_IN           2               /* cube contained entirely */
136 +
137 + #ifdef NOPROTO
138 +
139 + extern OCTREE   octalloc();
140 + extern void     octfree();
141 + extern void     octdone();
142 + extern OCTREE   combine();
143 + extern void     culocate();
144 + extern void     cucopy();
145 + extern int      incube();
146 +
147 + extern int      readoct();
148 +
149 + #else
150 +
151 + extern OCTREE   octalloc(void);
152 + extern void     octfree(OCTREE ot);
153 + extern void     octdone(void);
154 + extern OCTREE   combine(OCTREE ot);
155 + extern void     culocate(CUBE *cu, FVECT pt);
156 + extern void     cucopy(CUBE *cu1, CUBE *cu2);
157 + extern int      incube(CUBE *cu, FVECT pt);
158 +
159 + extern int      readoct(char *fname, int load, CUBE *scene, char *ofn[]);
160 +
161 + #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines