18 |
|
|
19 |
|
|
20 |
|
#define INITFILE "rayinit.cal" |
21 |
– |
#define REFVNAME "`FILE_REFCNT" |
21 |
|
#define CALSUF ".cal" |
22 |
|
#define LCALSUF 4 |
23 |
+ |
char REFVNAME[] = "`FILE_REFCNT"; |
24 |
|
|
25 |
|
XF unitxf = { /* identity transform */ |
26 |
< |
1.0, 0.0, 0.0, 0.0, |
27 |
< |
0.0, 1.0, 0.0, 0.0, |
28 |
< |
0.0, 0.0, 1.0, 0.0, |
29 |
< |
0.0, 0.0, 0.0, 1.0, |
26 |
> |
{{1.0, 0.0, 0.0, 0.0}, |
27 |
> |
{0.0, 1.0, 0.0, 0.0}, |
28 |
> |
{0.0, 0.0, 1.0, 0.0}, |
29 |
> |
{0.0, 0.0, 0.0, 1.0}}, |
30 |
|
1.0 |
31 |
|
}; |
32 |
|
|
54 |
|
/* check to see if done already */ |
55 |
|
if ((f = (MFUNC *)m->os) != NULL) |
56 |
|
return(f); |
57 |
+ |
fobj = NULL; fray = NULL; |
58 |
|
if (initfile[0]) { /* initialize on first call */ |
59 |
|
setcontext(""); |
60 |
|
scompile("Dx=$1;Dy=$2;Dz=$3;", NULL, 0); |
69 |
|
funset("erf", 1, ':', l_erf); |
70 |
|
funset("erfc", 1, ':', l_erfc); |
71 |
|
setnoisefuncs(); |
72 |
+ |
setprismfuncs(); |
73 |
|
loadfunc(initfile); |
74 |
|
initfile[0] = '\0'; |
75 |
|
} |
167 |
|
OBJREC *m; |
168 |
|
register RAY *r; |
169 |
|
{ |
170 |
< |
static long lastrno = -1; |
170 |
> |
static unsigned long lastrno = ~0; |
171 |
|
register MFUNC *f; |
172 |
|
/* get function */ |
173 |
|
if ((f = (MFUNC *)m->os) == NULL) |
213 |
|
extern double argument(); |
214 |
|
register int n; |
215 |
|
|
216 |
+ |
if (fobj == NULL) |
217 |
+ |
syntax("arg(n) used in constant expression"); |
218 |
+ |
|
219 |
|
n = argument(1) + .5; /* round to integer */ |
220 |
|
|
221 |
|
if (n < 1) |
253 |
|
{ |
254 |
|
double sum; |
255 |
|
register RAY *r; |
256 |
+ |
|
257 |
+ |
if (fray == NULL) |
258 |
+ |
syntax("ray parameter used in constant expression"); |
259 |
|
|
260 |
|
if (--n < 0) |
261 |
|
goto badchan; |