I am pretty new to astronomy, and I have fallen down rabbit hole creating a new Metonic calendar in Javascript.

As part of this I would like to calculate when the sun is half way between a solstice and an equinox as viewed on a horison. Forgive me if my terminology is off but I believe this is known as the azimuth.

My issue is that I do not know what the correct values are. I am already calculating the solstice and equinoxes using the suncalc javascript library


in this code are the following 4 lines that determine the solstices and equinoxes. 0 is the spring equinox and 3 is the winter solstice.

switch( k ) {
     case 0: JDE0 = 2451623.80984 + 365242.37404*Y + 0.05169*POW2(Y) - 0.00411*POW3(Y) - 0.00057*POW4(Y); break;
     case 1: JDE0 = 2451716.56767 + 365241.62603*Y + 0.00325*POW2(Y) + 0.00888*POW3(Y) - 0.00030*POW4(Y); break;
     case 2: JDE0 = 2451810.21715 + 365242.01767*Y - 0.11575*POW2(Y) + 0.00337*POW3(Y) + 0.00078*POW4(Y); break;
     case 3: JDE0 = 2451900.05952 + 365242.74049*Y - 0.06223*POW2(Y) - 0.00823*POW3(Y) + 0.00032*POW4(Y); break;

can anyone help me understand what the values might be to determine the halfway points between these solstice and equinox values?

thank you for your help.

  • $\begingroup$ Beware - the sun's travel is an asymmetric figure-8, so "half-way" is not necessarily the calendar's half-way date. $\endgroup$ Feb 26, 2019 at 15:46
  • $\begingroup$ Your link includes a very detailed explanation of each property associated with the answer produced by that function. Since they are all Javascript Date-class objects, you can work out the values yourself easily enough. $\endgroup$ Feb 26, 2019 at 15:48

1 Answer 1


The azimuth of the sunrise (or sunset, or any object) is a function of the Sun's declination and observer's latitude. It can be calculated from the following forumla: $$\cos(\theta_R)=-\frac{\sin(declination)}{\cos(latitude)}$$ where $\theta_R$ is measured from due south to the location where the object rises or sets.

For example, at 55 degrees north latitude,

  • declination = 0 at equinox (by definition), so $\theta_R$ = 90 degrees from due south (90 degrees azimuth or due East when rising, 270 degrees or due west when setting).
  • declination = 23.4 (approximately) at the summer solstice, so $\theta_R$ = 133.8 degrees from due south (or an azimuth of 46.2 when rising, azimuth 313.8 when setting). [The declination at the solstice is plus or minus the obliquity of the ecliptic which is 23° 26′ 21″ = 23.4392° in the year 2000 and changes slowly.]
  • Half way between those two points on the horizon is (90+133.8)/2 = 111.9 degrees from due south. Solving the equation for the declination gives a value of declination = 12.4 degrees.
  • Now find the date when the Sun's declination is +12.4 degrees (April 23 and August 24 according to Table of the Sun's Declination).

Of course, the Sun will not be at the exact required declination at the time that it is rising (or setting), so you will want to select the date when the sunrise or sunset is closest. It will be accurate enough for most visual observations.

  • $\begingroup$ Thank you for this. While I now understand better what the calculation needs to be, I am no closer to understanding how to apply that to the code snippet. There are just to many unknown numbers in the calculations. $\endgroup$
    – Mark Jones
    Mar 3, 2019 at 15:58
  • $\begingroup$ @MarkJones. I should have mentioned that the Sun's declination is always 0 at the equinox and always +23.45 or -23.45 at the solstice. After using the above formula to calculate the azimuth and declination of the sun "half way between" the equinox and solstice, the only calculation is to find the date on which the Sun's declination matches the desired declination. I assume the library has a calculation of the Sun's declination. It does not change much from year to year, so a simple table and lookup would be sufficient for most purposes. $\endgroup$
    – JohnHoltz
    Mar 4, 2019 at 1:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .