36 |
|
} sl; /* localized source information */ |
37 |
|
union { |
38 |
|
int success; /* successes - AIMREQT*failures */ |
39 |
< |
int svnext; /* next source to aim for */ |
39 |
> |
struct { |
40 |
> |
short pn; /* projection number */ |
41 |
> |
short sn; /* next source to aim for */ |
42 |
> |
} sv; /* virtual source */ |
43 |
|
} sa; /* source aiming information */ |
44 |
|
long ntests, nhits; /* shadow tests and hits */ |
45 |
|
OBJREC *so; /* source destination object */ |
50 |
|
*/ |
51 |
|
|
52 |
|
/* |
53 |
< |
* Virtual source materials must support the following functions: |
53 |
> |
* Virtual source materials must define the following. |
54 |
|
* |
55 |
|
* vproj(pm, op, sp, i) Compute i'th virtual projection |
56 |
|
* of source sp in object op and assign |
83 |
|
extern int nsources; /* the number of sources */ |
84 |
|
|
85 |
|
extern double srcray(); /* ray to source */ |
86 |
+ |
extern int srcvalue(); /* compute source value w/o shadows */ |
87 |
|
|
88 |
+ |
extern double intercircle(); /* intersect two circles */ |
89 |
+ |
extern double spotdisk(); /* intersecting disk for spot */ |
90 |
+ |
extern double beamdisk(); /* intersecting disk for beam */ |
91 |
+ |
|
92 |
|
extern SPOT *makespot(); /* make spotlight */ |
93 |
|
|
86 |
– |
extern SRCREC *newsource(); /* allocate new source */ |
87 |
– |
|
94 |
|
extern double dstrsrc; /* source distribution amount */ |
95 |
|
extern double shadthresh; /* relative shadow threshold */ |
96 |
|
extern double shadcert; /* shadow testing certainty */ |
97 |
|
extern int directrelay; /* maximum number of source relays */ |
98 |
+ |
extern int vspretest; /* virtual source pretest density */ |
99 |
+ |
|
100 |
+ |
#define getplaneq(c,o) (*sfun[(o)->otype].of->getpleq)(c,o) |
101 |
+ |
#define getmaxdisk(c,o) (*sfun[(o)->otype].of->getdisk)(c,o) |
102 |
+ |
#define setsource(s,o) (*sfun[(o)->otype].of->setsrc)(s,o) |