1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
@code{(require 'daylight)}
@ftindex daylight
@ftindex sunlight
@ftindex sun
@ftindex sky
@noindent
This package calculates the colors of sky as detailed in:@*
@uref{http://www.cs.utah.edu/vissim/papers/sunsky/sunsky.pdf}@*
@cite{A Practical Analytic Model for Daylight}@*
A. J. Preetham, Peter Shirley, Brian Smits
@defun solar-hour julian-day hour
Returns the solar-time in hours given the integer @var{julian-day} in the range 1 to
366, and the local time in hours.
To be meticulous, subtract 4 minutes for each degree of longitude west
of the standard meridian of your time zone.
@end defun
@defun solar-declination julian-day
@end defun
@defun solar-polar declination latitude solar-hour
Returns a list of @var{theta_s}, the solar angle from the
zenith, and @var{phi_s}, the solar azimuth. 0 <= @var{theta_s}
measured in degrees. @var{phi_s} is measured in degrees from due
south; west of south being positive.
@end defun
@noindent
In the following procedures, the number 0 <= @var{theta_s} <= 90 is
the solar angle from the zenith in degrees.
@cindex turbidity
@noindent
Turbidity is a measure of the fraction of scattering due to haze as
opposed to molecules. This is a convenient quantity because it can be
estimated based on visibility of distant objects. This model fails
for turbidity values less than 1.3.
@example
@group
_______________________________________________________________
512|-: |
| * pure-air |
256|-:** |
| : ** exceptionally-clear |
128|-: * |
| : ** |
64|-: * |
| : ** very-clear |
32|-: ** |
| : ** |
16|-: *** clear |
| : **** |
8|-: **** |
| : **** light-haze |
4|-: **** |
| : ****** |
2|-: ******** haze thin-|
| : *********** fog |
1|-:----------------------------------------------------*******--|
|_:____.____:____.____:____.____:____.____:____.____:____.____:_|
1 2 4 8 16 32 64
Meterorological range (km) versus Turbidity
@end group
@end example
@defun sunlight-spectrum turbidity theta_s
Returns a vector of 41 values, the spectrum of sunlight from
380.nm to 790.nm for a given @var{turbidity} and @var{theta_s}.
@end defun
@defun sunlight-xyz turbidity theta_s
Returns (unnormalized) XYZ values for color of sunlight for a
given @var{turbidity} and @var{theta_s}.
@end defun
@defun sunlight-ciexyz turbidity theta_s
Given @var{turbidity} and @var{theta_s}, @code{sunlight-ciexyz} returns the CIEXYZ triple for color of
sunlight scaled to be just inside the RGB709 gamut.
@end defun
@defun zenith-xyy turbidity theta_s
Returns the xyY (chromaticity and luminance) at the zenith. The
Luminance has units kcd/m^2.
@end defun
@defun overcast-sky-color-xyy turbidity theta_s
@var{turbidity} is a positive real number expressing the amount of light
scattering. The real number @var{theta_s} is the solar angle from the zenith in
degrees.
@code{overcast-sky-color-xyy} returns a function of one angle @var{theta}, the angle from the
zenith of the viewing direction (in degrees); and returning the xyY
value for light coming from that elevation of the sky.
@end defun
@defun clear-sky-color-xyy turbidity theta_s phi_s
@defunx sky-color-xyy turbidity theta_s phi_s
@var{turbidity} is a positive real number expressing the amount of light
scattering. The real number @var{theta_s} is the solar angle from the zenith in
degrees. The real number @var{phi_s} is the solar angle from south.
@code{clear-sky-color-xyy} returns a function of two angles, @var{theta} and @var{phi} which
specify the angles from the zenith and south meridian of the viewing
direction (in degrees); returning the xyY value for light coming from
that direction of the sky.
@code{sky-color-xyY} calls @code{overcast-sky-color-xyY} for
@var{turbidity} <= 20; otherwise the @code{clear-sky-color-xyy} function.
@end defun
|