I've found I can read the time for sunrise and sunset for any location on Earth on any day of the year to within a minute of accuracy. First we model the earth and give it a tilt of 23.44 degrees. I've modeled the path of Minneapolis, Minnesota, shown in green. The sunlight shadow line is modeled in orange. This view shows December 21: Here it is shown in profile: Let's eliminate the southern hemisphere from our CAD database: Next, we view the path of Minneapolis from straight north of the north pole. The arc length of daylight for Minneapolis can be readily obtained by noting the number of increments on the earth model between the two points of intersection of the Minneapolis path and the sunlight shadow line. (The image can be zoomed in on at the end points of the arc for a highly accurate assessment of the end portions.) Simple arithmetic converts that to a ratio of the 24 hour period. Note that the nighttime arc of December 21 is the equivalent of the daytime arc for June 21. Here is the same view with the full database (full sphere): Finally, one needs to add the appropriate time for the degree width of the sun, as well as the extra daylight time due to atmospheric refraction. Oh yes, and the sidereal motion. It's a trivial task to make this same model with the equatorial bulge included, which increases the accuracy of the readings.