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

Comparing ray/src/gen/gensky.c (file contents):
Revision 2.3 by greg, Tue Mar 10 11:12:06 1992 UTC vs.
Revision 2.6 by greg, Tue Apr 14 10:29:24 1992 UTC

# Line 36 | Line 36 | extern double  s_longitude;
36   extern double  s_meridian;
37                                          /* required values */
38   int  month, day;                                /* date */
39 < double  hour;                                   /* standard time */
39 > double  hour;                                   /* time */
40 > int  tsolar;                                    /* 0=standard, 1=solar */
41   double  altitude, azimuth;                      /* or solar angles */
42                                          /* default values */
43 < int  cloudy = 0;
43 > int  cloudy = 0;                                /* 1=standard, 2=uniform */
44   int  dosun = 1;
45   double  zenithbr = -1.0;
46   double  turbidity = 2.75;
# Line 74 | Line 75 | char  *argv[];
75                  month = 0;
76          } else {
77                  month = atoi(argv[1]);
78 +                if (month < 1 || month > 12)
79 +                        userror("bad month");
80                  day = atoi(argv[2]);
81 +                if (day < 1 || day > 31)
82 +                        userror("bad day");
83                  hour = atof(argv[3]);
84 +                if (hour < 0 || hour >= 24)
85 +                        userror("bad hour");
86 +                tsolar = argv[3][0] == '+';
87          }
88          for (i = 4; i < argc; i++)
89                  if (argv[i][0] == '-' || argv[i][0] == '+')
# Line 85 | Line 93 | char  *argv[];
93                                  dosun = argv[i][0] == '+';
94                                  break;
95                          case 'c':
96 <                                cloudy = 1;
96 >                                cloudy = argv[i][0] == '+' ? 2 : 1;
97                                  dosun = 0;
98                                  break;
99                          case 't':
# Line 134 | Line 142 | computesky()                   /* compute sky parameters */
142  
143                  jd = jdate(month, day);         /* Julian date */
144                  sd = sdec(jd);                  /* solar declination */
145 <                st = hour + stadj(jd);          /* solar time */
145 >                if (tsolar)                     /* solar time */
146 >                        st = hour;
147 >                else
148 >                        st = hour + stadj(jd);
149                  altitude = salt(sd, st);
150                  azimuth = sazi(sd, st);
151          }
# Line 146 | Line 157 | computesky()                   /* compute sky parameters */
157          if (zenithbr <= 0.0)
158                  if (cloudy) {
159                          zenithbr = 8.6*sundir[2] + .123;
160 <                        zenithbr *= 1000.0/SKYEFFICACY;
160 >                        zenithbr *= 1000.0/WHTEFFICACY;
161                  } else {
162                          zenithbr = (1.376*turbidity-1.81)*tan(altitude)+0.38;
163                          zenithbr *= 1000.0/SKYEFFICACY;
# Line 155 | Line 166 | computesky()                   /* compute sky parameters */
166                  zenithbr = 0.0;
167                                          /* Compute horizontal radiance */
168          if (cloudy) {
169 <                groundbr = zenithbr*0.777778;
169 >                if (cloudy == 2)
170 >                        groundbr = zenithbr;
171 >                else
172 >                        groundbr = zenithbr*0.777778;
173                  printf("# Ground ambient level: %f\n", groundbr);
174          } else {
175                  F2 = 0.274*(0.91 + 10.0*exp(-3.0*(PI/2.0-altitude)) +
176                                  0.45*sundir[2]*sundir[2]);
177 <                groundbr = zenithbr*normsc(PI/2.0-altitude)/F2/PI;
177 >                groundbr = zenithbr*normsc(altitude)/F2/PI;
178                  printf("# Ground ambient level: %f\n", groundbr);
179                  if (sundir[2] > 0.0) {
180                          if (sundir[2] > .16)
# Line 191 | Line 205 | printsky()                     /* print out sky */
205          printf("2 skybright skybright.cal\n");
206          printf("0\n");
207          if (cloudy)
208 <                printf("3 1 %.2e %.2e\n", zenithbr, groundbr);
208 >                printf("3 %d %.2e %.2e\n", cloudy, zenithbr, groundbr);
209          else
210                  printf("7 -1 %.2e %.2e %.2e %f %f %f\n", zenithbr, groundbr,
211                                  F2, sundir[0], sundir[1], sundir[2]);
# Line 200 | Line 214 | printsky()                     /* print out sky */
214  
215   printdefaults()                 /* print default values */
216   {
217 <        if (cloudy)
217 >        if (cloudy == 1)
218                  printf("-c\t\t\t\t# Cloudy sky\n");
219 +        else if (cloudy == 2)
220 +                printf("+c\t\t\t\t# Uniform cloudy sky\n");
221          else if (dosun)
222                  printf("+s\t\t\t\t# Sunny sky with sun\n");
223          else

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines