Download or view risesetchart.frink in plain text format
// Calculates moon and sun rise/set times and azimuths.
use sun.frink
start = #2010-02-01#
end = #2010-02-10#
tz = "Hawaii" // timezone[]
lat = 20.7 degrees North
long = 156.3 degrees West
time = start
moonrise = moonset = sunrise = sunset = time
g = new graphics
line = 0
while (time < end)
{
moonrise = moonrise[moonrise, lat, long]
moonset = moonset[moonset, lat, long]
if (moonrise > moonset)
moonrise = moonrise[moonrise-1 day, lat, long]
[moonriseaz, alt] = refractedMoonAzimuthAltitude[moonrise, lat, long]
[moonsetaz, alt] = refractedMoonAzimuthAltitude[moonset, lat, long]
moonriseaz = (moonriseaz + 180 degrees) mod circle
moonsetaz = (moonsetaz + 180 degrees) mod circle
sunrise = sunrise[sunrise, lat, long]
sunset = sunset[sunset, lat, long]
if (sunrise > sunset)
sunrise = sunrise[sunrise-1 day, lat, long]
[sunriseaz, alt] = refractedSunAzimuthAltitude[sunrise, lat, long]
[sunsetaz, alt] = refractedSunAzimuthAltitude[sunset, lat, long]
sunriseaz = (sunriseaz + 180 degrees) mod circle
sunsetaz = (sunsetaz + 180 degrees) mod circle
println["Moonrise: " + (moonrise->tz) + " " + format[moonriseaz, deg, 2]]
println["Moonset: " + (moonset->tz) + " " + format[moonsetaz, deg, 2]]
println["Sunrise: " + (sunrise->tz) + " " + format[sunriseaz, deg, 2]]
println["Sunset: " + (sunset->tz) + " " + format[sunsetaz, deg, 2]]
g.font["SansSerif", 1/4]
g.color[0,0,0] // Draw background in black
g.fillRectCenter[1, line+1/2, .9, .9]
g.fillRectCenter[2, line+1/2, .9, .9]
g.color[1,1,1] // Draw moon in white
g.add[drawMoonPolygonRelativeToZenith[moonrise, lat, long, 1, line + 1/2, .4, true]]
g.add[drawMoonPolygonRelativeToZenith[moonset, lat, long, 2, line + 1/2, .4, true]]
println[]
time = time + 1 day
moonrise = moonrise + 1 day
moonset = moonset + 1 day
sunrise = sunrise + 1 day
sunset = sunset + 1 day
line = line + 1
}
g.show[]
Download or view risesetchart.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen was born 20143 days, 10 hours, 56 minutes ago.