diff options
Diffstat (limited to 'daylight.txi')
-rw-r--r-- | daylight.txi | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/daylight.txi b/daylight.txi new file mode 100644 index 0000000..fa24afc --- /dev/null +++ b/daylight.txi @@ -0,0 +1,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 |