/* 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]