--- ray/src/rt/rpict.c 1990/02/21 12:39:37 1.18 +++ ray/src/rt/rpict.c 1990/10/13 21:32:25 1.22 @@ -149,7 +149,7 @@ char *zfile, *oldfile; /* compute scanlines */ for (ypos -= ystep; ypos > -ystep; ypos -= ystep) { /* record progress */ - pctdone = 100.0*(vresolu-ypos-ystep)/vresolu; + pctdone = 100.0*(vresolu-1-ypos-ystep)/vresolu; /* bottom adjust? */ if (ypos < 0) { ystep += ypos; @@ -182,7 +182,8 @@ char *zfile, *oldfile; if (write(zfd, (char *)zbar[0], hresolu*sizeof(float)) < hresolu*sizeof(float)) goto writerr; - close(zfd); + if (close(zfd) == -1) + goto writerr; for (i = 0; i <= psample; i++) free((char *)zbar[i]); } @@ -234,7 +235,6 @@ int xres, y, ysize; COLOR vline[MAXDIV+1]; float zline[MAXDIV+1]; int b = ysize; - double z; register int i, j; for (i = 0; i < xres; i++) { @@ -320,8 +320,11 @@ int x, y; /* pixel position */ { static RAY thisray; /* our ray for this pixel */ - viewray(thisray.rorg, thisray.rdir, &ourview, - (x+pixjitter())/hresolu, (y+pixjitter())/vresolu); + if (viewray(thisray.rorg, thisray.rdir, &ourview, + (x+pixjitter())/hresolu, (y+pixjitter())/vresolu) < 0) { + setcolor(col, 0.0, 0.0, 0.0); + return(0.0); + } rayorigin(&thisray, NULL, PRIMARY, 1.0); @@ -329,7 +332,7 @@ int x, y; /* pixel position */ copycolor(col, thisray.rcol); /* return color */ - return(thisray.rot); /* return distance */ + return(thisray.rt); /* return distance */ }