Principle of calculation for a sky map (in work):
This page describes all calculations which are done in Sideralis in order to display the stars , planets and Messier objects.
Description of steps:
1- Calculation of sideral hour
2- Calculation of precession
3- Modification of alpha and delta
3b- Calculation of Sun parameters
4- Calculation of height and azimuth
5- Projection on sky
Step1: Calculation of sideral hour.
Input:
h: hour (0-23)
d: day (1-31)
m: month (1-12)
y: year (>1583)
Output:
JJ: Julian day
Method:
If (m>2)
y = y and m = m
else
y = y-1 and m = m+12
A = Integer(y/100)
B = 2-A+Integer(A/4)
JJ = Integer(365.25*y) + Integer(30.6001(m+1)) + d + h/24 + 1720994.5 + B
Example:
Step2: Calculation of precession
Step3b: Calculation of sun parameters
Input:
JJ: Julian day
Output:
ThetaSun: Real longitude
Method:
T = (JJ-2415020.0)/36252
L = 279.69668 + 36000.76892*T + 0.0003025*T*T
M = 358.47583 + 35999.04975*T -0.000150*T*T - 0.0000033*T*T*T
Step5: Calculation of horizontal coordinate
Input:
HS: Sideral Hour
Lat, Long: Latitude and Longitude of user (in degree)
Alpha: Ascendance of the object
Delta: Declinaison of the object
Output:
Height: Height of object seen in the sky
Azimuth: Azimuth of object seen in the sky
Method:
Calculate hour angle: H
H = HS + Long/15 - Alpha
Convert H in radian
H = H *15
H = radian(H)
sinH = Math.sin(H);
cosH = Math.cos(H);
sinT = Math.sin(Lat/ 180.0 * Math.PI);
tanD = Math.tan(Delta / 180.0 * Math.PI);
cosT = Math.cos(Lat / 180.0 * Math.PI);
tanA = sinH/(cosH*sinT-tanD*cosT);
sinD = Math.sin(Delta / 180.0 * Math.PI);
cosD = Math.cos(Delta / 180.0 * Math.PI);
sinHau = sinT*sinD+cosT*cosD*cosH;
Height = MathFunctions.arcsin(sinHau);
Azimuth = MathFunctions.arctan(tanA,sinH>=0?true:false);
Azimuth += Math.PI/2; // to have North on top of the screen
... to be continued ...