# autumnEquinoxPlot.frink

``` // This program calculates and plots the date of the autumn equinox // over the course of a few centuries.  This shows how the date of // the equinox drifts over time (and is corrected back by leap year // rules.) use sun.frink use planets.frink use secant.frink longfunc = {|date| highAccuracySunApparentLongitude[date]} // Let's calculate the longitude angle that corresponds to 1 millisecond of // time angleres = ms circle/solaryear tz = "US/Mountain" startyear = 1800 endyear = 2150 g = new graphics g.font["Monospaced", .1 day] p = new polyline for y = startyear to endyear {    autumnEquinox = secantInvert[longfunc,                                  0 degrees,                                  autumnEquinox[y] - 1 hour,                                  autumnEquinox[y] + 1 hour,                                  angleres]    d = autumnEquinox - parseDate["\$y \$tz"]    println["\$y\t" + (autumnEquinox -> tz) + "\t" + format[d, "days", 2]]    p.addPoint[y,-d]    g.fillEllipseCenter[y, -d, 1, .01 day]  } g.color[0,0,0,.3] g.add[p] for y = startyear to endyear step 50 {    g.color[0,0,0,.3]    g.line[y, -263 days, y, -267 days]    g.color[0,0,0]    g.text["\$y", y, -263 days, "center", "top"] } df = ### MM-dd ### for d = 263 days to 267 days step day {    g.color[0,0,0,.3]    g.line[startyear, -d, endyear, -d]    usualDate = (parseDate["2015 \$tz"] + d) -> [df, tz]    leapDate = (parseDate["2016 \$tz"] + d) -> [df, tz]    g.color[0,0,0]    g.text[format[d,"days",0] + "   \n(usually " + usualDate + "   \n on leap years, \$leapDate)  ", startyear, -d, "right", "center"] } g.color[0,0,0,0] g.line[startyear-100, -263 days, startyear-100, -267 days] g.color[0,0,0] g.font["SansSerif", .15 day] g.text["Autumn Equinox (days after beginning of year, \$tz)", 1975, -267.1 days, "center", "bottom"] g.show[] stz = tz =~ %s/\//./g g.write["autumnequinox\$stz.png",2000,1000] g.write["autumnequinox\$stz.html",2000,1000] g.write["autumnequinox\$stz.svg",2000,1000] //browse["autumnequinox\$stz.html"] //browse["autumnequinox\$stz.svg"]   ```

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 18492 days, 22 hours, 43 minutes ago.