<p>You've asked for &quot;declination&quot;, but the rest of the question sounds like you're interested more in alt/az coordinates (declination doesn't change based on location).  Since you need to compute the declination for alt/az coordinates, here is how to do both.</p>
<p>The date input to these functions are <a href="https://www.celestialprogramming.com/julian.html" rel="nofollow noreferrer">Julian Dates</a>.  The code is in JavaScript.</p>
<p>First compute the sun's right ascension and declination:</p>
<pre><code>//Low precision sun position from Astronomical Almanac page C5 (2017 ed).
//Accuracy 1deg from 1950-2050
function sunPosition(jd)    {
    const torad=Math.PI/180.0;
    n=jd-2451545.0;
    L=(280.460+0.9856474*n)%360;
    g=((375.528+.9856003*n)%360)*torad;
    if(L&lt;0){L+=360;}
    if(g&lt;0){g+=Math.PI*2.0;}

    lamba=(L+1.915*Math.sin(g)+0.020*Math.sin(2*g))*torad;
    beta=0.0;
    eps=(23.439-0.0000004*n)*torad;
    ra=Math.atan2(Math.cos(eps)*Math.sin(lamba),Math.cos(lamba));
    dec=Math.asin(Math.sin(eps)*Math.sin(lamba));
    if(ra&lt;0){ra+=Math.PI*2;}
    return [ra/torad/15.0,dec/torad];
}
</code></pre>
<p>Then compute the Alt/Az position of those RA Dec coordinates for a given latitude and longitude:</p>
<pre><code>//Greg Miller (gmiller@gregmiller.net) 2021
//Released as public domain
//http://www.celestialprogramming.com/

//All input and output angles are in radians, jd is Julian Date in UTC
function raDecToAltAz(ra,dec,lat,lon,jd_ut){
    //Meeus 13.5 and 13.6, modified so West longitudes are negative and 0 is North
    const gmst=greenwichMeanSiderealTime(jd_ut);
    let localSiderealTime=(gmst+lon)%(2*Math.PI);
    
        
    let H=(localSiderealTime - ra);
    if(H&lt;0){H+=2*Math.PI;}
    if(H&gt;Math.PI){H=H-2*Math.PI;}

    let az = (Math.atan2(Math.sin(H), Math.cos(H)*Math.sin(lat) - Math.tan(dec)*Math.cos(lat)));
    let a = (Math.asin(Math.sin(lat)*Math.sin(dec) + Math.cos(lat)*Math.cos(dec)*Math.cos(H)));
    az-=Math.PI;

    if(az&lt;0){az+=2*Math.PI;}
    return [az,a, localSiderealTime,H];
}
    
function greenwichMeanSiderealTime(jd){
    //&quot;Expressions for IAU 2000 precession quantities&quot; N. Capitaine1,P.T.Wallace2, and J. Chapront
    const t = ((jd - 2451545.0)) / 36525.0;

    let gmst=this.earthRotationAngle(jd)+(0.014506 + 4612.156534*t + 1.3915817*t*t - 0.00000044 *t*t*t - 0.000029956*t*t*t*t - 0.0000000368*t*t*t*t*t)/60.0/60.0*Math.PI/180.0;  //eq 42
    gmst%=2*Math.PI;
    if(gmst&lt;0) gmst+=2*Math.PI;

    return gmst;
}

function earthRotationAngle(jd){
    //IERS Technical Note No. 32

    const t = jd- 2451545.0;
    const f = jd%1.0;

    let theta = 2*Math.PI * (f + 0.7790572732640 + 0.00273781191135448 * t); //eq 14
    theta%=2*Math.PI;
    if(theta&lt;0)theta+=2*Math.PI;

    return theta;

}
</code></pre>
<p>Example implementations are available:
<a href="https://www.celestialprogramming.com/sunPosition-LowPrecisionFromAstronomicalAlmanac.html" rel="nofollow noreferrer">Sun Position</a>
<a href="https://www.celestialprogramming.com/convert_ra_dec_to_alt_az.html" rel="nofollow noreferrer">RA/Dec to Alt/Az</a></p>

CC BY-SA 4.0
2022-02-14T18:19:52.920Z
I just checked that declination formula against Horizons. It's quite accurate for the present era. Here's the [Horizons data for this year](https://ssd.jpl.nasa.gov/api/horizons.api?format=text&MAKE_EPHEM=YES&COMMAND=10&EPHEM_TYPE=OBSERVER&CENTER=500%40399&QUANTITIES=1&REF_SYSTEM=ICRF&CAL_FORMAT=BOTH&TIME_DIGITS=MINUTES&ANG_FORMAT=DEG&APPARENT=AIRLESS&CSV_FORMAT=YES&OBJ_DATA=NO&START_TIME=2022-Jan-01&STOP_TIME=2023-Jan-01&STEP_SIZE=7d)
PM 2Ring
CC BY-SA 4.0
2022-02-15T05:55:13.707Z
@greg-miller sorry I mentioned altitude instead of latitude and used along (wrong phrasing), my bad.
Pavel Sayekat
CC BY-SA 4.0
2022-02-15T09:02:57.730Z
@PM2Ring an observer on the equator with a 0 degree decline of Sun  will observe the 12 o'clock Sun at 0 degree N/S, also an observer at the tropic of cancer line will see the same or 23.45 degrees to south, the 12 o'clock Sun given on a specific day?
Pavel Sayekat
CC BY-SA 4.0
2022-02-15T12:08:08.927Z
@Pavel The Sun has declination 0° on the equinoxes, for all observers. But its altitude angle (also known as the elevation) *does* depend on the observer's latitude. Please see https://en.wikipedia.org/wiki/Horizontal_coordinate_system
PM 2Ring
CC BY-SA 4.0
2022-02-16T05:57:48.987Z
@PM2Ring in that case, should I amend the question or ask a different question about calculating "altitude angle" for observer's latitude on a given day of a year because the answer will become a little less relevant in that regard I presume?
Pavel Sayekat
CC BY-SA 4.0
2022-02-16T19:31:21.417Z
This answer shows how to calculate both the declination and altitude angle.  It also computes the right ascension and azimuth angle.
Greg Miller
CC BY-SA 4.0
2022-02-14T14:47:37.690Z
2022-02-14T17:12:50.150Z
2022-02-14T17:12:50.150Z
Greg Miller
<p>How to calculate the Sun's declination for a specific location (i.e. relative to a specific coordinate) based on the axial tilt of Earth throughout the year? Any algorithm for code available in this regard?</p>
<p>So I tried to port the below JS code to cpp</p>
<pre><code> #include &lt;iostream&gt;
 #include &lt;cmath&gt;
 
 using namespace std;
 
 double earthRotationAngle(double jd);
 double greenwichMeanSiderealTime(double jd);
 double Julian_day(string date);
 
 double pi = atan(1)*4, lat, lon;
 string date;
 
 double Julian_day(string date){
 
    int Y = stoi(date.substr(0, 4));
    int M = stoi(date.substr(5, 2));
    int D = stoi(date.substr(8));
         
     double jd = (1461 * (Y + 4800 + (M - 14)/12))/4 + (367 * (M - 2 - 12 * ((M - 14)/12)))/ 12 - (3 * ((Y + 4900 + (M - 14)/12)/100))/4 + D - 32075;
     /*double A = Y/100;
    double B = A/4;
    double C = 2-A+B;
    double E = 365.25*(Y+4716);
    double F = 30.6001*(M+1);
    double jd= C+D+E+F-1524.5;*/
   
    return jd;
 }
 
 class sunPosition {   
    // Takes Julian date and returns Sun's right ascension and declination
     public:
     const double torad = pi/180.0;
     double n=Julian_day(date)-2451545.0;
     
     double L=fmod((280.460+0.9856474*n),360);
     double g=fmod((375.528+.9856003*n),360)*torad;
     
     double Lg(){
        if(L &lt; 0){L+=360;}
        if(g &lt; 0){g+=pi*2.0;}
        double lamba=(L+1.915*sin(g)+0.020*sin(2*g))*torad;
        return lamba;
    }
 
 
     //double beta = 0;
     double eps = (23.439-0.0000004*n)*torad;
     double ra = atan2(cos(eps)*sin(Lg()),cos(Lg()));
     double dec = asin(sin(eps)*sin(Lg()));
     double a_dec = dec/torad;
     
     double ara(){
        if(ra &lt; 0){ra+=pi*2;}
            
        double a_ra = ra/torad/15.0; 
        return a_ra;
    }
 
 };
 
 //Greg Miller (gmiller@gregmiller.net) 2021
 //Released as public domain
 //http://www.celestialprogramming.com/
 
 //All input and output angles are in radians, jd is Julian Date in UTC
 //The inputs are right ascension, sun's declination, latitude, longitude and Julian date 
 //(double ra,double dec,double lat,double lon,double jd_ut)
 
 class raDecToAltAz: public sunPosition{
     //Meeus 13.5 and 13.6, modified so West longitudes are negative and 0 is North
    public:
     const double gmst=greenwichMeanSiderealTime(Julian_day(date));
     double localSiderealTime = fmod((gmst+lon),(2*pi));
         
     double H = (localSiderealTime - ara());
     
     double Hfix(){
        if(H&lt;0){H+=2*pi;}
        if(H&gt;pi){H=H-2*pi;}
    return H;
    }
    
     double az = atan2(sin(Hfix()), (cos(Hfix())*sin(lat) - tan(a_dec)*cos(lat)));
     double a = asin(sin(lat)*sin(a_dec) + cos(lat)*cos(a_dec)*cos(Hfix()));
 
     double azfix(){
        az -= pi;
        if(az&lt;0){az+=2*pi;}
        return az;
    }
     //returns (az,a,localSiderealTime,H);
 };
     
 double greenwichMeanSiderealTime(double jd){
     //&quot;Expressions for IAU 2000 precession quantities&quot; N. Capitaine1,P.T.Wallace2, and J. Chapront
     const double t = ((jd - 2451545.0)) / 36525.0;
 
     double gmst = earthRotationAngle(jd)+(0.014506 + 4612.156534*t + 1.3915817*pow(t,2) - 0.00000044 *pow(t,3)- 0.000029956*pow(t,4) - 0.0000000368*pow(t,5))/60.0/60.0*pi/180.0;  //eq 42
     gmst=fmod(gmst,(2*pi));
     if(gmst&lt;0) gmst+=2*pi;
 
     return gmst;
 }
 
 double earthRotationAngle(double jd){
     //IERS Technical Note No. 32
     
     const double t = jd- 2451545.0;
     const double f = fmod(jd,1.0);
 
     double theta = 2*pi * (f + 0.7790572732640 + 0.00273781191135448 * t); //eq 14
     theta=fmod(theta,(2*pi));
     if(theta&lt;0){theta+=2*pi;}
 
     return theta;
 }
 
 int main(){
    cout &lt;&lt; &quot;Enter your location latitude:  &quot; &lt;&lt;endl;
    cin &gt;&gt; lat;
    cout &lt;&lt; &quot;Enter your location longitude: &quot; &lt;&lt;endl;
    cin &gt;&gt; lon;
    cout &lt;&lt; &quot;Enter the day of the year as yyyy-mm-dd: &quot;&lt;&lt; endl;
    cin &gt;&gt; date; //= &quot;2019-01-09&quot;;
 
    //sunPosition sun;
    raDecToAltAz alt;
    
    cout &lt;&lt; endl &lt;&lt;&quot;Julian_day: &quot; &lt;&lt; Julian_day(date) &lt;&lt; endl;
    cout &lt;&lt; &quot;earthRotationAngle: &quot; &lt;&lt; earthRotationAngle(Julian_day(date)) &lt;&lt; endl;
    cout &lt;&lt; &quot;Azimuth: &quot; &lt;&lt;alt.azfix() &lt;&lt; endl;                      // azimuth
    cout &lt;&lt; &quot;Altitude: &quot; &lt;&lt;alt.a &lt;&lt; endl;                           // altitude may be
    cout &lt;&lt; &quot;Local Sidereal time: &quot; &lt;&lt;alt.localSiderealTime &lt;&lt; endl;    // localSiderealTime
    cout &lt;&lt; &quot;Hour angle: &quot; &lt;&lt;alt.Hfix() &lt;&lt; endl;                    // hour angle
    cout &lt;&lt; &quot;Right ascension: &quot; &lt;&lt; alt.ara() &lt;&lt; endl;               // Right ascension
    cout &lt;&lt; &quot;Sun's declination: &quot; &lt;&lt; alt.a_dec &lt;&lt; endl;             // Sun's declination
 }
 
</code></pre>
<p>and it returned for
<code>lat 77.2069702520977   lon 118.639627806683    date: 1472-Aug-18</code></p>
<p>Julian_day: 2.25893e+06</p>
<p>earthRotationAngle: 2.68419</p>
<p>Azimuth: 1.57751</p>
<p>Altitude: 0.604463</p>
<p>Local Sidereal time: 1.82557</p>
<p>Hour angle: -1.72583</p>
<p>Right ascension: 9.83458</p>
<p>Sun's declination: 13.1531</p>
<p>Which do not coincide with this <a href="https://www.celestialprogramming.com/radec_to_altaz_testtdata.html" rel="nofollow noreferrer">test data</a>. So any more insight on it?</p>

CC BY-SA 4.0
2022-02-15T08:15:27.957Z
As Greg says below, the Sun's declination only depends on the time. It doesn't depend on the observer's location.
PM 2Ring
CC BY-SA 4.0
2022-02-22T10:36:44.900Z
Greg's equations are for the era 1950 to 2050. They lose accuracy outside that era. BTW, your Julian day number doesn't have enough digits. The JDN of Noon 1472-Aug-18  is  2258927 if you're using the Gregorian calandar, or 2258936 if you're using the Julian calendar. I should mention that [Horizons](https://ssd.jpl.nasa.gov/horizons/manual.html#time) uses the Julian calendar for dates before 1582-Oct-15.
PM 2Ring
<earth><obliquity>
How to calculate the Sun's declination for a specific location based on the axial tilt of Earth throughout the year?
Pavel Sayekat
# How to calculate the Sun's declination for a specific location based on the axial tilt of Earth throughout the year?

(Asked by: username_0 on 2022-02-14)

How to calculate the Sun's declination for a specific location (i.e. relative to a specific coordinate) based on the axial tilt of Earth throughout the year? Any algorithm for code available in this regard?

So I tried to port the below JS code to cpp

```
 #include <iostream>
 #include <cmath>
 
 using namespace std;
 
 double earthRotationAngle(double jd);
 double greenwichMeanSiderealTime(double jd);
 double Julian_day(string date);
 
 double pi = atan(1)*4, lat, lon;
 string date;
 
 double Julian_day(string date){
 
    int Y = stoi(date.substr(0, 4));
    int M = stoi(date.substr(5, 2));
    int D = stoi(date.substr(8));
         
     double jd = (1461 * (Y + 4800 + (M - 14)/12))/4 + (367 * (M - 2 - 12 * ((M - 14)/12)))/ 12 - (3 * ((Y + 4900 + (M - 14)/12)/100))/4 + D - 32075;
     /*double A = Y/100;
    double B = A/4;
    double C = 2-A+B;
    double E = 365.25*(Y+4716);
    double F = 30.6001*(M+1);
    double jd= C+D+E+F-1524.5;*/
   
    return jd;
 }
 
 class sunPosition {   
    // Takes Julian date and returns Sun's right ascension and declination
     public:
     const double torad = pi/180.0;
     double n=Julian_day(date)-2451545.0;
     
     double L=fmod((280.460+0.9856474*n),360);
     double g=fmod((375.528+.9856003*n),360)*torad;
     
     double Lg(){
        if(L < 0){L+=360;}
        if(g < 0){g+=pi*2.0;}
        double lamba=(L+1.915*sin(g)+0.020*sin(2*g))*torad;
        return lamba;
    }
 
 
     //double beta = 0;
     double eps = (23.439-0.0000004*n)*torad;
     double ra = atan2(cos(eps)*sin(Lg()),cos(Lg()));
     double dec = asin(sin(eps)*sin(Lg()));
     double a_dec = dec/torad;
     
     double ara(){
        if(ra < 0){ra+=pi*2;}
            
        double a_ra = ra/torad/15.0; 
        return a_ra;
    }
 
 };
 
 //username_2 username_2 (gmiller@username_2.net) 2021
 //Released as public domain
 //http://www.celestialprogramming.com/
 
 //All input and output angles are in radians, jd is Julian Date in UTC
 //The inputs are right ascension, sun's declination, latitude, longitude and Julian date 
 //(double ra,double dec,double lat,double lon,double jd_ut)
 
 class raDecToAltAz: public sunPosition{
     //Meeus 13.5 and 13.6, modified so West longitudes are negative and 0 is North
    public:
     const double gmst=greenwichMeanSiderealTime(Julian_day(date));
     double localSiderealTime = fmod((gmst+lon),(2*pi));
         
     double H = (localSiderealTime - ara());
     
     double Hfix(){
        if(H<0){H+=2*pi;}
        if(H>pi){H=H-2*pi;}
    return H;
    }
    
     double az = atan2(sin(Hfix()), (cos(Hfix())*sin(lat) - tan(a_dec)*cos(lat)));
     double a = asin(sin(lat)*sin(a_dec) + cos(lat)*cos(a_dec)*cos(Hfix()));
 
     double azfix(){
        az -= pi;
        if(az<0){az+=2*pi;}
        return az;
    }
     //returns (az,a,localSiderealTime,H);
 };
     
 double greenwichMeanSiderealTime(double jd){
     //"Expressions for IAU 2000 precession quantities" N. Capitaine1,P.T.Wallace2, and J. Chapront
     const double t = ((jd - 2451545.0)) / 36525.0;
 
     double gmst = earthRotationAngle(jd)+(0.014506 + 4612.156534*t + 1.3915817*pow(t,2) - 0.00000044 *pow(t,3)- 0.000029956*pow(t,4) - 0.0000000368*pow(t,5))/60.0/60.0*pi/180.0;  //eq 42
     gmst=fmod(gmst,(2*pi));
     if(gmst<0) gmst+=2*pi;
 
     return gmst;
 }
 
 double earthRotationAngle(double jd){
     //IERS Technical Note No. 32
     
     const double t = jd- 2451545.0;
     const double f = fmod(jd,1.0);
 
     double theta = 2*pi * (f + 0.7790572732640 + 0.00273781191135448 * t); //eq 14
     theta=fmod(theta,(2*pi));
     if(theta<0){theta+=2*pi;}
 
     return theta;
 }
 
 int main(){
    cout << "Enter your location latitude:  " <<endl;
    cin >> lat;
    cout << "Enter your location longitude: " <<endl;
    cin >> lon;
    cout << "Enter the day of the year as yyyy-mm-dd: "<< endl;
    cin >> date; //= "2019-01-09";
 
    //sunPosition sun;
    raDecToAltAz alt;
    
    cout << endl <<"Julian_day: " << Julian_day(date) << endl;
    cout << "earthRotationAngle: " << earthRotationAngle(Julian_day(date)) << endl;
    cout << "Azimuth: " <<alt.azfix() << endl;                      // azimuth
    cout << "Altitude: " <<alt.a << endl;                           // altitude may be
    cout << "Local Sidereal time: " <<alt.localSiderealTime << endl;    // localSiderealTime
    cout << "Hour angle: " <<alt.Hfix() << endl;                    // hour angle
    cout << "Right ascension: " << alt.ara() << endl;               // Right ascension
    cout << "Sun's declination: " << alt.a_dec << endl;             // Sun's declination
 }
 

```

and it returned for
`lat 77.2069702520977 lon 118.639627806683 date: 1472-Aug-18`

Julian\_day: 2.25893e+06

earthRotationAngle: 2.68419

Azimuth: 1.57751

Altitude: 0.604463

Local Sidereal time: 1.82557

Hour angle: -1.72583

Right ascension: 9.83458

Sun's declination: 13.1531

Which do not coincide with this [test data](https://www.celestialprogramming.com/radec_to_altaz_testtdata.html). So any more insight on it?

**Tags:** earth, obliquity

> **Comments:**
> **username_1**: As username_2 says below, the Sun's declination only depends on the time. It doesn't depend on the observer's location.  
> **username_1**: username_2's equations are for the era 1950 to 2050. They lose accuracy outside that era. BTW, your Julian day number doesn't have enough digits. The JDN of Noon 1472-Aug-18  is  2258927 if you're using the Gregorian calandar, or 2258936 if you're using the Julian calendar. I should mention that [Horizons](https://ssd.jpl.nasa.gov/horizons/manual.html#time) uses the Julian calendar for dates before 1582-Oct-15.  

---

## 1 answers

### Answer by username_2 on 2022-02-14. Score: 2

You've asked for "declination", but the rest of the question sounds like you're interested more in alt/az coordinates (declination doesn't change based on location). Since you need to compute the declination for alt/az coordinates, here is how to do both.

The date input to these functions are [Julian Dates](https://www.celestialprogramming.com/julian.html). The code is in JavaScript.

First compute the sun's right ascension and declination:

```
//Low precision sun position from Astronomical Almanac page C5 (2017 ed).
//Accuracy 1deg from 1950-2050
function sunPosition(jd)    {
    const torad=Math.PI/180.0;
    n=jd-2451545.0;
    L=(280.460+0.9856474*n)%360;
    g=((375.528+.9856003*n)%360)*torad;
    if(L<0){L+=360;}
    if(g<0){g+=Math.PI*2.0;}

    lamba=(L+1.915*Math.sin(g)+0.020*Math.sin(2*g))*torad;
    beta=0.0;
    eps=(23.439-0.0000004*n)*torad;
    ra=Math.atan2(Math.cos(eps)*Math.sin(lamba),Math.cos(lamba));
    dec=Math.asin(Math.sin(eps)*Math.sin(lamba));
    if(ra<0){ra+=Math.PI*2;}
    return [ra/torad/15.0,dec/torad];
}

```

Then compute the Alt/Az position of those RA Dec coordinates for a given latitude and longitude:

```
//username_2 username_2 (gmiller@username_2.net) 2021
//Released as public domain
//http://www.celestialprogramming.com/

//All input and output angles are in radians, jd is Julian Date in UTC
function raDecToAltAz(ra,dec,lat,lon,jd_ut){
    //Meeus 13.5 and 13.6, modified so West longitudes are negative and 0 is North
    const gmst=greenwichMeanSiderealTime(jd_ut);
    let localSiderealTime=(gmst+lon)%(2*Math.PI);
    
        
    let H=(localSiderealTime - ra);
    if(H<0){H+=2*Math.PI;}
    if(H>Math.PI){H=H-2*Math.PI;}

    let az = (Math.atan2(Math.sin(H), Math.cos(H)*Math.sin(lat) - Math.tan(dec)*Math.cos(lat)));
    let a = (Math.asin(Math.sin(lat)*Math.sin(dec) + Math.cos(lat)*Math.cos(dec)*Math.cos(H)));
    az-=Math.PI;

    if(az<0){az+=2*Math.PI;}
    return [az,a, localSiderealTime,H];
}
    
function greenwichMeanSiderealTime(jd){
    //"Expressions for IAU 2000 precession quantities" N. Capitaine1,P.T.Wallace2, and J. Chapront
    const t = ((jd - 2451545.0)) / 36525.0;

    let gmst=this.earthRotationAngle(jd)+(0.014506 + 4612.156534*t + 1.3915817*t*t - 0.00000044 *t*t*t - 0.000029956*t*t*t*t - 0.0000000368*t*t*t*t*t)/60.0/60.0*Math.PI/180.0;  //eq 42
    gmst%=2*Math.PI;
    if(gmst<0) gmst+=2*Math.PI;

    return gmst;
}

function earthRotationAngle(jd){
    //IERS Technical Note No. 32

    const t = jd- 2451545.0;
    const f = jd%1.0;

    let theta = 2*Math.PI * (f + 0.7790572732640 + 0.00273781191135448 * t); //eq 14
    theta%=2*Math.PI;
    if(theta<0)theta+=2*Math.PI;

    return theta;

}

```

Example implementations are available:
[Sun Position](https://www.celestialprogramming.com/sunPosition-LowPrecisionFromAstronomicalAlmanac.html)
[RA/Dec to Alt/Az](https://www.celestialprogramming.com/convert_ra_dec_to_alt_az.html)

> **Comments:**
> **username_1**: I just checked that declination formula against Horizons. It's quite accurate for the present era. Here's the [Horizons data for this year](https://ssd.jpl.nasa.gov/api/horizons.api?format=text&MAKE_EPHEM=YES&COMMAND=10&EPHEM_TYPE=OBSERVER&CENTER=500%40399&QUANTITIES=1&REF_SYSTEM=ICRF&CAL_FORMAT=BOTH&TIME_DIGITS=MINUTES&ANG_FORMAT=DEG&APPARENT=AIRLESS&CSV_FORMAT=YES&OBJ_DATA=NO&START_TIME=2022-Jan-01&STOP_TIME=2023-Jan-01&STEP_SIZE=7d)  
> **username_0**: @username_2-username_2 sorry I mentioned altitude instead of latitude and used along (wrong phrasing), my bad.  
> **username_0**: @username_1 an observer on the equator with a 0 degree decline of Sun  will observe the 12 o'clock Sun at 0 degree N/S, also an observer at the tropic of cancer line will see the same or 23.45 degrees to south, the 12 o'clock Sun given on a specific day?  
> **username_1**: @username_0 The Sun has declination 0° on the equinoxes, for all observers. But its altitude angle (also known as the elevation) *does* depend on the observer's latitude. Please see https://en.wikipedia.org/wiki/Horizontal_coordinate_system  
> **username_0**: @username_1 in that case, should I amend the question or ask a different question about calculating "altitude angle" for observer's latitude on a given day of a year because the answer will become a little less relevant in that regard I presume?  
> **username_2**: This answer shows how to calculate both the declination and altitude angle.  It also computes the right ascension and azimuth angle.  

---

