--- ray/src/util/findglare.c 1991/03/18 12:15:38 1.1 +++ ray/src/util/findglare.c 1991/03/18 15:06:49 1.3 @@ -31,6 +31,7 @@ char *progname; /* global argv[0] */ ANGLE glarang[180] = {AEND}; /* glare calculation angles */ int nglarangs = 0; +double maxtheta; /* maximum angle (in radians) */ int hsize; /* horizontal size */ int hlim; /* central limit of horizontal */ @@ -193,15 +194,18 @@ init() /* initialize global variables */ /* set direction vectors */ for (i = 0; glarang[i] != AEND; i++) ; - if (glarang[0] <= 0 || glarang[i-1] >= 180) { + if (i > 0 && glarang[0] <= 0 || glarang[i-1] >= 180) { fprintf(stderr, "%s: glare angles must be between 1 and 179\n", progname); exit(1); } nglarangs = i; /* nglardirs = 2*nglarangs + 1; */ - /* maxtheta = (PI/180.)*glarang[nglarangs-1]; */ /* vsize = SAMPDENS; */ + if (nglarangs > 0) + maxtheta = (PI/180.)*glarang[nglarangs-1]; + else + maxtheta = 0.0; hlim = SAMPDENS*maxtheta; hsize = SAMPDENS + hlim; if (hsize > (int)(PI*SAMPDENS)) @@ -211,8 +215,8 @@ init() /* initialize global variables */ memerr("indirect illuminances"); copystruct(&leftview, &ourview); copystruct(&rightview, &ourview); - spinvector(leftview.vdir, ourview.vdir, ourview.vup, -maxtheta); - spinvector(rightview.vdir, ourview.vdir, ourview.vup, maxtheta); + spinvector(leftview.vdir, ourview.vdir, ourview.vup, maxtheta); + spinvector(rightview.vdir, ourview.vdir, ourview.vup, -maxtheta); setview(&leftview); setview(&rightview); indirect[nglarangs].lcos = @@ -333,7 +337,7 @@ printillum() /* print out indirect illuminances */ printf("BEGIN indirect illuminance\n"); for (i = 0; i < nglardirs; i++) - printf("\t%f\t%f\n", (180.0/PI)*indirect[i].theta, + printf("\t%.0f\t%f\n", (180.0/PI)*indirect[i].theta, PI * indirect[i].sum / (double)indirect[i].n); - printf("END indirect illuminances\n"); + printf("END indirect illuminance\n"); }