--- ray/src/common/octree.c 1997/03/07 15:45:30 2.2 +++ ray/src/common/octree.c 2007/05/23 21:39:38 2.7 @@ -1,15 +1,12 @@ -/* Copyright (c) 1986 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: octree.c,v 2.7 2007/05/23 21:39:38 greg Exp $"; #endif - /* * octree.c - routines dealing with octrees and cubes. - * - * 7/28/85 */ +#include "copyright.h" + #include "standard.h" #include "octree.h" @@ -33,15 +30,16 @@ octalloc() /* allocate an octree */ errno = 0; if (octbi(freet) >= MAXOBLK) return(EMPTY); - if ((octblock[octbi(freet)] = (OCTREE *)bmalloc( - (unsigned)256*8*sizeof(OCTREE))) == NULL) + if ((octblock[octbi(freet)] = (OCTREE *)malloc( + (unsigned)OCTBLKSIZ*8*sizeof(OCTREE))) == NULL) return(EMPTY); } - treetop += 8; + treetop++; return(freet); } +void octfree(ot) /* free an octree */ register OCTREE ot; { @@ -56,12 +54,15 @@ register OCTREE ot; } +void octdone() /* free EVERYTHING */ { register int i; for (i = 0; i < MAXOBLK; i++) { - bfree((char *)octblock[i], (unsigned)256*8*sizeof(OCTREE)); + if (octblock[i] == NULL) + break; + free((void *)octblock[i]); octblock[i] = NULL; } ofreelist = EMPTY; @@ -90,6 +91,7 @@ register OCTREE ot; } +void culocate(cu, pt) /* locate point within cube */ register CUBE *cu; register FVECT pt; @@ -110,6 +112,7 @@ register FVECT pt; } +void cucopy(cu1, cu2) /* copy cu2 into cu1 */ register CUBE *cu1, *cu2; { @@ -119,6 +122,7 @@ register CUBE *cu1, *cu2; } +int incube(cu, pt) /* determine if a point is inside a cube */ register CUBE *cu; register FVECT pt;