mirror of https://github.com/XEphem/XEphem.git
89 lines
1.6 KiB
C
89 lines
1.6 KiB
C
#include <math.h>
|
|
|
|
#include "deepconst.h"
|
|
|
|
/* @(#) $Id: thetag.c,v 1.3 2000/10/07 05:12:17 ecdowney Exp $ */
|
|
|
|
|
|
/*
|
|
* FUNCTION THETAG(EP)
|
|
* COMMON /E1/XMO,XNODEO,OMEGAO,EO,XINCL,XNO,XNDT2O,XNDD6O,BSTAR,
|
|
* 1 X,Y,Z,XDOT,YDOT,ZDOT,EPOCH,DS50
|
|
* DOUBLE PRECISION EPOCH,D,THETA,TWOPI,YR,TEMP,EP,DS50
|
|
* TWOPI=6.28318530717959D0
|
|
* YR=(EP+2.D-7)*1.D-3
|
|
* JY=YR
|
|
* YR=JY
|
|
* D=EP-YR*1.D3
|
|
* IF(JY.LT.10) JY=JY+80
|
|
* N=(JY-69)/4
|
|
* IF(JY.LT.70) N=(JY-72)/4
|
|
* DS50=7305.D0 + 365.D0*(JY-70) +N + D
|
|
* THETA=1.72944494D0 + 6.3003880987D0*DS50
|
|
* TEMP=THETA/TWOPI
|
|
* I=TEMP
|
|
* TEMP=I
|
|
* THETAG=THETA-TEMP*TWOPI
|
|
* IF(THETAG.LT.0.D0) THETAG=THETAG+TWOPI
|
|
* RETURN
|
|
* END
|
|
*/
|
|
|
|
/* FUNCTION THETAG(EP) */
|
|
double
|
|
thetag(double EP, double *DS50)
|
|
{
|
|
int JY, N, I;
|
|
double YR, D, THETA, TEMP, THETAG;
|
|
|
|
YR = (EP + 2.0E-7) * 1.0E-3;
|
|
|
|
JY = (int) YR;
|
|
|
|
YR = JY;
|
|
|
|
D = EP - YR * 1.0E3;
|
|
|
|
if(JY < 10)
|
|
JY += 80;
|
|
|
|
N = (JY - 69) / 4;
|
|
|
|
if(JY < 70)
|
|
N = (JY - 72) / 4;
|
|
|
|
/* printf("N = %d\n", N); */
|
|
|
|
*DS50 = 7305.0 + 365.0 * (JY-70) + N + D;
|
|
|
|
/* printf("DS50 = %f\n", *DS50); */
|
|
|
|
THETA = 1.72944494 + 6.3003880987 * *DS50;
|
|
|
|
/* printf("THETA = %f\n", THETA); */
|
|
|
|
TEMP = THETA / TWOPI;
|
|
|
|
I = (int)TEMP;
|
|
TEMP = I;
|
|
|
|
THETAG = THETA - TEMP * TWOPI;
|
|
|
|
if(THETAG < 0.0)
|
|
THETAG += TWOPI;
|
|
|
|
return THETAG;
|
|
}
|
|
|
|
#if 0
|
|
void main(int argc, char **argv) {
|
|
double ds50, gwa;
|
|
|
|
if(argc >= 2) {
|
|
gwa = thetag(atof(argv[1]), &ds50);
|
|
printf("%f, %f\n", gwa, ds50);
|
|
}
|
|
}
|
|
#endif
|
|
|