Download or view moonPlanetPlot.frink in plain text format
/* This program plots the approach of a planet and the moon.
Note that moon alignments are sensitive to parallax, so the exact location
on the earth is important.
*/
use planets.frink
// Configure your location and timezone here
lat = 40 degrees North
long = 105 degrees West
timezone = "America/Denver" // You can replace this with timezone = timezone[]
planet = Planet.Jupiter
g = new graphics
//g.backgroundColor[.5, .5, 1]
g.font["SansSerif", 0.06 degree]
outFormat = ### HH:mm ### // Format for displaying times on the graph
for date = #2015-10-09# to #2015-10-10# step 10 minutes
{
planetRadius = Planet.Earth.radiusAngle[date, planet]
moonRadius = moonRadiusAngle[date]
// println["Moon radius is " + format[moonRadius, "degrees", 4]]
[moonAz, moonAlt] = refractedMoonAzimuthAltitude[date, lat, long]
if moonAlt > 0 deg
g.add[drawMoonPolygonRelativeToZenith[date, lat, long, 0 deg, 0 deg, moonRadius, true]]
[planetAz, planetAlt] = planet.refractedAzimuthAltitude[date, lat, long]
// Only show positions while the planet is above the horizon
if planetAlt > 0 deg
{
// Draw planet position relative to a semi-fixed moon.
relAz = planetAz-moonAz
relAlt = planetAlt-moonAlt
g.add[Planet.Venus.drawPolygonRelativeToZenith[date, lat, long, relAz, -relAlt, planetRadius, true]]
angle = arctan[relAlt, relAz]
g.text[date -> [outFormat, timezone], relAz, -relAlt, "left", "center", angle]
}
sep = angularSeparation[moonAz, moonAlt, planetAz, planetAlt]
println[(date->timezone) + ": Separation is " + format[sep, "degrees", 4]]
}
g.show[]
g.write[planet.getName[] + ".svg",1000,700]
g.write[planet.getName[] + ".html",1000,700]
Download or view moonPlanetPlot.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, eliasen@mindspring.com