| 1 | greg | 1.1 | /* Copyright (c) 1991 Regents of the University of California */ | 
| 2 |  |  |  | 
| 3 |  |  | /* SCCSid "$SunId$ LBL" */ | 
| 4 |  |  |  | 
| 5 |  |  | /* | 
| 6 |  |  | * Common data structures for glare source finding routines | 
| 7 |  |  | */ | 
| 8 |  |  |  | 
| 9 |  |  | #include "standard.h" | 
| 10 |  |  | #include "view.h" | 
| 11 |  |  | #include "color.h" | 
| 12 |  |  | #include "setscan.h" | 
| 13 |  |  |  | 
| 14 |  |  | #define GLAREBR         10.0            /* glare source is this * avg. lum. */ | 
| 15 |  |  |  | 
| 16 | greg | 1.4 | #define SAMPDENS        50              /* default samples per unit in image */ | 
| 17 | greg | 1.1 | #define TSAMPSTEP       10              /* sample step to compute threshold */ | 
| 18 |  |  |  | 
| 19 |  |  | #define SEPS            2               /* sources this close ==> contig. */ | 
| 20 |  |  |  | 
| 21 |  |  | extern VIEW     ourview;                /* our view */ | 
| 22 |  |  | extern VIEW     pictview;               /* picture view */ | 
| 23 |  |  | extern VIEW     leftview, rightview;    /* leftmost and rightmost views */ | 
| 24 |  |  |  | 
| 25 |  |  | extern int      verbose;                /* verbose reporting */ | 
| 26 |  |  | extern char     *progname;              /* global argv[0] */ | 
| 27 |  |  |  | 
| 28 | greg | 1.4 | extern int      sampdens;               /* sample density */ | 
| 29 | greg | 1.1 | extern ANGLE    glarang[];              /* glare calculation angles */ | 
| 30 |  |  | extern int      nglarangs; | 
| 31 | greg | 1.2 | extern double   maxtheta;               /* maximum glare angle (in radians) */ | 
| 32 | greg | 1.1 | extern int      hsize;                  /* horizontal size */ | 
| 33 |  |  | extern int      hlim;                   /* horizontal limit of central view */ | 
| 34 |  |  |  | 
| 35 |  |  | #define nglardirs       (2*nglarangs+1) | 
| 36 | greg | 1.4 | #define vsize           sampdens | 
| 37 |  |  | #define h_theta(h)      (-(double)(h)/(double)sampdens) | 
| 38 | greg | 1.1 |  | 
| 39 |  |  | extern struct illum { | 
| 40 |  |  | float   theta;          /* glare direction */ | 
| 41 |  |  | float   lcos, lsin;     /* cosine and sine to left view */ | 
| 42 |  |  | float   rcos, rsin;     /* cosine and sine to right view */ | 
| 43 |  |  | double  sum;            /* sum of indirect luminances */ | 
| 44 |  |  | int     n;              /* number of values in sum */ | 
| 45 |  |  | } *indirect;            /* array of indirect illuminances */ | 
| 46 |  |  |  | 
| 47 |  |  | struct srcspan { | 
| 48 |  |  | short   v;              /* vertical position */ | 
| 49 |  |  | short   l, r;           /* left and right horizontal limits */ | 
| 50 |  |  | float   brsum;          /* sum of brightnesses for this span */ | 
| 51 |  |  | struct srcspan  *next;  /* next source span in list */ | 
| 52 |  |  | }; | 
| 53 |  |  |  | 
| 54 |  |  | extern struct source { | 
| 55 |  |  | FVECT   dir;            /* source direction */ | 
| 56 |  |  | float   dom;            /* solid angle of source */ | 
| 57 |  |  | float   brt;            /* average source brightness */ | 
| 58 |  |  | struct srcspan  *first; /* first span for this source */ | 
| 59 |  |  | struct source   *next;  /* next source in list */ | 
| 60 |  |  | } *donelist;                    /* finished sources */ | 
| 61 |  |  |  | 
| 62 |  |  | extern double   getviewpix(); |