516 |
|
{ |
517 |
|
int i; |
518 |
|
|
519 |
< |
uva[1][0] = 0.5 - frandom(); |
520 |
< |
uva[1][1] = 0.5 - frandom(); |
521 |
< |
uva[1][2] = 0.5 - frandom(); |
522 |
< |
for (i = 3; i--; ) |
523 |
< |
if ((-0.6 < nrm[i]) & (nrm[i] < 0.6)) |
524 |
< |
break; |
525 |
< |
if (i < 0) { |
519 |
> |
if (!getperpendicular(uva[0], nrm)) { |
520 |
|
fputs(progname, stderr); |
521 |
|
fputs(": bad surface normal in make_axes!\n", stderr); |
522 |
|
exit(1); |
523 |
|
} |
524 |
< |
uva[1][i] = 1.0; |
531 |
< |
VCROSS(uva[0], uva[1], nrm); |
532 |
< |
normalize(uva[0]); |
533 |
< |
VCROSS(uva[1], nrm, uva[0]); |
524 |
> |
fcross(uva[1], nrm, uva[0]); |
525 |
|
} |
526 |
|
|
527 |
|
/* Illegal sender surfaces end up here */ |
783 |
|
alt = (row+samp3[1])*RAH; |
784 |
|
azi = (2.*PI)*(col+samp3[2]-.5)/rnaz(row); |
785 |
|
duvw[2] = cos(alt); /* measured from horizon */ |
786 |
< |
duvw[0] = tcos(azi)*duvw[2]; |
787 |
< |
duvw[1] = tsin(azi)*duvw[2]; |
786 |
> |
duvw[0] = tsin(azi)*duvw[2]; |
787 |
> |
duvw[1] = tcos(azi)*duvw[2]; |
788 |
|
duvw[2] = sqrt(1. - duvw[2]*duvw[2]); |
789 |
|
for (i = 3; i--; ) |
790 |
|
orig_dir[1][i] = -duvw[0]*p->udir[i] - |
835 |
|
|
836 |
|
while (n--) { /* stratified sampling */ |
837 |
|
SDmultiSamp(samp2, 2, (n+frandom())/sampcnt); |
838 |
< |
if (!bo_getvec(duvw, b+samp2[1], kbasis[bi])) |
838 |
> |
if (!bi_getvec(duvw, b+samp2[1], kbasis[bi])) |
839 |
|
return(0); |
840 |
|
for (i = 3; i--; ) |
841 |
|
orig_dir[1][i] = duvw[0]*p->udir[i] + |