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

Comparing ray/src/cv/bsdfrbf.c (file contents):
Revision 2.19 by greg, Sun Mar 2 01:56:03 2014 UTC vs.
Revision 2.20 by greg, Sat Mar 8 18:16:49 2014 UTC

# Line 41 | Line 41 | static const char RCSid[] = "$Id$";
41  
42   #define RBFALLOCB       10              /* RBF allocation block size */
43  
44 <                                /* our loaded grid for this incident angle */
44 >                                /* our loaded grid or comparison DSFs */
45   GRIDVAL                 dsf_grid[GRIDRES][GRIDRES];
46  
47   /* Start new DSF input grid */
# Line 83 | Line 83 | add_bsdf_data(double theta_out, double phi_out, double
83  
84          pos_from_vec(pos, ovec);
85  
86 <        dsf_grid[pos[0]][pos[1]].vsum += val;
87 <        dsf_grid[pos[0]][pos[1]].nval++;
86 >        dsf_grid[pos[0]][pos[1]].sum.v += val;
87 >        dsf_grid[pos[0]][pos[1]].sum.n++;
88   }
89  
90   /* Compute minimum BSDF from histogram (does not clear) */
# Line 116 | Line 116 | empty_region(int x0, int x1, int y0, int y1)
116  
117          for (x = x0; x < x1; x++)
118              for (y = y0; y < y1; y++)
119 <                if (dsf_grid[x][y].nval)
119 >                if (dsf_grid[x][y].sum.n)
120                          return(0);
121          return(1);
122   }
# Line 134 | Line 134 | smooth_region(int x0, int x1, int y0, int y1)
134          memset(xvec, 0, sizeof(xvec));
135          for (x = x0; x < x1; x++)
136              for (y = y0; y < y1; y++)
137 <                if ((n = dsf_grid[x][y].nval) > 0) {
138 <                        double  z = dsf_grid[x][y].vsum;
137 >                if ((n = dsf_grid[x][y].sum.n) > 0) {
138 >                        double  z = dsf_grid[x][y].sum.v;
139                          rMtx[0][0] += x*x*(double)n;
140                          rMtx[0][1] += x*y*(double)n;
141                          rMtx[0][2] += x*(double)n;
# Line 158 | Line 158 | smooth_region(int x0, int x1, int y0, int y1)
158          sqerr = 0.0;                    /* compute mean squared error */
159          for (x = x0; x < x1; x++)
160              for (y = y0; y < y1; y++)
161 <                if ((n = dsf_grid[x][y].nval) > 0) {
162 <                        double  d = A*x + B*y + C - dsf_grid[x][y].vsum/n;
161 >                if ((n = dsf_grid[x][y].sum.n) > 0) {
162 >                        double  d = A*x + B*y + C - dsf_grid[x][y].sum.v/n;
163                          sqerr += n*d*d;
164                  }
165          if (sqerr <= nvs*SMOOTH_MSE)    /* below absolute MSE threshold? */
# Line 179 | Line 179 | create_lobe(RBFVAL *rvp, int x0, int x1, int y0, int y
179                                          /* compute average for region */
180          for (x = x0; x < x1; x++)
181              for (y = y0; y < y1; y++) {
182 <                vtot += dsf_grid[x][y].vsum;
183 <                nv += dsf_grid[x][y].nval;
182 >                vtot += dsf_grid[x][y].sum.v;
183 >                nv += dsf_grid[x][y].sum.n;
184              }
185          if (!nv) {
186                  fprintf(stderr, "%s: internal - missing samples in create_lobe\n",

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines