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

Comparing ray/src/rt/p_data.c (file contents):
Revision 2.14 by greg, Thu Feb 22 20:11:54 2024 UTC vs.
Revision 2.15 by greg, Tue Mar 12 16:54:51 2024 UTC

# Line 307 | Line 307 | p_specdata(                    /* varied spectrum from (N+1)-D file */
307                  if ((errno == EDOM) | (errno == ERANGE))
308                          goto computerr;
309          }
310 <        step = dp->dim[dp->nd-1].siz / (dp->dim[dp->nd-1].ne - 1.0);
311 <        scdat = (COLORV *)malloc(sizeof(COLORV)*dp->dim[dp->nd-1].ne);
310 >        dp = datavector(dp, pt);        /* interpolate spectrum */
311 >        step = dp->dim[0].siz / (dp->dim[0].ne - 1.0);
312 >        scdat = (COLORV *)malloc(sizeof(COLORV)*dp->dim[0].ne);
313          if (scdat == NULL)
314                  objerror(m, SYSTEM, "out of memory");
315 <        for (i = dp->dim[dp->nd-1].ne; i-- > 0; ) {
316 <                double  bval[2];
317 <                pt[dp->nd-1] = dp->dim[dp->nd-1].org + i*step;
317 <                bval[0] = datavalue(dp, pt);
318 <                bval[1] = pt[dp->nd-1];
315 >        for (i = dp->dim[0].ne; i-- > 0; ) {
316 >                pt[1] = dp->dim[0].org + i*step;
317 >                pt[0] = datavalue(dp, pt+1);
318                  errno = 0;
319 <                scdat[i] = funvalue(m->oargs.sarg[0], 2, bval);
319 >                scdat[i] = funvalue(m->oargs.sarg[0], 2, pt);
320                  if ((errno == EDOM) | (errno == ERANGE))
321                          goto computerr;
322          }
323 <        convertscolorcol(scval, scdat, dp->dim[dp->nd-1].ne,
324 <                        dp->dim[dp->nd-1].org-.5*step,
325 <                        dp->dim[dp->nd-1].org+dp->dim[dp->nd-1].siz+.5*step);
323 >        convertscolorcol(scval, scdat, dp->dim[0].ne,
324 >                        dp->dim[0].org-.5*step,
325 >                        dp->dim[0].org+dp->dim[0].siz+.5*step);
326          free(scdat);
327 +        free(dp);
328          smultscolor(r->pcol, scval);
329          return(0);
330   computerr:
# Line 340 | Line 340 | p_specpict(                    /* interpolate hyperspectral image data
340   )
341   {
342          SCOLOR          scdat, scval;
343 <        double          pt[3];
343 >        double          pt[2];
344          DATARRAY        *dp;
345          MFUNC           *mf;
346          double          step;
# Line 355 | Line 355 | p_specpict(                    /* interpolate hyperspectral image data
355          pt[0] = evalue(mf->ep[1]);
356          if ((errno == EDOM) | (errno == ERANGE))
357                  goto computerr;
358 <        dp = getspec(m->oargs.sarg[1]);
359 <        step = dp->dim[2].siz / (dp->dim[2].ne - 1.0);
360 <        for (i = dp->dim[2].ne; i-- > 0; ) {
361 <                double  bval[2];
362 <                pt[2] = dp->dim[2].org + i*step;
363 <                bval[0] = datavalue(dp, pt);
364 <                bval[1] = pt[2];
358 >                                        /* interpolate spectrum */
359 >        dp = datavector(getspec(m->oargs.sarg[1]), pt);
360 >        step = dp->dim[0].siz / (dp->dim[0].ne - 1.0);
361 >        for (i = dp->dim[0].ne; i-- > 0; ) {
362 >                pt[1] = dp->dim[0].org + i*step;
363 >                pt[0] = dp->arr.d[i];   /* datavalue(dp, pt+1); */
364                  errno = 0;
365 <                scdat[i] = funvalue(m->oargs.sarg[0], 2, bval);
365 >                scdat[i] = funvalue(m->oargs.sarg[0], 2, pt);
366                  if ((errno == EDOM) | (errno == ERANGE))
367                          goto computerr;
368          }
369 <        convertscolorcol(scval, scdat, dp->dim[2].ne,
370 <                        dp->dim[2].org-.5*step,
371 <                        dp->dim[2].org+dp->dim[2].siz+.5*step);
369 >        convertscolorcol(scval, scdat, dp->dim[0].ne,
370 >                        dp->dim[0].org-.5*step,
371 >                        dp->dim[0].org+dp->dim[0].siz+.5*step);
372 >        free(dp);
373          smultscolor(r->pcol, scval);
374          return(0);
375   computerr:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines