--- ray/src/gen/gensky.c 1993/11/05 17:25:34 2.13 +++ ray/src/gen/gensky.c 1996/06/25 20:48:17 2.16 @@ -85,10 +85,7 @@ char *argv[]; day = atoi(argv[2]); if (day < 1 || day > 31) userror("bad day"); - hour = atof(argv[3]); - if (hour < 0 || hour >= 24) - userror("bad hour"); - tsolar = argv[3][0] == '+'; + cvthour(argv[3]); } for (i = 4; i < argc; i++) if (argv[i][0] == '-' || argv[i][0] == '+') @@ -104,11 +101,9 @@ char *argv[]; break; case 'c': skytype = S_OVER; - dosun = 0; break; case 'u': skytype = S_UNIF; - dosun = 0; break; case 'i': skytype = S_INTER; @@ -150,6 +145,8 @@ char *argv[]; computesky(); printsky(); + + exit(0); } @@ -221,7 +218,7 @@ computesky() /* compute sky parameters */ /* Compute horizontal radiance */ groundbr = zenithbr*normfactor; printf("# Ground ambient level: %.1f\n", groundbr); - if (sundir[2] > 0.0 && (!u_solar || solarbr > 0.0)) { + if (!overcast && sundir[2] > 0.0 && (!u_solar || solarbr > 0.0)) { if (u_solar == -1) solarbr /= 6e-5*sundir[2]; else if (u_solar == 0) { @@ -325,6 +322,21 @@ normsc() /* compute normalization factor (E0*F2/L0) nsc = nsc*x + nf[i]; return(nsc); +} + + +cvthour(hs) /* convert hour string */ +char *hs; +{ + register char *cp = hs; + + while (*cp && *cp++ != ':') + ; + if (*cp) + hour = atoi(hs) + atoi(cp)/60.0; + else + hour = atof(hs); + tsolar = *hs == '+'; }