?? sdp4.cpp
字號:
#include <math.h>
#include "norad.h"
#include "norad_in.h"
#define x3thm1 params[0]
#define x1mth2 params[1]
#define c1 params[2]
#define c4 params[3]
#define xnodcf params[4]
#define t2cof params[5]
#define xlcof params[6]
#define aycof params[7]
#define x7thm1 params[8]
#define deep_arg ((deep_arg_t *)( params + 9))
void DLL_FUNC SDP4_init( double *params, const tle_t *tle)
{
init_t init;
sxpx_common_init( params, tle, &init, deep_arg);
deep_arg->sing = sin(tle->omegao);
deep_arg->cosg = cos(tle->omegao);
/* initialize Deep() */
Deep_dpinit( tle, deep_arg);
#ifdef RETAIN_PERTURBATION_VALUES_AT_EPOCH
/* initialize lunisolar perturbations: */
deep_arg->t = 0.; /* added 30 Dec 2003 */
deep_arg->solar_lunar_init_flag = 1;
Deep_dpper( deep_arg);
deep_arg->solar_lunar_init_flag = 0;
#endif
} /*End of SDP4() initialization */
void DLL_FUNC SDP4( const double tsince, const tle_t *tle, const double *params,
double *pos, double *vel)
{
double
a, tempa, tempe, templ, tsq,
xl, xmam, xmdf, xnoddf;
/* Update for secular gravity and atmospheric drag */
xmdf = tle->xmo+deep_arg->xmdot*tsince;
deep_arg->omgadf = tle->omegao+deep_arg->omgdot*tsince;
xnoddf = tle->xnodeo+deep_arg->xnodot*tsince;
tsq = tsince*tsince;
deep_arg->xnode = xnoddf+xnodcf*tsq;
tempa = 1-c1*tsince;
tempe = tle->bstar*c4*tsince;
templ = t2cof*tsq;
deep_arg->xn = deep_arg->xnodp;
/* Update for deep-space secular effects */
deep_arg->xll = xmdf;
deep_arg->t = tsince;
Deep_dpsec( tle, deep_arg);
xmdf = deep_arg->xll;
a = pow(xke/deep_arg->xn,two_thirds)*tempa*tempa;
deep_arg->em = deep_arg->em-tempe;
xmam = xmdf+deep_arg->xnodp*templ;
/* Update for deep-space periodic effects */
deep_arg->xll = xmam;
Deep_dpper( deep_arg);
xmam = deep_arg->xll;
xl = xmam + deep_arg->omgadf + deep_arg->xnode;
sxpx_posn_vel( deep_arg->xnode, a, deep_arg->em, params, deep_arg->cosio,
deep_arg->sinio, deep_arg->xinc, deep_arg->omgadf,
xl, pos, vel);
} /* SDP4 */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -