Home

Analemmatic Sundial Mathematics


/* analemmatic sundial computations for use in a program or speadsheet
   with signs appropriate for southern hemisphere

   longcor = longitude correction 
   e.g. longcor for Gauteng at 28 deg east = -8 minutes = -2 degrees,
   Southern African Standard Time being for 30 degrees east time zone

   lat = latitude, 
   e.g. Gauteng latitude = 26 deg south = -26 degrees

   data needed for the analemma (dateline):
   Sundec = declination of the Sun in degrees at date
   ETmin  = equation of time at date, in minutes
 */

        date      Sundec       ETmin
       Jan01     -23.067       -3.70
       Jan15     -21.242       -9.27
       Feb01     -17.333      -13.70
       Feb15     -12.904      -14.13
       Mar01      -7.817      -12.40
       Mar15      -2.401       -9.03
       Apr01       4.300       -4.00
       Apr15       9.526       -0.13
       May01      14.900        3.00
       May15      18.706        3.68
       Jun01      21.967        2.30
       Jun15      23.277       -0.37
       Jul01      23.150       -3.60
       Jul15      21.625       -5.92
       Aug01      18.167       -6.10
       Aug15      13.942       -4.55
       Sep01       8.500        0.00
       Sep15       3.284        4.65
       Oct01      -2.950       10.30
       Oct15      -8.266       14.13
       Nov01     -14.233       16.40
       Nov15     -18.309       15.47
       Dec01     -21.716       10.90
       Dec15     -23.228        5.05

/* two constants are needed:
   scale = scale size, 2.5 is good size in metres for walk on sundial 
   but 1.5 - 2.0 will be better for young people*/
scale=2.5;

/* dtr = degrees to radians conversion for libraries wanting trig functions
   in radians; set to 1.0 if trig functions use degrees */
dtr=0.017453293;

/* time line, where Tdeg = standard time in degrees (1 degree = 4 minutes),
 let Tdeg run from 06h00 to 18h00 at half hour intervals */

/* Xtime = M sin(T +/- longitude correction in degrees) */
Xtime=-scale*sin((Tdeg+longcor)*dtr);

/* Ytime = M sin(lat) cos(T +/- long. corr.) */
Ytime=-scale*sin(-lat*dtr)*cos((Tdeg+longcor)*dtr);

/* analemma Y axis = M tan(Sundec) cos(lat) */
Yan=-scale*tan(Sundec*dtr)*cos(lat*dtr);

/* analemma X axis = -M ETmin converted to degrees */
Xan=+scale*(ETmin/4.0*dtr);

This is a southern hemisphere example, for Gauteng Province in South Africa. Note the signs for Xtime, Ytime, Xan, Yan.

/* sundlgtg.hst - Gauteng
   longitude correction for 28 deg east = -8 mins = -2 deg
   latitude = 26 deg south
   X = M sin(T +/- Longitude correction in degrees)
   Y = M sin(lat) cos(T +/- long. corr.)
   where T = SAST in degrees */
Xtime=-2.5*sin((Tdeg-2)*0.017453293);
Ytime=-2.5*sin(-26*0.017453293)*cos((Tdeg-2)*0.017453293);
/* analemma Y axis = M tan(dec) cos(lat) */
Yan=-2.5*tan(Dec*0.017453293)*cos(-26*0.017453293);
/* analemma X axis = -M ETmin -> degrees */
Xan=+2.5*(ETmin/4.0*0.017453293);

This is a northern hemisphere example, for Brocton in England. Note the signs for Xtime, Ytime, Xan, Yan.

/* sundlBRO.hst - for Brocton, England
   longitude correction at 2d 02' 20" west = 8.156 mins = 2.039 deg
   latitude = 52d 47' 40" north  = 52.778 deg
   X = M sin(T +/- Longitude correction in degrees)
   Y = M sin(lat) cos(T +/- long. corr.)
   where T = Time Zone standard time in degrees */
Xtime=+2.5*sin((Tdeg-2.039)*0.017453293);
Ytime=+2.5*sin(+52.778*0.017453293)*cos((Tdeg-2.039)*0.017453293);
/* analemma Y axis = M tan(dec) cos(lat) */
Yan=+2.5*tan(Dec*0.017453293)*cos(+52.778*0.017453293);
/* analemma X axis = -M ETmin -> degrees */
Xan=-2.5*(ETmin/4.0*0.017453293);



www.hartrao.ac.za/other/sundial/sundlmath.html
Last updated 2000/05/08 by M Gaylard e-mail: mike@hartrao.ac.za