| 269 |
|
|
| 270 |
|
/* Initialize an unused BSDF struct (simply clears to zeroes) */ |
| 271 |
|
void |
| 272 |
< |
SDclearBSDF(SDData *sd) |
| 272 |
> |
SDclearBSDF(SDData *sd, const char *fname) |
| 273 |
|
{ |
| 274 |
< |
if (sd != NULL) |
| 275 |
< |
memset(sd, 0, sizeof(SDData)); |
| 274 |
> |
if (sd == NULL) |
| 275 |
> |
return; |
| 276 |
> |
memset(sd, 0, sizeof(SDData)); |
| 277 |
> |
if (fname == NULL) |
| 278 |
> |
return; |
| 279 |
> |
SDclipName(sd->name, fname); |
| 280 |
|
} |
| 281 |
|
|
| 282 |
|
/* Free data associated with BSDF struct */ |
| 455 |
|
bitmask_t ndx, coord[MS_MAXDIM]; |
| 456 |
|
|
| 457 |
|
while (n > MS_MAXDIM) /* punt for higher dimensions */ |
| 458 |
< |
t[--n] = rand()*(1./RAND_MAX); |
| 458 |
> |
t[--n] = rand()*(1./(RAND_MAX+.5)); |
| 459 |
|
nBits = (8*sizeof(bitmask_t) - 1) / n; |
| 460 |
|
ndx = randX * (double)((bitmask_t)1 << (nBits*n)); |
| 461 |
|
/* get coordinate on Hilbert curve */ |
| 463 |
|
/* convert back to [0,1) range */ |
| 464 |
|
scale = 1. / (double)((bitmask_t)1 << nBits); |
| 465 |
|
while (n--) |
| 466 |
< |
t[n] = scale * ((double)coord[n] + rand()*(1./RAND_MAX)); |
| 466 |
> |
t[n] = scale * ((double)coord[n] + rand()*(1./(RAND_MAX+.5))); |
| 467 |
|
} |
| 468 |
|
|
| 469 |
|
#undef MS_MAXDIM |