ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/mx_func.c
Revision: 2.2
Committed: Mon Nov 25 09:50:56 1991 UTC (32 years, 5 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.1: +11 -13 lines
Log Message:
changed function file calls to allow expressions instead of just vars

File Contents

# Content
1 /* Copyright (c) 1991 Regents of the University of California */
2
3 #ifndef lint
4 static char SCCSid[] = "$SunId$ LBL";
5 #endif
6
7 /*
8 * mx_func.c - routine for mixture functions.
9 *
10 * 11/2/88
11 */
12
13 #include "ray.h"
14
15 #include "func.h"
16
17 /*
18 * A mixture function is specified:
19 *
20 * modifier mixfunc name
21 * 4+ foremod backmod varname vfname xf
22 * 0
23 * n A1 A2 ..
24 *
25 * Vfname is the name of the file where the variable definition
26 * can be found. The list of real arguments can be accessed by
27 * definitions in the file. The xf is a transformation
28 * to get from the original coordinates to the current coordinates.
29 */
30
31
32 mx_func(m, r) /* compute mixture function */
33 register OBJREC *m;
34 RAY *r;
35 {
36 register int i;
37 double coef;
38 OBJECT mod[2];
39 register MFUNC *mf;
40
41 if (m->oargs.nsargs < 4)
42 objerror(m, USER, "bad # arguments");
43 for (i = 0; i < 2; i++)
44 if (!strcmp(m->oargs.sarg[i], VOIDID))
45 mod[i] = OVOID;
46 else if ((mod[i] = modifier(m->oargs.sarg[i])) == OVOID) {
47 sprintf(errmsg, "undefined modifier \"%s\"",
48 m->oargs.sarg[i]);
49 objerror(m, USER, errmsg);
50 }
51 mf = getfunc(m, 3, 0x4, 0);
52 setfunc(m, r);
53 errno = 0;
54 coef = evalue(mf->ep[0]);
55 if (errno) {
56 objerror(m, WARNING, "compute error");
57 return;
58 }
59 raymixture(r, mod[0], mod[1], coef);
60 }