--- ray/src/util/vwrays.c 1997/07/09 12:18:03 3.1 +++ ray/src/util/vwrays.c 1997/10/17 10:42:45 3.3 @@ -124,7 +124,8 @@ char *argv[]; if (i == argc) normaspect(viewaspect(&vw), &pa, &rs.xr, &rs.yr); if (getdim) { - printf("-x %d -y %d\n", rs.xr, rs.yr); + printf("-x %d -y %d -ld%c\n", rs.xr, rs.yr, + vw.vaft > FTINY ? '+' : '-'); exit(0); } putrays(); @@ -139,10 +140,11 @@ userr: putrays() { + static FLOAT loc[2]; + static FVECT rorg, rdir; float *zbuf; int sc; - FLOAT loc[2]; - FVECT rorg, rdir; + double d; register int si, i; if (zfd >= 0) { @@ -163,7 +165,8 @@ putrays() } for (si = 0; si < scanlen(&rs); si++) { pix2loc(loc, &rs, si, sc); - if (viewray(rorg, rdir, &vw, loc[0], loc[1]) < -FTINY) + d = viewray(rorg, rdir, &vw, loc[0], loc[1]); + if (d < -FTINY) rorg[0] = rorg[1] = rorg[2] = rdir[0] = rdir[1] = rdir[2] = 0.; else if (zfd >= 0) @@ -171,6 +174,9 @@ putrays() rorg[i] += rdir[i]*zbuf[si]; rdir[i] = -rdir[i]; } + else if (d > FTINY) { + rdir[0] *= d; rdir[1] *= d; rdir[2] *= d; + } (*putr)(rorg, rdir); } }