| 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 | greg | 1.9 | #define DEBUG 1 | 
| 10 |  |  |  | 
| 11 | greg | 1.1 | #include "standard.h" | 
| 12 |  |  | #include "view.h" | 
| 13 |  |  | #include "color.h" | 
| 14 |  |  | #include "setscan.h" | 
| 15 |  |  |  | 
| 16 |  |  | #define GLAREBR         10.0            /* glare source is this * avg. lum. */ | 
| 17 |  |  |  | 
| 18 | greg | 1.4 | #define SAMPDENS        50              /* default samples per unit in image */ | 
| 19 | greg | 1.1 | #define TSAMPSTEP       10              /* sample step to compute threshold */ | 
| 20 |  |  |  | 
| 21 |  |  | #define SEPS            2               /* sources this close ==> contig. */ | 
| 22 |  |  |  | 
| 23 | greg | 1.8 | #define SAMIN           .005            /* minimum solid angle for source */ | 
| 24 |  |  | #define MAXBUDDY        (4.*sqrt(SAMIN/PI))     /* max separation for pairing */ | 
| 25 |  |  |  | 
| 26 |  |  | #define TOOSMALL(s)     ((s)->brt*(s)->dom < threshold*SAMIN) | 
| 27 |  |  |  | 
| 28 | greg | 1.1 | extern VIEW     ourview;                /* our view */ | 
| 29 |  |  | extern VIEW     pictview;               /* picture view */ | 
| 30 |  |  | extern VIEW     leftview, rightview;    /* leftmost and rightmost views */ | 
| 31 |  |  |  | 
| 32 |  |  | extern int      verbose;                /* verbose reporting */ | 
| 33 |  |  | extern char     *progname;              /* global argv[0] */ | 
| 34 |  |  |  | 
| 35 | greg | 1.7 | extern double   threshold;              /* threshold value for glare sources */ | 
| 36 |  |  |  | 
| 37 | greg | 1.4 | extern int      sampdens;               /* sample density */ | 
| 38 | greg | 1.1 | extern ANGLE    glarang[];              /* glare calculation angles */ | 
| 39 |  |  | extern int      nglarangs; | 
| 40 | greg | 1.2 | extern double   maxtheta;               /* maximum glare angle (in radians) */ | 
| 41 | greg | 1.1 | extern int      hsize;                  /* horizontal size */ | 
| 42 |  |  | extern int      hlim;                   /* horizontal limit of central view */ | 
| 43 |  |  |  | 
| 44 |  |  | #define nglardirs       (2*nglarangs+1) | 
| 45 | greg | 1.5 | #define vsize           (sampdens-1) | 
| 46 | greg | 1.4 | #define h_theta(h)      (-(double)(h)/(double)sampdens) | 
| 47 | greg | 1.1 |  | 
| 48 |  |  | extern struct illum { | 
| 49 |  |  | float   theta;          /* glare direction */ | 
| 50 |  |  | float   lcos, lsin;     /* cosine and sine to left view */ | 
| 51 |  |  | float   rcos, rsin;     /* cosine and sine to right view */ | 
| 52 |  |  | double  sum;            /* sum of indirect luminances */ | 
| 53 | greg | 1.10 | double  n;              /* number of values in sum */ | 
| 54 | greg | 1.1 | } *indirect;            /* array of indirect illuminances */ | 
| 55 |  |  |  | 
| 56 |  |  | struct srcspan { | 
| 57 |  |  | short   v;              /* vertical position */ | 
| 58 |  |  | short   l, r;           /* left and right horizontal limits */ | 
| 59 |  |  | float   brsum;          /* sum of brightnesses for this span */ | 
| 60 |  |  | struct srcspan  *next;  /* next source span in list */ | 
| 61 |  |  | }; | 
| 62 |  |  |  | 
| 63 |  |  | extern struct source { | 
| 64 |  |  | FVECT   dir;            /* source direction */ | 
| 65 | greg | 1.6 | double  dom;            /* solid angle of source */ | 
| 66 |  |  | double  brt;            /* average source brightness */ | 
| 67 | greg | 1.1 | struct srcspan  *first; /* first span for this source */ | 
| 68 |  |  | struct source   *next;  /* next source in list */ | 
| 69 |  |  | } *donelist;                    /* finished sources */ | 
| 70 |  |  |  | 
| 71 |  |  | extern double   getviewpix(); | 
| 72 | greg | 1.11 |  | 
| 73 |  |  | extern long     npixinvw;       /* number of samples in view */ | 
| 74 |  |  | extern long     npixmiss;       /* number of samples missing */ |