Changeset 802 in ntrip for trunk/BNS/bnsutils.cpp


Ignore:
Timestamp:
Apr 9, 2008, 12:24:17 PM (16 years ago)
Author:
mervart
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNS/bnsutils.cpp

    r798 r802  
    9797////////////////////////////////////////////////////////////////////////////
    9898void satellitePosition(double GPSweeks, const gpsEph* ep,
    99                        double& X, double& Y, double& Z, double& dt) {
     99                       double& X, double& Y, double& Z, double& dt,
     100                       double& vX, double& vY, double& vZ) {
    100101
    101102  const static double omegaEarth = 7292115.1467e-11;
     
    142143  dt = ep->clock_bias + ep->clock_drift*tc + ep->clock_driftrate*tc*tc
    143144       - 4.442807633e-10 * ep->e * sqrt(a0) *sin(E);
     145
     146  // Velocity
     147  // --------
     148  double tanv2 = tan(v/2);
     149  double dEdM  = 1 / (1 - ep->e*cos(E));
     150  double dotv  = sqrt((1.0 + ep->e)/(1.0 - ep->e)) / cos(E/2)/cos(E/2) / (1 + tanv2*tanv2)
     151               * dEdM * n;
     152  double dotu  = dotv + (-ep->Cuc*sin2u0 + ep->Cus*cos2u0)*2*dotv;
     153  double dotom = ep->OMEGADOT - omegaEarth;
     154  double doti  = ep->IDOT + (-ep->Cic*sin2u0 + ep->Cis*cos2u0)*2*dotv;
     155  double dotr  = a0 * ep->e*sin(E) * dEdM * n
     156                + (-ep->Crc*sin2u0 + ep->Crs*cos2u0)*2*dotv;
     157  double dotx  = dotr*cos(u) - r*sin(u)*dotu;
     158  double doty  = dotr*sin(u) + r*cos(u)*dotu;
     159
     160  vX  = cosom   *dotx  - cosi*sinom   *doty      // dX / dr
     161      - xp*sinom*dotom - yp*cosi*cosom*dotom     // dX / dOMEGA
     162                       + yp*sini*sinom*doti;     // dX / di
     163
     164  vY  = sinom   *dotx  + cosi*cosom   *doty
     165      + xp*cosom*dotom - yp*cosi*sinom*dotom
     166                       - yp*sini*cosom*doti;
     167
     168  vZ  = sini    *doty  + yp*cosi      *doti;
    144169}
Note: See TracChangeset for help on using the changeset viewer.