118 |
|
*/ |
119 |
|
/* add source width if flat */ |
120 |
|
if (np->specfl & SP_FLAT) |
121 |
< |
au2 = av2 = omega * (0.25/PI); |
121 |
> |
au2 = av2 = (1. - dstrsrc) * omega * (0.25/PI); |
122 |
|
else |
123 |
|
au2 = av2 = 0.0; |
124 |
|
au2 += np->u_alpha*np->u_alpha; |
265 |
|
/* diffuse reflection */ |
266 |
|
nd.rdiff = 1.0 - nd.trans - nd.rspec; |
267 |
|
|
268 |
< |
if (r->ro != NULL && isflat(r->ro->otype)) |
268 |
> |
if (r->ro != NULL && isflat(r->ro->otype) && |
269 |
> |
DOT(r->pert,r->pert) <= FTINY*FTINY) |
270 |
|
nd.specfl |= SP_FLAT; |
271 |
|
|
272 |
|
getacoords(&nd); /* set up coordinates */ |
324 |
|
if (normalize(np->v) == 0.0) { |
325 |
|
if (fabs(np->u_alpha - np->v_alpha) > 0.001) |
326 |
|
objerror(np->mp, WARNING, "illegal orientation vector"); |
327 |
< |
getperpendicular(np->u, np->pnorm, 1); /* punting */ |
327 |
> |
getperpendicular(np->u, np->pnorm, 0); /* punting */ |
328 |
|
fcross(np->v, np->pnorm, np->u); |
329 |
|
np->u_alpha = np->v_alpha = sqrt( 0.5 * |
330 |
|
(np->u_alpha*np->u_alpha + np->v_alpha*np->v_alpha) ); |
361 |
|
nstarget = 1; |
362 |
|
} |
363 |
|
scolorblack(scol); |
364 |
< |
dimlist[ndims++] = (int)(size_t)np->mp; |
364 |
> |
dimlist[ndims_inc] = (int)(size_t)np->mp; |
365 |
|
maxiter = MAXITER*nstarget; |
366 |
|
for (nstaken = ntrials = 0; (nstaken < nstarget) & |
367 |
|
(ntrials < maxiter); ntrials++) { |
428 |
|
} else |
429 |
|
nstarget = 1; |
430 |
|
} |
431 |
< |
dimlist[ndims++] = (int)(size_t)np->mp; |
431 |
> |
dimlist[ndims_inc] = (int)(size_t)np->mp; |
432 |
|
maxiter = MAXITER*nstarget; |
433 |
|
for (nstaken = ntrials = 0; (nstaken < nstarget) & |
434 |
|
(ntrials < maxiter); ntrials++) { |