⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdp4.cpp

📁 卫星计算码
💻 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 + -