| 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) |