--- ray/src/ot/oconv.c 1990/04/02 15:19:46 1.8 +++ ray/src/ot/oconv.c 1990/08/29 13:01:16 1.10 @@ -179,15 +179,15 @@ char *s; eputs(s) /* put string to stderr */ register char *s; { - static int inline = 0; + static int inln = 0; - if (!inline++) { + if (!inln++) { fputs(progname, stderr); fputs(": ", stderr); } fputs(s, stderr); if (*s && s[strlen(s)-1] == '\n') - inline = 0; + inln = 0; } @@ -195,10 +195,13 @@ addobject(cu, obj) /* add an object to a cube */ register CUBE *cu; OBJECT obj; { +#define nexti(n) ((ndx += cnt*cnt++)%(n)) + static unsigned long ndx; + static unsigned int cnt; CUBE cukid; OCTREE ot; OBJECT oset[MAXSET+1]; - int in; + int in, k; register int i, j; in = (*ofun[objptr(obj)->otype].funp)(objptr(obj), cu); @@ -259,12 +262,17 @@ OBJECT obj; /* then this object */ addobject(&cukid, obj); /* volumes last */ - for (j = 1; j <= oset[0]; j++) + k = nexti(oset[0]); /* random start */ + for (j = k+1; j <= oset[0]; j++) if (isvolume(objptr(oset[j])->otype)) addobject(&cukid, oset[j]); + for (j = 1; j <= k; j++) + if (isvolume(objptr(oset[j])->otype)) + addobject(&cukid, oset[j]); octkid(ot, i) = cukid.cutree; } cu->cutree = ot; } } +#undef nexti }