--- ray/src/common/octree.h 1998/08/24 16:38:44 2.4 +++ ray/src/common/octree.h 2003/06/06 16:38:47 2.9 @@ -1,13 +1,15 @@ -/* Copyright (c) 1986 Regents of the University of California */ - -/* SCCSid "$SunId$ LBL" */ - +/* RCSid $Id: octree.h,v 2.9 2003/06/06 16:38:47 schorsch Exp $ */ /* * octree.h - header file for routines using octrees. - * - * 7/28/85 */ +#ifndef _RAD_OCTREE_H_ +#define _RAD_OCTREE_H_ +#ifdef __cplusplus +extern "C" { +#endif +#include "copyright.h" + /* * An octree is expressed as an integer which is either * an index to eight other nodes, the empty tree, or an index @@ -36,10 +38,10 @@ #define octti(ot) (((ot)&03777)<<3)/* octree index in block */ #ifndef MAXOBLK -#ifdef BIGMEM -#define MAXOBLK 32767 /* maximum octree block */ -#else +#ifdef SMLMEM #define MAXOBLK 4095 /* maximum octree block */ +#else +#define MAXOBLK 32767 /* maximum octree block */ #endif #endif @@ -47,8 +49,6 @@ extern OCTREE *octblock[MAXOBLK]; /* octree blocks */ #define octkid(ot,br) (octblock[octbi(ot)][octti(ot)+br]) -extern OCTREE octalloc(), combine(), fullnode(); - /* * The cube structure is used to hold an octree and its cubic * boundaries. @@ -83,3 +83,24 @@ extern CUBE thescene; /* the main scene */ #define O_MISS 0 /* no intersection */ #define O_HIT 1 /* intersection */ #define O_IN 2 /* cube contained entirely */ + + +extern OCTREE octalloc(void); +extern void octfree(OCTREE ot); +extern void octdone(void); +extern OCTREE combine(OCTREE ot); +extern void culocate(CUBE *cu, FVECT pt); +extern void cucopy(CUBE *cu1, CUBE *cu2); +extern int incube(CUBE *cu, FVECT pt); + +extern int readoct(char *fname, int load, CUBE *scene, char *ofn[]); + +extern void readscene(FILE *fp, int objsiz); +extern void writescene(int firstobj, int nobjs, FILE *fp); + + +#ifdef __cplusplus +} +#endif +#endif /* _RAD_OCTREE_H_ */ +