00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef PS_EARTH_ORIENTATION
00017 #define PS_EARTH_ORIENTATION
00018
00019 #include "psCoord.h"
00020 #include "psTime.h"
00021 #include "psSphereOps.h"
00022
00023 typedef struct
00024 {
00025 double x;
00026 double y;
00027 double s;
00028 }
00029 psEarthPole;
00030
00031 typedef enum {
00032 PS_PRECESS_ROUGH,
00033 PS_PRECESS_COMPLETE,
00034 PS_PRECESS_IAU2000A,
00035 } psPrecessMethod;
00036
00037 psSphere *psAberration(
00038 psSphere *apparent,
00039 const psSphere *actual,
00040 const psSphere *direction,
00041 double speed
00042 );
00043
00044 psSphere *psGravityDeflection(
00045 psSphere *apparent,
00046 psSphere *actual,
00047 psSphere *sun
00048 );
00049
00050 double psEOC_ParallaxFactor(
00051 const psSphere *coords,
00052 const psTime *time
00053 );
00054
00055 psEarthPole *psEOC_PrecessionModel(
00056 const psTime *time
00057 );
00058
00059 psEarthPole *psEOC_PrecessionCorr(
00060 const psTime *time,
00061 psTimeBulletin bulletin
00062 );
00063
00064 psSphereRot *psSphereRot_CEOtoGCRS(
00065 const psEarthPole *pole
00066 );
00067
00068 psSphereRot *psSphereRot_TEOtoCEO(
00069 const psTime *time
00070 );
00071
00072 psEarthPole *psEOC_GetPolarMotion(
00073 const psTime *time,
00074 psTimeBulletin bulletin
00075 );
00076
00077 psEarthPole *psEOC_PolarTideCorr(
00078 const psTime *time
00079 );
00080
00081 psEarthPole *psEOC_NutationCorr(
00082 psTime *time
00083 );
00084
00085 psSphereRot *psSphereRot_ITRStoTEO(
00086 const psEarthPole *motion
00087 );
00088
00089 #endif // #ifndef PS_EARTH_ORIENTATION