@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-chromaticity turbidity theta_s Given @var{turbidity} and @var{theta_s}, @code{sunlight-chromaticity} 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