Changeset 360 in Sophya for trunk


Ignore:
Timestamp:
Aug 6, 1999, 5:05:47 PM (26 years ago)
Author:
ansari
Message:

auxilliary GPS

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Poubelle/archTOI.old/auxinterpgps.cc

    r359 r360  
    1313
    1414void AuxInterpGPS::FindElem(double mjd) {
    15   ilast = elems.lower_bound(elem(mjd,0,0,0));
    16   ilastok = (ilast != elems.end());
     15  ilast = elems.upper_bound(elem(mjd,0,0,0));
     16  ilastok = (ilast != elems.end() && ilast != elems.begin());
    1717}
    1818
     
    2020int AuxInterpGPS::getLocation(double mjd, double& lat, double& lon, double& alt) {
    2121  if (!ilastok ||
    22       (mjd <= (*ilast).mjd)) {
     22      (mjd > (*ilast).mjd)) {
    2323    FindElem(mjd);
    2424  } else {
    25     set<elem>::const_iterator i = ilast; i++;
    26     if (mjd > (*i).mjd) FindElem(mjd);
     25    set<elem>::const_iterator i = ilast; i--;
     26    if (mjd <= (*i).mjd) FindElem(mjd);
    2727  }
     28 
     29 
    2830
    2931  if (!ilastok) return -1;
    30   if (mjd <= (*ilast).mjd) return -1;
    31   set<elem>::const_iterator i = ilast; i++;
    32   if (mjd > (*i).mjd) return -1;
     32  double lastmjd = (*ilast).mjd;
     33  if (mjd > lastmjd) return -1;
     34  if (ilast == elems.begin()) return -1;
     35  set<elem>::const_iterator i = ilast; i--;
     36  double prevmjd = (*i).mjd;
     37  if (mjd < prevmjd) return -1;
    3338 
    34   double x = (mjd - (*ilast).mjd) / ((*i).mjd - (*ilast).mjd);
     39  double x = (mjd - prevmjd) / (lastmjd - prevmjd);
    3540 
    36   lat = (*ilast).lat*(1-x) + (*i).lat*x;
    37   lon = (*ilast).lon*(1-x) + (*i).lon*x;
    38   alt = (*ilast).alt*(1-x) + (*i).alt*x;
     41  lat = (*i).lat*(1-x) + (*ilast).lat*x;
     42  lon = (*i).lon*(1-x) + (*ilast).lon*x;
     43  alt = (*i).alt*(1-x) + (*ilast).alt*x;
    3944 
    4045  return 0;
Note: See TracChangeset for help on using the changeset viewer.