- Timestamp:
- Apr 9, 2008, 12:24:17 PM (17 years ago)
- Location:
- trunk/BNS
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNS/bns.cpp
r801 r802 235 235 236 236 ColumnVector xB(4); 237 238 satellitePosition(GPSweeks, ep, xB(1), xB(2), xB(3), xB(4)); 237 ColumnVector vv(3); 238 239 satellitePosition(GPSweeks, ep, xB(1), xB(2), xB(3), xB(4), 240 vv(1), vv(2), vv(3)); 239 241 240 242 ColumnVector dx = xx - xB; -
trunk/BNS/bnsutils.cpp
r798 r802 97 97 //////////////////////////////////////////////////////////////////////////// 98 98 void 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) { 100 101 101 102 const static double omegaEarth = 7292115.1467e-11; … … 142 143 dt = ep->clock_bias + ep->clock_drift*tc + ep->clock_driftrate*tc*tc 143 144 - 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; 144 169 } -
trunk/BNS/bnsutils.h
r798 r802 18 18 19 19 void satellitePosition(double GPSweeks, const gpsEph* ep, 20 double& X, double& Y, double& Z, double& dt); 20 double& X, double& Y, double& Z, double&, 21 double& vX, double& vY, double& vZ); 21 22 #endif
Note:
See TracChangeset
for help on using the changeset viewer.