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

Comparing ray/src/common/bsdf_t.c (file contents):
Revision 3.15 by greg, Fri Jun 3 18:12:58 2011 UTC vs.
Revision 3.18 by greg, Tue Jun 28 21:13:46 2011 UTC

# Line 10 | Line 10 | static const char RCSid[] = "$Id$";
10   *
11   */
12  
13 + #define _USE_MATH_DEFINES
14   #include "rtio.h"
15   #include <stdlib.h>
16   #include <math.h>
# Line 299 | Line 300 | SDdotravTre(const SDNode *st, const double *pos, int c
300                                          bmin[i] = cmin[i] + csiz;
301                                  else
302                                          bmin[i] = cmin[i];
302                        for (i = SD_MAXDIM; i-- > st->ndim; )
303                                bmin[i] = .0;
303  
304                          rval += rv = SDdotravTre(st->u.t[n], pos, cmask,
305                                                          cf, cptr, bmin, csiz);
# Line 326 | Line 325 | SDdotravTre(const SDNode *st, const double *pos, int c
325                                  clim[i][0] = 0;
326                                  clim[i][1] = 1 << st->log2GR;
327                          }
329                                        /* fill in unused dimensions */
330                for (i = SD_MAXDIM; i-- > st->ndim; ) {
331                        clim[i][0] = 0; clim[i][1] = 1;
332                }
328   #if (SD_MAXDIM == 4)
329                  bmin[0] = cmin[0] + csiz*clim[0][0];
330                  for (cpos[0] = clim[0][0]; cpos[0] < clim[0][1]; cpos[0]++) {
331                      bmin[1] = cmin[1] + csiz*clim[1][0];
332                      for (cpos[1] = clim[1][0]; cpos[1] < clim[1][1]; cpos[1]++) {
333                          bmin[2] = cmin[2] + csiz*clim[2][0];
334 <                        for (cpos[2] = clim[2][0]; cpos[2] < clim[2][1]; cpos[2]++) {
335 <                            bmin[3] = cmin[3] + csiz*(cpos[3] = clim[3][0]);
334 >                        if (st->ndim == 3) {
335 >                            cpos[2] = clim[2][0];
336                              n = cpos[0];
337 <                            for (i = 1; i < st->ndim; i++)
337 >                            for (i = 1; i < 3; i++)
338                                  n = (n << st->log2GR) + cpos[i];
339 <                            for ( ; cpos[3] < clim[3][1]; cpos[3]++) {
339 >                            for ( ; cpos[2] < clim[2][1]; cpos[2]++) {
340                                  rval += rv = (*cf)(st->u.v[n++], bmin, csiz, cptr);
341                                  if (rv < 0)
342                                      return rv;
343 <                                bmin[3] += csiz;
343 >                                bmin[2] += csiz;
344                              }
345 <                            bmin[2] += csiz;
345 >                        } else {
346 >                            for (cpos[2] = clim[2][0]; cpos[2] < clim[2][1]; cpos[2]++) {
347 >                                bmin[3] = cmin[3] + csiz*(cpos[3] = clim[3][0]);
348 >                                n = cpos[0];
349 >                                for (i = 1; i < 4; i++)
350 >                                    n = (n << st->log2GR) + cpos[i];
351 >                                for ( ; cpos[3] < clim[3][1]; cpos[3]++) {
352 >                                    rval += rv = (*cf)(st->u.v[n++], bmin, csiz, cptr);
353 >                                    if (rv < 0)
354 >                                        return rv;
355 >                                    bmin[3] += csiz;
356 >                                }
357 >                                bmin[2] += csiz;
358 >                            }
359                          }
360                          bmin[1] += csiz;
361                      }
# Line 600 | Line 608 | SDgetTreCDist(const FVECT inVec, SDComponent *sdc)
608   {
609          const SDTre     *sdt;
610          double          inCoord[2];
603        int             vflags;
611          int             i;
612          SDTreCDst       *cd, *cdlast;
613                                          /* check arguments */
# Line 873 | Line 880 | load_bsdf_data(SDData *sd, ezxml_t wdb, int ndim)
880          SDSpectralDF    *df;
881          SDTre           *sdt;
882          char            *sdata;
876        int             i;
883                                          /* allocate BSDF component */
884          sdata = ezxml_txt(ezxml_child(wdb, "WavelengthDataDirection"));
885          if (!sdata)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines