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

Comparing ray/src/util/glarendx.c (file contents):
Revision 1.7 by greg, Mon Apr 29 08:31:23 1991 UTC vs.
Revision 1.8 by greg, Thu May 2 13:17:41 1991 UTC

# Line 9 | Line 9 | static char SCCSid[] = "$SunId$ LBL";
9   *
10   *      guth_dgr -      Guth discomfort glare rating
11   *      guth_vcp -      Guth visual comfort probability
12 + *      cie_cgi -       CIE Glare Index (1983)
13   *
14   *              12 April 1991   Greg Ward       EPFL
15   */
# Line 21 | Line 22 | extern double  erfc();
22   double  posindex();
23   int     headline();
24  
25 < double  direct(), guth_dgr(), guth_vcp();
25 > double  direct(), guth_dgr(), guth_vcp(), cie_cgi();
26  
27   struct named_func {
28          char    *name;
# Line 30 | Line 31 | struct named_func {
31          {"direct", direct},
32          {"guth_dgr", guth_dgr},
33          {"guth_vcp", guth_vcp},
34 +        {"cie_cgi", cie_cgi},
35          {NULL}
36   };
37  
# Line 292 | Line 294 | struct glare_dir       *gd;
294          }
295          if (n == 0)
296                  return(0.0);
297 <        else
298 <                return( pow(
297 <                        .5*sum/pow((brsum+(5.-wtot)*gd->indirect/PI)/5.,.44),
297 >
298 >        return( pow(.5*sum/pow((brsum+(5.-wtot)*gd->indirect/PI)/5.,.44),
299                          pow((double)n, -.0914) ) );
300   #undef q
301   }
# Line 319 | Line 320 | struct glare_dir       *gd;
320          if (dgr <= FTINY)
321                  return(100.0);
322          return(100.*norm_integral(6.374-1.3227*log(dgr)));
323 + }
324 +
325 +
326 + double
327 + cie_cgi(gd)             /* compute CIE Glare Index */
328 + struct glare_dir        *gd;
329 + {
330 +        register struct glare_src       *gs;
331 +        FVECT   mydir;
332 +        double  dillum;
333 +        double  p;
334 +        double  sum;
335 +
336 +        spinvector(mydir, midview.vdir, midview.vup, gd->ang);
337 +        sum = 0.0;
338 +        for (gs = all_srcs; gs != NULL; gs = gs->next) {
339 +                p = posindex(gs->dir, mydir, midview.vup);
340 +                if (p <= FTINY)
341 +                        continue;
342 +                sum += gs->lum*gs->lum * gs->dom / (p*p);
343 +        }
344 +        if (sum <= FTINY)
345 +                return(0.0);
346 +        dillum = direct(gd);
347 +        return(8.*log10(2.*sum*(1.+dillum/500.)/(dillum+gd->indirect)));
348   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines