ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/p_func.c
Revision: 1.1
Committed: Thu Feb 2 10:41:34 1989 UTC (35 years, 3 months ago) by greg
Content type: text/plain
Branch: MAIN
Log Message:
Initial revision

File Contents

# Content
1 /* Copyright (c) 1986 Regents of the University of California */
2
3 #ifndef lint
4 static char SCCSid[] = "$SunId$ LBL";
5 #endif
6
7 /*
8 * p_func.c - routine for procedural patterns.
9 *
10 * 4/8/86
11 */
12
13 #include "ray.h"
14
15 /*
16 * A procedural pattern can either be a brightness or a
17 * color function. A brightness function is given as:
18 *
19 * modifier brightfunc name
20 * 2+ bvarname filename xf
21 * 0
22 * n A1 A2 ..
23 *
24 * A color function is given as:
25 *
26 * modifier colorfunc name
27 * 4+ rvarname gvarname bvarname filename xf
28 * 0
29 * n A1 A2 ..
30 *
31 * Filename is the name of the file where the variable definitions
32 * can be found. The list of real arguments can be accessed by
33 * definitions in the file. The xf is a transformation
34 * to get from the original coordinates to the current coordinates.
35 */
36
37
38 p_bfunc(m, r) /* compute brightness pattern */
39 register OBJREC *m;
40 RAY *r;
41 {
42 extern double varvalue();
43 extern int errno;
44 double bval;
45 register char **sa;
46
47 setfunc(m, r);
48
49 sa = m->oargs.sarg;
50
51 if (m->oargs.nsargs < 2)
52 objerror(m, USER, "bad # arguments");
53 if (!vardefined(sa[0]))
54 loadfunc(sa[1]);
55 errno = 0;
56 bval = varvalue(sa[0]);
57 if (errno) {
58 objerror(m, WARNING, "compute error");
59 return;
60 }
61 scalecolor(r->pcol, bval);
62 }
63
64
65 p_cfunc(m, r) /* compute color pattern */
66 register OBJREC *m;
67 RAY *r;
68 {
69 extern double varvalue();
70 extern int errno;
71 COLOR cval;
72 register char **sa;
73
74 setfunc(m, r);
75
76 sa = m->oargs.sarg;
77
78 if (m->oargs.nsargs < 4)
79 objerror(m, USER, "bad # arguments");
80 if (!vardefined(sa[0]))
81 loadfunc(sa[3]);
82 errno = 0;
83 setcolor(cval, varvalue(sa[0]),
84 varvalue(sa[1]),
85 varvalue(sa[2]));
86 if (errno) {
87 objerror(m, WARNING, "compute error");
88 return;
89 }
90 multcolor(r->pcol, cval);
91 }