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

Comparing ray/src/rt/mx_data.c (file contents):
Revision 2.1 by greg, Tue Nov 12 17:08:29 1991 UTC vs.
Revision 2.2 by greg, Mon Nov 25 09:50:51 1991 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1988 Regents of the University of California */
1 > /* Copyright (c) 1991 Regents of the University of California */
2  
3   #ifndef lint
4   static char SCCSid[] = "$SunId$ LBL";
# Line 14 | Line 14 | static char SCCSid[] = "$SunId$ LBL";
14  
15   #include  "data.h"
16  
17 + #include  "func.h"
18 +
19   /*
20   *      A stored mixture is specified:
21   *
# Line 37 | Line 39 | mx_data(m, r)                  /* interpolate mixture data */
39   register OBJREC  *m;
40   RAY  *r;
41   {
40        extern double  varvalue(), funvalue(), datavalue();
41        extern int  errno;
42        register int  i;
42          double  coef;
43          double  pt[MAXDIM];
44          DATARRAY  *dp;
45          OBJECT  mod[2];
46 <        register char  **sa;
46 >        register MFUNC  *mf;
47 >        register int  i;
48  
49        setfunc(m, r);
50
51        sa = m->oargs.sarg;
52
49          if (m->oargs.nsargs < 6)
50                  objerror(m, USER, "bad # arguments");
51          for (i = 0; i < 2; i++)
52 <                if (!strcmp(sa[i], VOIDID))
52 >                if (!strcmp(m->oargs.sarg[i], VOIDID))
53                          mod[i] = OVOID;
54 <                else if ((mod[i] = modifier(sa[i])) == OVOID) {
55 <                        sprintf(errmsg, "undefined modifier \"%s\"", sa[i]);
54 >                else if ((mod[i] = modifier(m->oargs.sarg[i])) == OVOID) {
55 >                        sprintf(errmsg, "undefined modifier \"%s\"",
56 >                                        m->oargs.sarg[i]);
57                          objerror(m, USER, errmsg);
58                  }
59 <        funcfile(sa[4]);
60 <        for (i = 0; i+5 < m->oargs.nsargs &&
61 <                        sa[i+5][0] != '-'; i++) {
62 <                if (i >= MAXDIM)
63 <                        objerror(m, USER, "dimension error");
64 <                errno = 0;
65 <                pt[i] = varvalue(sa[i+5]);
59 >        dp = getdata(m->oargs.sarg[3]);
60 >        i = (1 << dp->nd) - 1;
61 >        mf = getfunc(m, 4, i<<5, 0);
62 >        setfunc(m, r);
63 >        errno = 0;
64 >        for (i = 0; i < dp->nd; i++) {
65 >                pt[i] = evalue(mf->ep[i]);
66                  if (errno)
67                          goto computerr;
68          }
72        dp = getdata(sa[3]);
73        if (dp->nd != i)
74                objerror(m, USER, "dimension error");
69          coef = datavalue(dp, pt);
70          errno = 0;
71 <        coef = funvalue(sa[2], 1, &coef);
71 >        coef = funvalue(m->oargs.sarg[2], 1, &coef);
72          if (errno)
73                  goto computerr;
74          raymixture(r, mod[0], mod[1], coef);
75          return;
82
76   computerr:
77          objerror(m, WARNING, "compute error");
78   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines