source: Sophya/trunk/SophyaExt/XAstroPack/xastropack.h@ 1678

Last change on this file since 1678 was 1678, checked in by cmv, 24 years ago

EqHToHor et reverse cmv 9/10/01

File size: 3.8 KB
RevLine 
[1456]1#ifndef XASTROPACK_H
2#define XASTROPACK_H
3
[1475]4#include "machdefs.h"
[1456]5#include <string.h>
6#include <string>
7
8#ifdef __cplusplus
9extern "C" { /* extern "C" */
10#endif
11#include "XAstro/P_.h"
12#include "XAstro/astro.h"
13#ifdef __cplusplus
14} /* extern "C" */
15#endif
16
[1515]17enum TypAstroCoord {
18 TypCoordUndef = (unsigned long) (0),
19
20 // Pour indiquer que les coordonnees sont en (heure=[0,24[,degre=[-90,90])
21 TypCoordHD = (unsigned long) (1 << 20),
22 // Pour indiquer que les coordonnees sont en (degre=[0,360[,degre=[-90,90])
23 TypCoordDD = (unsigned long) (1 << 21),
24 // Pour indiquer que les coordonnees sont en (radian=[0,2Pi[,radian=[-Pi/2,Pi/2])
25 TypCoordRR = (unsigned long) (1 << 22),
26
27 // Coordonnees Equatoriales alpha,delta
28 TypCoordEq = (unsigned long) (1 << 0),
29 TypCoordEqStd = (unsigned long) ((1 << 0) | (1 << 20)),
30 // Coordonnees Galactiques gLong, gLat
31 TypCoordGal = (unsigned long) (1 << 1),
32 TypCoordGalStd = (unsigned long) ((1 << 1) | (1 << 21)),
33 // Coordonnees Horizontales azimuth,altitude
34 TypCoordHor = (unsigned long) (1 << 2),
35 TypCoordHorStd = (unsigned long) ((1 << 2) | (1 << 21)),
36 // Coordonnees Ecliptiques EclLong,EclLat
37 TypCoordEcl = (unsigned long) (1 << 3),
38 TypCoordEclStd = (unsigned long) ((1 << 3) | (1 << 21))
39};
40
[1465]41double TrueJDfrMJD(double mjd);
42double MJDfrTrueJD(double jd);
[1456]43double MJDfrDate(double dy,int mn,int yr);
44void DatefrMJD(double mjd,double *dy,int *mn,int *yr);
45double YearfrMJD(double mjd);
46double MJDfrYear(double yr);
47void YDfrMJD(double mjd,double *dy,int *yr);
[1678]48int IsLeapYear(int y);
49int DayOrder(double mjd,int *dow);
50int DaysInMonth(double mjd);
51double MJDat0hFrMJD(double mjd);
52double HfrMJD(double mjd);
[1456]53double GSTfrUTC(double mjd0,double utc);
54double UTCfrGST(double mjd0,double gst);
55double GST0(double mjd0);
[1678]56double LSTfrGST(double gst,double geolng);
57double LSTfrMJD(double mjd,double geolng);
[1456]58void Precess(double mjd1,double mjd2,double ra1,double dec1,double *ra2,double *dec2);
59double AirmassfrAlt(double alt);
[1678]60double HafrRaTS(double lst,double ra);
61double RafrHaTS(double lst,double ha);
62double HelioCorr(double jd,double ra,double dec);
[1465]63void HMSfrHdec(double hd,int *h,int *mn,double *s);
64double HdecfrHMS(int h,int mn,double s);
[1456]65string ToStringHMS(int h,int mn,double s);
66string ToStringHdec(double hd);
67void EqtoGal(double mjd,double ra,double dec,double *glng,double *glat);
68void GaltoEq(double mjd,double glng,double glat,double *ra,double *dec);
[1678]69void EqHtoHor(double geolat,double ha,double dec,double *az,double *alt);
70void HortoEqH(double geolat,double az,double alt,double *ha,double *dec);
71void EqtoHor(double geolat,double lst,double ra,double dec,double *az,double *alt);
72void HortoEq(double geolat,double lst,double az,double alt,double *ra,double *dec);
[1456]73void EqtoEcl(double mjd,double ra,double dec,double *eclng,double *eclat);
74void EcltoEq(double mjd,double eclng,double eclat,double *ra,double *dec);
75void SunPos(double mjd,double *lsn,double *bsn);
76void MoonPos(double mjd,double *lmn,double *bmn);
77void PlanetPos(double mjd,int numplan,double *ecl,double *ecb,double *diamang);
78void JupiterPos(double mjd,double *ecl,double *ecb,double *diamang);
79void SaturnPos(double mjd,double *ecl,double *ecb,double *diamang);
[1515]80int CoordConvertToStd(TypAstroCoord typ,double& coord1,double& coord2);
[1456]81
[1678]82/*!
83\brief Pour remettre la valeur "val" dans la dynamique [0.,range[.
84 Si "vmax" different de "range", c'est la borne superieure
85 qui peut etre atteinte
86 (si elle est depassee, on soustrait "range").
87\verbatim
88 r>0 vmax>0
89 r=24. vmax=24. -> mets dans [ 0,+24[ borne sup exclue
90 r=24. vmax=12. -> mets dans ]-12,+12] borne inf exclue
91\endverbatim
92*/
93inline void InRange(double *val,double range)
94 {*val-=range*floor(*val/range);}
95inline void InRange(double *val,double range,double vmax)
96 {InRange(val,range); if(*val>vmax) *val-=range;}
97
[1456]98#endif
Note: See TracBrowser for help on using the repository browser.