ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/vwrays.c
(Generate patch)

Comparing ray/src/util/vwrays.c (file contents):
Revision 3.16 by greg, Sat Aug 20 20:57:52 2011 UTC vs.
Revision 3.19 by greg, Mon Mar 4 22:41:20 2019 UTC

# Line 33 | Line 33 | int    fromstdin = 0;
33  
34   int     unbuffered = 0;
35  
36 + int     repeatcnt = 1;
37 +
38   char    *progname;
39  
40  
# Line 44 | Line 46 | main(
46   {
47          char    *err;
48          int     rval, getdim = 0;
49 <        register int    i;
49 >        int     i;
50  
51          progname = argv[0];
52          if (argc < 2)
# Line 103 | Line 105 | main(
105                                  exit(1);
106                          }
107                          break;
108 +                case 'c':                       /* repeat count */
109 +                        repeatcnt = atoi(argv[++i]);
110 +                        break;
111                  case 'p':                       /* pixel aspect or jitter */
112                          if (argv[i][2] == 'a')
113                                  pa = atof(argv[++i]);
# Line 156 | Line 161 | main(
161          exit(0);
162   userr:
163          fprintf(stderr,
164 <        "Usage: %s [ -i -u -f{a|f|d} | -d ] { view opts .. | picture [zbuf] }\n",
164 >        "Usage: %s [ -i -u -f{a|f|d} -c rept | -d ] { view opts .. | picture [zbuf] }\n",
165                          progname);
166          exit(1);
167   }
# Line 185 | Line 190 | pix2rays(
190          RREAL   loc[2];
191          int     pp[2];
192          double  d;
193 <        register int    i;
193 >        int     i;
194  
195          while (fscanf(fp, "%lf %lf", &px, &py) == 2) {
196                  px += .5; py += .5;
197                  loc[0] = px/rs.xr; loc[1] = py/rs.yr;
198                  if (zfd >= 0) {
199 +                        if ((loc[0] < 0) | (loc[0] >= 1) |
200 +                                        (loc[1] < 0) | (loc[1] >= 1)) {
201 +                                fprintf(stderr, "%s: input pixel outside image\n",
202 +                                                progname);
203 +                                exit(1);
204 +                        }
205                          loc2pix(pp, &rs, loc[0], loc[1]);
206                          if (lseek(zfd,
207                                  (pp[1]*scanlen(&rs)+pp[0])*sizeof(float),
# Line 234 | Line 245 | putrays(void)
245          float   *zbuf = NULL;
246          int     sc;
247          double  d;
248 <        register int    si, i;
248 >        int     si, i, c;
249  
250          if (zfd >= 0) {
251                  zbuf = (float *)malloc(scanlen(&rs)*sizeof(float));
# Line 253 | Line 264 | putrays(void)
264                          }
265                  }
266                  for (si = 0; si < scanlen(&rs); si++) {
267 +                    for (c = repeatcnt; c-- > 0; ) {
268                          pix2loc(loc, &rs, si, sc);
269                          jitterloc(loc);
270                          d = viewray(rorg, rdir, &vw, loc[0], loc[1]);
# Line 268 | Line 280 | putrays(void)
280                                  rdir[0] *= d; rdir[1] *= d; rdir[2] *= d;
281                          }
282                          (*putr)(rorg, rdir);
283 +                    }
284                  }
285          }
286          if (zfd >= 0)
# Line 297 | Line 310 | putf(          /* put out ray in float format */
310  
311          v[0] = ro[0]; v[1] = ro[1]; v[2] = ro[2];
312          v[3] = rd[0]; v[4] = rd[1]; v[5] = rd[2];
313 <        fwrite(v, sizeof(float), 6, stdout);
313 >        putbinary(v, sizeof(float), 6, stdout);
314   }
315  
316  
# Line 311 | Line 324 | putd(          /* put out ray in double format */
324  
325          v[0] = ro[0]; v[1] = ro[1]; v[2] = ro[2];
326          v[3] = rd[0]; v[4] = rd[1]; v[5] = rd[2];
327 <        fwrite(v, sizeof(double), 6, stdout);
327 >        putbinary(v, sizeof(double), 6, stdout);
328   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines