--- ray/src/rt/virtuals.c 1991/06/26 11:54:43 1.14 +++ ray/src/rt/virtuals.c 1991/07/11 16:43:38 1.16 @@ -19,7 +19,7 @@ static char SCCSid[] = "$SunId$ LBL"; #include "random.h" -#define MINSAMPLES 3 /* minimum number of pretest samples */ +#define MINSAMPLES 5 /* minimum number of pretest samples */ #define STESTMAX 30 /* maximum seeks per sample */ @@ -267,7 +267,7 @@ register int sn; /* target source number */ FVECT offsdir; double or, d; int infront; - int ssn; + int stestlim, ssn; int nhit, nok; register int i, n; /* return if pretesting disabled */ @@ -293,12 +293,13 @@ register int sn; /* target source number */ #endif /* sample */ or = sqrt(or2); - ssn = STESTMAX*n; + stestlim = n*STESTMAX; + ssn = 0; nhit = nok = 0; while (n-- > 0) { /* get sample point */ do { - if (--ssn < 0) { + if (ssn >= stestlim) { #ifdef DEBUG fprintf(stderr, "\ttoo hard to hit\n"); #endif @@ -306,7 +307,8 @@ register int sn; /* target source number */ } for (i = 0; i < 3; i++) offsdir[i] = or*(1. - - 2.*urand(931*i+5827+ssn)); + 2.*urand(urind(931*i+5827,ssn))); + ssn++; for (i = 0; i < 3; i++) sr.rorg[i] = oc[i] + offsdir[i]; d = DOT(offsdir,onorm);