ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/glare.h
Revision: 2.5
Committed: Mon Jul 14 22:24:00 2003 UTC (20 years, 9 months ago) by schorsch
Content type: text/plain
Branch: MAIN
Changes since 2.4: +5 -5 lines
Log Message:
Instrumented headers against multiple inclusion and for use from C++.
Moved includes in headers out of "C" scope.

File Contents

# Content
1 /* RCSid: $Id: glare.h,v 2.4 2003/06/27 11:32:12 schorsch Exp $ */
2 /*
3 * Common data structures for glare source finding routines
4 */
5 #ifndef _RAD_GLARE_H_
6 #define _RAD_GLARE_H_
7
8 #include "standard.h"
9 #include "view.h"
10 #include "color.h"
11 #include "setscan.h"
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 #define GLAREBR 7.0 /* glare source is this * avg. lum. */
18
19 #define SAMPDENS 75 /* default samples per unit in image */
20 #define TSAMPSTEP 10 /* sample step to compute threshold */
21
22 #define SEPS 1 /* sources this close ==> contig. */
23
24 #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
29 #define SABIG .025 /* solid angle of splittable source */
30 #define LCORR .12 /* linearity of splittable source */
31
32 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 extern double threshold; /* threshold value for glare sources */
40
41 extern int sampdens; /* sample density */
42 extern ANGLE glarang[]; /* glare calculation angles */
43 extern int nglarangs;
44 extern double maxtheta; /* maximum glare angle (in radians) */
45 extern int hsize; /* horizontal size */
46
47 #define nglardirs (2*nglarangs+1)
48 #define vsize (sampdens-1)
49 #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
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 double n; /* number of values in sum */
59 } *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 double dom; /* solid angle of source */
71 double brt; /* average source brightness */
72 struct srcspan *first; /* first span for this source */
73 struct source *next; /* next source in list */
74 } *donelist; /* finished sources */
75
76 extern double getviewpix(int vh, int vv);
77 extern double pixsize(int x, int y);
78
79 extern long npixinvw; /* number of samples in view */
80 extern long npixmiss; /* number of samples missing */
81
82
83
84 #ifdef __cplusplus
85 }
86 #endif
87 #endif /* _RAD_GLARE_H_ */
88