Changeset 10794 in ntrip for trunk/BNC/src


Ignore:
Timestamp:
Dec 4, 2025, 5:28:20 PM (8 days ago)
Author:
mervart
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/pppModel.cpp

    r10791 r10794  
    554554    // GPS Satellite unit Vectors sz, sy, sx
    555555    // -------------------------------------
    556     ColumnVector sHlp;
    557     if (!useYaw) {
    558       sHlp = t_astro::Sun(etime.mjddec());
    559     }
    560     else {
     556    ColumnVector xSun = t_astro::Sun(etime.mjddec());
     557    xSun /= xSun.NormFrobenius();
     558    ColumnVector sz = -rSat / rSat.NormFrobenius();
     559    ColumnVector sy = crossproduct(sz, xSun);
     560    ColumnVector sx = crossproduct(sy, sz);
     561   
     562    if (useYaw) {
    561563      ColumnVector Omega(3);
    562564      Omega[0] = 0.0;
    563565      Omega[1] = 0.0;
    564566      Omega[2] = t_CST::omega;
    565       sHlp = vSat + crossproduct(Omega, rSat);
    566     }
    567     sHlp /= sHlp.NormFrobenius();
    568 
    569     ColumnVector sz = -rSat / rSat.NormFrobenius();
    570     ColumnVector sy = crossproduct(sz, sHlp);
    571     ColumnVector sx = crossproduct(sy, sz);
    572 
    573     //// beg test
    574     // {
    575     //   ColumnVector sun = t_astro::Sun(etime.mjddec());
    576     //   sun /= sun.NormFrobenius();
    577     //   ColumnVector syHlp = crossproduct(sz, sun);
    578     //   double yawDef = acos( DotProduct(sy, syHlp));
    579     //   cout.setf(ios::fixed);
    580     //   cout << string(etime) << ' ' << prn.toString()
    581     //        << ' ' << setw(7) << setprecision(3) << yaw    * 180.0 / M_PI
    582     //        << ' ' << setw(7) << setprecision(3) << yawDef * 180.0 / M_PI << endl;
    583     // }
    584     //// end test
    585 
    586     // Yaw angle consideration (Rodrigues rotation formula)
    587     // ----------------------------------------------------
    588     if (useYaw) {
     567      ColumnVector vSatMod = vSat + crossproduct(Omega, rSat);
     568      vSatMod /= vSatMod.NormFrobenius();
     569      //// beg test
     570      double yawDef = acos( DotProduct(sx, vSatMod));
     571      cout.setf(ios::fixed);
     572      cout << string(etime) << ' ' << prn.system() << ' ' << prn.number() << ' '
     573           << ' ' << setw(7) << setprecision(3) << yaw    * 180.0 / M_PI
     574           << ' ' << setw(7) << setprecision(3) << yawDef * 180.0 / M_PI << endl;
     575      //// end test
     576      sy = crossproduct(sz, vSatMod);
     577      sx = crossproduct(sy, sz);
     578
     579      // Rodrigues rotation formula
     580      // --------------------------
    589581      double cosY = cos(yaw);
    590582      double sinY = sin(yaw);
     
    592584      sy = sy * cosY + crossproduct(sz, sy) * sinY; // + sz * DotProduct(sz, sy) * (1.0 - cosY);
    593585    }
    594    
     586
    595587    // Effective Dipole of the GPS Satellite Antenna
    596588    // ---------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.