ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/glare.h
Revision: 2.4
Committed: Fri Jun 27 11:32:12 2003 UTC (20 years, 10 months ago) by schorsch
Content type: text/plain
Branch: MAIN
Changes since 2.3: +17 -3 lines
Log Message:
Instrumented headers against multiple inclusion and for use from C++.
Continued ANSIfication.

File Contents

# User Rev Content
1 schorsch 2.4 /* RCSid: $Id: glare.h,v 2.3 2003/02/22 02:07:30 greg Exp $ */
2 greg 1.1 /*
3     * Common data structures for glare source finding routines
4     */
5 schorsch 2.4 #ifndef _RAD_GLARE_H_
6     #define _RAD_GLARE_H_
7     #ifdef __cplusplus
8     extern "C" {
9     #endif
10    
11 greg 1.1
12     #include "standard.h"
13     #include "view.h"
14     #include "color.h"
15     #include "setscan.h"
16    
17 greg 1.14 #define GLAREBR 7.0 /* glare source is this * avg. lum. */
18 greg 1.1
19 greg 1.17 #define SAMPDENS 75 /* default samples per unit in image */
20 greg 1.1 #define TSAMPSTEP 10 /* sample step to compute threshold */
21    
22 greg 1.13 #define SEPS 1 /* sources this close ==> contig. */
23 greg 1.1
24 greg 1.8 #define SAMIN .005 /* minimum solid angle for source */
25     #define MAXBUDDY (4.*sqrt(SAMIN/PI)) /* max separation for pairing */
26    
27     #define TOOSMALL(s) ((s)->brt*(s)->dom < threshold*SAMIN)
28 greg 1.17
29     #define SABIG .025 /* solid angle of splittable source */
30 greg 2.2 #define LCORR .12 /* linearity of splittable source */
31 greg 1.8
32 greg 1.1 extern VIEW ourview; /* our view */
33     extern VIEW pictview; /* picture view */
34     extern VIEW leftview, rightview; /* leftmost and rightmost views */
35    
36     extern int verbose; /* verbose reporting */
37     extern char *progname; /* global argv[0] */
38    
39 greg 1.7 extern double threshold; /* threshold value for glare sources */
40    
41 greg 1.4 extern int sampdens; /* sample density */
42 greg 1.1 extern ANGLE glarang[]; /* glare calculation angles */
43     extern int nglarangs;
44 greg 1.2 extern double maxtheta; /* maximum glare angle (in radians) */
45 greg 1.1 extern int hsize; /* horizontal size */
46    
47     #define nglardirs (2*nglarangs+1)
48 greg 1.5 #define vsize (sampdens-1)
49 greg 1.16 #define hscale(v) sqrt((double)(sampdens*sampdens - (v)*(v)))
50     #define hlim(v) (int)(maxtheta*hscale(v))
51     #define h_theta(h,v) (-(h)/hscale(v))
52 greg 1.1
53     extern struct illum {
54     float theta; /* glare direction */
55     float lcos, lsin; /* cosine and sine to left view */
56     float rcos, rsin; /* cosine and sine to right view */
57     double sum; /* sum of indirect luminances */
58 greg 1.10 double n; /* number of values in sum */
59 greg 1.1 } *indirect; /* array of indirect illuminances */
60    
61     struct srcspan {
62     short v; /* vertical position */
63     short l, r; /* left and right horizontal limits */
64     float brsum; /* sum of brightnesses for this span */
65     struct srcspan *next; /* next source span in list */
66     };
67    
68     extern struct source {
69     FVECT dir; /* source direction */
70 greg 1.6 double dom; /* solid angle of source */
71     double brt; /* average source brightness */
72 greg 1.1 struct srcspan *first; /* first span for this source */
73     struct source *next; /* next source in list */
74     } *donelist; /* finished sources */
75 greg 1.14
76 schorsch 2.4 extern double getviewpix(int vh, int vv);
77     extern double pixsize(int x, int y);
78 greg 1.11
79     extern long npixinvw; /* number of samples in view */
80     extern long npixmiss; /* number of samples missing */
81 schorsch 2.4
82    
83    
84     #ifdef __cplusplus
85     }
86     #endif
87     #endif /* _RAD_GLARE_H_ */
88