= = = = = = = = = = = = = 
 A  S  T  R  O  L  I  B
= = = = = = = = = = = = =

 

          

'  -  
	double JDGreekEaster(double year)
	double YYMMDD2JD(double year, double month, double day)
	void JD2YYMMDD(double JD, double* year, double* month, double* day)
	int FindDayOfTheWeek(double JD)
	double HHMMSS2DecHour(double hour, double minute, double second)
	double DecHour2HHMMSS(double DecHour, double* minute, double* second)
	double DDDecHour2DecDay(double day, double hour)
	double DecDay2DDDecHour(double DecDay, double* day, double* hour)
	double LT2UTC(double TZ,double hour)
	double UTC2LT(double TZ, double hour)
	double UTC2GST(double JD)
	double GST2UTC(double JD, double GST)
	double GST2LST(double Longitude, double GST)
	double LST2GST(double Longitude, double LST)

'  -   
	void SystemTransform(double phi,double lamda, double* theta, double* psi, double[3][3] A)
	void PrecessionTransform(double ,double ,int ,double[] ,double[] ,double[] ,double[] )
	void radec2azalt(double LST, double latitude,int n,double ra[],double dec[],double az[],double alt[])
	void azalt2radec(double LST, double latitude,int n,double az[],double alt[],double ra[],double dec[])
	double obliquity(double JD)
	void radec2lamdabeta(double obliquity,int n,double ra[],double dec[],double lamda[],double beta[])
	void lamdabeta2radec(double obliquity,int n,double lamda[],double beta[],double ra[],double dec[])
	void radec2galactic(int n,double ra[],double dec[],double lamda[],double beta[])
	void galactic2radec(int n,double lamda[],double beta[],double ra[],double dec[])
	void Transform_radec_nutationANDaberration(char flags,double JD,int n,double ra1[],double dec1[],double ra2[],double dec2[])
	void Transform_lamdabeta2radec_nutationANDaberration(char flags,double JD,int n,double lamda[],double beta[],double ra[],double dec[])
	double refraction(double  P, double T, double alt)
	void GeocentricParalax(double LST, double latitude, double height, double distance, int n,double ra1[],double dec1[],double ra2[],double dec2[])
	double JD_from_light_travel_delay(double JD,double distance)

'  -  
	double sun_longitude(double JD)
	double sun_distance(double sun_longitude) 
	double sun_angular_size(double sun_longitude)
	void calculateMoon(double JD,double Results[6])


'  -  
=============================

double JDGreekEaster(double year)
-------------------------------
  JD     ,  
 (year).

double YYMMDD2JD(double year, double month, double day)
-----------------------------------------------------------------------
    Julian Date (JD)  
   (year)   (month)   .
        
      (..   2.25 
 2    ,  06:00 ).


void JD2YYMMDD(double JD, double* year, double* month, double* day)
---------------------------------------------------------------------------------
   , ,     JD 
.    , ,  (  )
     ,    
 .. 
JD2YYMMDD(2446113.75,&year,&month,&day)
 year,month,day   double.


int FindDayOfTheWeek(double JD)
-------------------------------
     0  6    JD.
0=, 6=,  !


double HHMMSS2DecHour(double hour, double minute, double second)
------------------------------------------------------------------------
 , ,        -
    .


double DecHour2HHMMSS(double DecHour, double* minute, double* second)
----------------------------------------------------------------------------------------
       , , .  
  ()        .


double DDDecHour2DecDay(double day, double hour)
--------------------------------------------------------------
  ,        
..     JD.


double DecDay2DDDecHour(double DecDay, double* day, double* hour)
------------------------------------------------------------------------------------
            . 
    ()       
  .


double LT2UTC(double TZ,double hour)
--------------------------------------
  UTC      (LT)     (TZ).
    TZ  ,    
     .    
     (DST).  ,  
      24.000.   
 ,       24.000.


double UTC2LT(double TZ, double hour)
--------------------------------------
    (LT)    UTC     (TZ).
      LT2UTC.  ,  
      24.000.   
 ,       24.000.


double UTC2GST(double JD)
--------------------------
  UTC  GST (Greenwich Sidereal Time)   JD.
 JD        
   UTC   .   
  GST   . 
       UT=UTC=GMT.


double GST2UTC(double JD, double GST)
--------------------------------------
    UTC2GST,   GST  UTC
   JD.  JD       
    00:00UT (..    
YYMMDD2JD),      JD  
0.5.    UTC   GST   
     4      
    UTC,   GST  .  
    4  .    
 UTC.


double GST2LST(double Longitude, double GST)
---------------------------------------------
  GST   LST     .
   ( Longitude)   
   (radians).  GST    
.      LST   .


double LST2GST(double Longitude, double LST)
---------------------------------------------
  LST  GST     .
      GST2LST.  
   GST   .





'  -   
======================================

void SystemTransform(double phi,double lamda, double* theta, double* psi, double[3][3] A)
-------------------------------------------------------------------------
    . (phi,lamda)->(theta,psi)
 phi  theta   (  ..    
 )  lamda, psi .     
  (radians).     
 (,)    x=(i,j,k).    
    A[3x3].   .  y=(x,y,z) 
 : y'=[A].x'  x',y'   .   y 
    (theta,psi).    theta, psi
 '.


void PrecessionTransform(double JD1,double JD2,int n,double[] ra1,double[] dec1,double[] ra2,double[] dec2)
-------------------------------------------------------------------------------------------
    , (ra,dec -    ),
        .    
  JD2000.0.       JD1<>JD2000.0,  
  JD1 (.. 2433282.500  JD1950.0),    JD2000.0 (=2451545.000).
          JD2.
    n   ra1, dec1,
(ra1[n],dec1[n])->(ra2[n],dec2[n]).         
 ,    ra2,dec2    .
 n<1    n=1.  n=1     
double    operator &,  n>1     
ra1[] ,   brackets .     ra1,ra2  dec1,dec2 
       .


void radec2azalt(double LST, double latitude,int n,double ra[],double dec[],double az[],double alt[])
-------------------------------------------------------------------------------------------
 n    (,)   (z,alt),
       LST.  LST   (latitude),
      (radians).   
  (radians).        
  .

void azalt2radec(double LST, double latitude,int n,double az[],double alt[],double ra[],double dec[])
-------------------------------------------------------------------------------------------
    radec2azalt.    .

double obliquity(double JD)
----------------------------
           JD.
        (radians).

void radec2lamdabeta(double obliquity,int n,double ra[],double dec[],double lamda[],double beta[])
--------------------------------------------------------------------------------------------------
 n    (,)   (l,),
         (obliquity).
  ,   .   
      /.

void lamdabeta2radec(double obliquity,int n,double lamda[],double beta[],double ra[],double dec[])
--------------------------------------------------------------------------------------------------
    radec2lamdabeta.      .

void radec2galactic(int n,double ra[],double dec[],double lamda[],double beta[])
---------------------------------------------------------------------------------
 n   (,)   (l,b).

void galactic2radec(int n,double lamda[],double beta[],double ra[],double dec[])
---------------------------------------------------------------------------------
    .

void Transform_radec_nutationANDaberration(char flags,double JD,int n,double ra1[],double dec1[],double ra2[],double dec2[])
--------------------------------------------------------------------------------------------------
        
      ,    JD.
    (1,1)->(2,2),   ,  
    .   flags  
 bit: 0010(H02)   , 0100(04)  
.      +   flags 
  0110 =(0010AND0100).
          1984, 
            
    (1950.0-2050.0).      
       .    -
  (,),    (l,)     
 (,).
          , 
  .         
 .      dl  d.   
  (l,) ( ,).

void Transform_lamdabeta2radec_nutationANDaberration(char flags,double JD,int n,double lamda[],double beta[],double ra[],double dec[])
--------------------------------------------------------------------------------------------------
       (radec->radec),   
    (,)->(l,)     
 (,)     (,).      .

double refraction(double  P, double T, double alt)
---------------------------------------------------
        ,
    P (mbars),     T (deg Celsius),
    alt  radians.
 ar   ,     alt=ar+refraction.
  ,      :
ar=alt-refraction.

void GeocentricParalax(double LST, double latitude, double height, double distance, int n,double ra1[],double dec1[],double ra2[],double dec2[])
-----------------------------------------------------------------------------------------------
 n  (,) -> (2,2),   
  .      
   ro=6378km.  LST   ,  
 (latitude)  ,   (height)     
      distance   (km).  
distance      
     (..     ).

double JD_from_light_travel_delay(double JD,double distance)
-------------------------------------------------------------
     .   
 3e5km/s,         500 
    .       JD  
      500 .   JD.  
    (     
    ),      
       ,    JD.
         
  JD,         
JD       JD    
   .


'  -  
==============================

double sun_longitude(double JD)
-------------------------------
         JD.
     (Vernal Equinox).   
       Epoch 1990 (1990, Jan0.0
JD=2447891.5).    ,  
    Kepler.     
     , ,
,  .

double sun_distance(double sun_longitude) 
------------------------------------------
   - '  km,      
  .

double sun_angular_size(double sun_longitude)
----------------------------------------------
     '  radians,   
      .

void calculateMoon(double JD,double Results[6])
------------------------------------------------
    . :  JD
(        
  ).
   Results[6],     :
Results[0]:      (m)  
Results[1]:      (m)  
Results[2]:    -   km
Results[3]:        
Results[4]:       (x29.5306/2  )
Results[5]:       ( 0:   ->
			1: ).


(c) 2003,  .  - Stefanos S. Kozanis
http://users.ntua.gr/soulman/  
http://users.ntua.gr/soulman/astrolib/ (astrolib)
   : S.Kozanis@mail.ntua.gr
