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

Comparing ray/src/util/glaresrc.c (file contents):
Revision 1.12 by greg, Fri Apr 12 10:28:36 1991 UTC vs.
Revision 1.13 by greg, Fri Apr 19 17:41:03 1991 UTC

# Line 72 | Line 72 | analyze()                      /* analyze our scene */
72                                          addsrcspan(newspan(left,h,v,spanbr));
73                                          left = hsize + 1;
74                                  }
75 <                                addindirect(h, spanbr[h+hsize]);
75 >                                addindirect(h, v, spanbr[h+hsize]);
76                          }
77                  }
78                  if (left < h)
# Line 83 | Line 83 | analyze()                      /* analyze our scene */
83   }
84  
85  
86 < addindirect(h, br)              /* add brightness to indirect illuminances */
87 < int     h;
86 > addindirect(h, v, br)           /* add brightness to indirect illuminances */
87 > int     h, v;
88   double  br;
89   {
90          double  tanb, d;
91 +        int     hl;
92          register int    i;
93  
94 <        if (h <= -hlim) {                       /* left region */
95 <                d = (double)(-h-hlim)/sampdens;
94 >        hl = hlim(v);
95 >        if (h <= -hl) {                 /* left region */
96 >                d = (double)(-h-hl)/sampdens;
97                  if (d >= 1.0-FTINY)
98                          return;
99                  tanb = d/sqrt(1.0-d*d);
# Line 104 | Line 106 | double br;
106                  }
107                  return;
108          }
109 <        if (h >= hlim) {                        /* right region */
110 <                d = (double)(-h+hlim)/sampdens;
109 >        if (h >= hl) {                  /* right region */
110 >                d = (double)(-h+hl)/sampdens;
111                  if (d <= -1.0+FTINY)
112                          return;
113                  tanb = d/sqrt(1.0-d*d);
# Line 120 | Line 122 | double br;
122          }
123                                          /* central region */
124          for (i = 0; i < nglardirs; i++) {
125 <                d = cos(h_theta(h) - indirect[i].theta);
125 >                d = cos(h_theta(h,v) - indirect[i].theta);
126                  if (d > 0.0) {
127                          indirect[i].sum += d * br;
128                          indirect[i].n += d;
# Line 131 | Line 133 | double br;
133  
134   comp_thresh()                   /* compute glare threshold */
135   {
134        SPANERR sperr;
136          int     h, v;
137          int     nsamps;
138          double  brsum, br;
# Line 142 | Line 143 | comp_thresh()                  /* compute glare threshold */
143          brsum = 0.0;
144          nsamps = 0;
145          for (v = vsize; v >= -vsize; v -= TSAMPSTEP) {
145                setspanerr(&sperr, v);
146                  for (h = -hsize; h <= hsize; h += TSAMPSTEP) {
147 <                        if ((br = getviewpix(h, v, &sperr)) < 0.0)
147 >                        if ((br = getviewpix(h, v)) < 0.0)
148                                  continue;
149                          brsum += br;
150                          nsamps++;
# Line 281 | Line 281 | register struct source *sp;
281          FVECT   dthis, dright;
282          register struct srcspan *ss;
283          int     h, n;
284 <        double  d;
284 >        double  hsum, vsum, d;
285  
286          sp->dom = 0.0;
287 <        sp->dir[0] = sp->dir[1] = sp->dir[2] = 0.0;
287 >        hsum = vsum = 0.0;
288          sp->brt = 0.0;
289          n = 0;
290          for (ss = sp->first; ss != NULL; ss = ss->next) {
291                  sp->brt += ss->brsum;
292                  n += ss->r - ss->l;
293 <                if (compdir(dright, ss->r, ss->v, NULL) < 0)
294 <                        compdir(dright, ss->r-2, ss->v, NULL);
295 <                for (h = ss->r-1; h >= ss->l; h--)
296 <                        if (compdir(dthis, h, ss->v, NULL) == 0) {
297 <                                d = dist2(dthis, dright);
298 <                                fvsum(sp->dir, sp->dir, dthis, d);
299 <                                sp->dom += d;
300 <                                VCOPY(dright, dthis);
301 <                        }
293 >                for (h = ss->r-1; h >= ss->l; h--) {
294 >                        d = pixsize(h, ss->v);
295 >                        hsum += d*h;
296 >                        vsum += d*ss->v;
297 >                        sp->dom += d;
298 >                }
299                  free((char *)ss);
300          }
301          sp->first = NULL;
302          sp->brt /= (double)n;
303 <        normalize(sp->dir);
303 >        compdir(sp->dir, (int)(hsum/sp->dom), (int)(vsum/sp->dom));
304          sp->next = donelist;
305          donelist = sp;
306          if (verbose)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines