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

Comparing ray/src/gen/mkillum3.c (file contents):
Revision 1.8 by greg, Tue Nov 12 10:52:37 1991 UTC vs.
Revision 2.5 by greg, Wed Aug 12 14:18:04 1992 UTC

# Line 24 | Line 24 | register OBJREC  *obj;
24   {
25          register int  i;
26  
27 +        if (issurface(obj->otype) && !strcmp(mod, VOIDID))
28 +                return;         /* don't print void surfaces */
29          printf("\n%s %s %s", mod, ofun[obj->otype].funame, obj->oname);
30          printf("\n%d", obj->oargs.nsargs);
31          for (i = 0; i < obj->oargs.nsargs; i++)
# Line 93 | Line 95 | float  *da;
95   int  n, m;
96   FVECT  u, v, w;
97   {
98 +        float  *Ninv;
99          FILE  *dfp;
100          int  i;
101  
102 +        if ((Ninv = (float *)malloc(3*m*sizeof(float))) == NULL)
103 +                error(SYSTEM, "out of memory in flatout");
104 +        compinv(Ninv, da, m);
105          if (il->flags & IL_COLDST) {
106                  printf("\n%s %s %s%s", VOIDID, ofun[PAT_CDATA].funame,
107                                  il->matname, DSTSUF);
# Line 103 | Line 109 | FVECT  u, v, w;
109                  for (i = 0; i < 3; i++) {
110                          dfp = dfopen(il, DATORD[i]);
111                          fprintf(dfp, "2\n%f %f %d\n%f %f %d\n",
112 <                                        1.-.5/n, .5/n, n,
112 >                                        1.+.5/n, .5/n, n+1,
113                                          0., 2.*PI, m+1);
114 +                        colorout(i, Ninv, 1, m, 1./il->nsamps/il->col[i], dfp);
115                          colorout(i, da, n, m, 1./il->nsamps/il->col[i], dfp);
116 +                        fputeol(dfp);
117                          fclose(dfp);
118                          printf(" %s", dfname(il, DATORD[i]));
119                  }
# Line 114 | Line 122 | FVECT  u, v, w;
122                                  il->matname, DSTSUF);
123                  printf("\n5 noneg");
124                  dfp = dfopen(il, 0);
125 <                fprintf(dfp, "2\n%f %f %d\n%f %f %d\n", 1.-.5/n, .5/n, n,
125 >                fprintf(dfp, "2\n%f %f %d\n%f %f %d\n", 1.+.5/n, .5/n, n+1,
126                                  0., 2.*PI, m+1);
127 +                brightout(Ninv, 1, m, 1./il->nsamps/brt(il->col), dfp);
128                  brightout(da, n, m, 1./il->nsamps/brt(il->col), dfp);
129 +                fputeol(dfp);
130                  fclose(dfp);
131                  printf(" %s", dfname(il, 0));
132          }
# Line 126 | Line 136 | FVECT  u, v, w;
136          printf("\t%f\t%f\t%f\n", v[0], v[1], v[2]);
137          printf("\t%f\t%f\t%f\n", w[0], w[1], w[2]);
138          il->dfnum++;
139 +        free((char *)Ninv);
140   }
141  
142  
# Line 134 | Line 145 | struct illum_args  *il;
145   float  *da;
146   int  n, m;
147   {
148 +        float  *Ninv, *Sinv;
149          FILE  *dfp;
150          int  i;
151  
152 +        if ((Ninv = (float *)malloc(3*m*sizeof(float))) == NULL ||
153 +                        (Sinv = (float *)malloc(3*m*sizeof(float))) == NULL)
154 +                error(SYSTEM, "out of memory in flatout");
155 +        compinv(Ninv, da, m);
156 +        compinv(Sinv, da+3*m*(n-1), m);
157          if (il->flags & IL_COLDST) {
158                  printf("\n%s %s %s%s", VOIDID, ofun[PAT_CDATA].funame,
159                                  il->matname, DSTSUF);
# Line 144 | Line 161 | int  n, m;
161                  for (i = 0; i < 3; i++) {
162                          dfp = dfopen(il, DATORD[i]);
163                          fprintf(dfp, "2\n%f %f %d\n%f %f %d\n",
164 <                                        1.-1./n, -1.+1./n, n,
164 >                                        1.+1./n, -1.-1./n, n+2,
165                                          0., 2.*PI, m+1);
166 +                        colorout(i, Ninv, 1, m, 1./il->nsamps/il->col[i], dfp);
167                          colorout(i, da, n, m, 1./il->nsamps/il->col[i], dfp);
168 +                        colorout(i, Sinv, 1, m, 1./il->nsamps/il->col[i], dfp);
169 +                        fputeol(dfp);
170                          fclose(dfp);
171                          printf(" %s", dfname(il, DATORD[i]));
172                  }
# Line 157 | Line 177 | int  n, m;
177                  dfp = dfopen(il, 0);
178                  fprintf(dfp, "2\n%f %f %d\n%f %f %d\n", 1.-1./n, -1.+1./n, n,
179                                  0., 2.*PI, m+1);
180 +                brightout(Ninv, 1, m, 1./il->nsamps/brt(il->col), dfp);
181                  brightout(da, n, m, 1./il->nsamps/brt(il->col), dfp);
182 +                brightout(Sinv, 1, m, 1./il->nsamps/brt(il->col), dfp);
183 +                fputeol(dfp);
184                  fclose(dfp);
185                  printf(" %s", dfname(il, 0));
186          }
187          printf("\n\t%s il_alt il_azi", FNCFNM);
188          printf("\n0\n0\n");
189          il->dfnum++;
190 +        free((char *)Ninv);
191 +        free((char *)Sinv);
192   }
193  
194  
# Line 196 | Line 221 | OBJREC  *ob;
221   }
222  
223  
224 < average(il, da, n)              /* compute average value for distribution */
225 < register struct illum_args  *il;
224 > compavg(col, da, n)             /* compute average for set of data values */
225 > float  col[3];
226   register float  *da;
227   int  n;
228   {
229          register int  i;
230  
231 <        il->col[0] = il->col[1] = il->col[2] = 0.;
231 >        col[0] = col[1] = col[2] = 0.;
232          i = n;
233          while (i-- > 0) {
234 <                il->col[0] += *da++;
235 <                il->col[1] += *da++;
236 <                il->col[2] += *da++;
234 >                col[0] += *da++;
235 >                col[1] += *da++;
236 >                col[2] += *da++;
237          }
238          for (i = 0; i < 3; i++)
239 <                il->col[i] /= (double)n*il->nsamps;
239 >                col[i] /= (double)n;
240 > }
241  
242 +
243 + compinv(rinv, rp, m)            /* compute other side of row average */
244 + register float  *rinv, *rp;
245 + int  m;
246 + {
247 +        float  avg[3];
248 +
249 +        compavg(avg, rp, m);            /* row average */
250 +        while (m-- > 0) {
251 +                *rinv++ = 2.*avg[0] - *rp++;
252 +                *rinv++ = 2.*avg[1] - *rp++;
253 +                *rinv++ = 2.*avg[2] - *rp++;
254 +        }
255 + }
256 +
257 +
258 + average(il, da, n)              /* evaluate average value for distribution */
259 + register struct illum_args  *il;
260 + float  *da;
261 + int  n;
262 + {
263 +        compavg(il->col, da, n);        /* average */
264 +        if (il->nsamps > 1) {
265 +                il->col[0] /= (double)il->nsamps;
266 +                il->col[1] /= (double)il->nsamps;
267 +                il->col[2] /= (double)il->nsamps;
268 +        }
269 +                                        /* brighter than minimum? */
270          return(brt(il->col) > il->minbrt+FTINY);
271   }
272  
# Line 223 | Line 277 | fputnum(d, fp)                 /* put out a number to fp */
277   double  d;
278   FILE  *fp;
279   {
280 <        if (colmcnt++ % 6 == 0)
280 >        if (colmcnt++ % 5 == 0)
281                  putc('\n', fp);
282          fprintf(fp, " %11e", d);
283   }
# Line 253 | Line 307 | FILE  *fp;
307                  }
308                  fputnum(mult*da[p-3*m], fp);    /* wrap phi */
309          }
256        fputeol(fp);
310   }
311  
312  
# Line 272 | Line 325 | FILE  *fp;
325                  }
326                  fputnum(mult*brt(da-3*m), fp);  /* wrap phi */
327          }
275        fputeol(fp);
328   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines