GeodeticFrames.hpp

Go to the documentation of this file.
00001 #pragma ident "$Id: GeodeticFrames.hpp 2293 2010-02-12 18:14:16Z btolman $"
00002 
00003 //============================================================================
00004 //
00005 //  This file is part of GPSTk, the GPS Toolkit.
00006 //
00007 //  The GPSTk is free software; you can redistribute it and/or modify
00008 //  it under the terms of the GNU Lesser General Public License as published
00009 //  by the Free Software Foundation; either version 2.1 of the License, or
00010 //  any later version.
00011 //
00012 //  The GPSTk is distributed in the hope that it will be useful,
00013 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 //  GNU Lesser General Public License for more details.
00016 //
00017 //  You should have received a copy of the GNU Lesser General Public
00018 //  License along with GPSTk; if not, write to the Free Software Foundation,
00019 //  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00020 //  
00021 //  Copyright 2004, The University of Texas at Austin
00022 //
00023 //============================================================================
00024 
00025 //============================================================================
00026 //
00027 //This software developed by Applied Research Laboratories at the University of
00028 //Texas at Austin, under contract to an agency or agencies within the U.S. 
00029 //Department of Defense. The U.S. Government retains all rights to use,
00030 //duplicate, distribute, disclose, or release this software. 
00031 //
00032 //Pursuant to DoD Directive 523024 
00033 //
00034 // DISTRIBUTION STATEMENT A: This software has been approved for public 
00035 //                           release, distribution is unlimited.
00036 //
00037 //=============================================================================
00038 
00051 //------------------------------------------------------------------------------------
00052 #ifndef CLASS_GEODETICFRAMES_INCLUDE
00053 #define CLASS_GEODETICFRAMES_INCLUDE
00054 
00055 //------------------------------------------------------------------------------------
00056 // GPSTk includes
00057 #include "Exception.hpp"
00058 #include "DayTime.hpp"
00059 #include "Matrix.hpp"
00060 
00061 //------------------------------------------------------------------------------------
00062 namespace gpstk
00063 {
00064 
00228    class GeodeticFrames
00229    {
00230       //------------------------------------------------------------------------------
00231       // constants
00234       static const long JulianEpoch;
00235 
00236       //------------------------------------------------------------------------------
00237       // functions used internally
00238       //------------------------------------------------------------------------------
00243       static double CoordTransTime(DayTime t)
00244          throw();
00245 
00246       //------------------------------------------------------------------------------
00251       static double Omega(double T)
00252          throw();
00253 
00254       //------------------------------------------------------------------------------
00259       static double F(double T)
00260          throw();
00261 
00262       //------------------------------------------------------------------------------
00267       static double D(double T)
00268          throw();
00269 
00270       //------------------------------------------------------------------------------
00275       static double L(double T)
00276          throw();
00277 
00278       //------------------------------------------------------------------------------
00283       static double Lp(double T)
00284          throw();
00285 
00286       //------------------------------------------------------------------------------
00291       static double Obliquity(double T)
00292          throw();
00293 
00294       //------------------------------------------------------------------------------
00300       static void NutationAngles(double T,
00301                                  double& deps,
00302                                  double& dpsi)
00303          throw();
00304 
00305       //------------------------------------------------------------------------------
00312       static void UT1mUTCTidalCorrections(double T,
00313                                           double& UT1mUTR,
00314                                           double& dlodR,
00315                                           double& domegaR)
00316          throw();
00317 
00318       //------------------------------------------------------------------------------
00352       static double gast(DayTime t,
00353                          double om,
00354                          double eps,
00355                          double dpsi,
00356                          double UT1mUTC)
00357          throw();
00358 
00359       //------------------------------------------------------------------------------
00363       static Matrix<double> PrecessionMatrix(double T)
00364          throw(InvalidRequest);
00365 
00366       //------------------------------------------------------------------------------
00374       static Matrix<double> NutationMatrix(double eps,
00375                                            double dpsi,
00376                                            double deps)
00377          throw(InvalidRequest);
00378 
00379    public:
00380 
00381       //------------------------------------------------------------------------------
00382       // public functions
00383       //------------------------------------------------------------------------------
00391       static double GMST(DayTime t,
00392                          double UT1mUTC,
00393                          bool reduced=false)
00394          throw();
00395 
00396       //------------------------------------------------------------------------------
00404       static double GAST(DayTime t,
00405                          double UT1mUTC,
00406                          bool reduced=false)
00407          throw();
00408 
00409       //------------------------------------------------------------------------------
00415       static Matrix<double> PolarMotion(double xp,
00416                                         double yp)
00417          throw(InvalidRequest);
00418 
00419       //------------------------------------------------------------------------------
00427       static Matrix<double> PreciseEarthRotation(DayTime t,
00428                                                  double UT1mUTC,
00429                                                  bool reduced=false)
00430          throw(InvalidRequest);
00431 
00432       //------------------------------------------------------------------------------
00434       static Matrix<double> Precession(DayTime t)
00435          throw(InvalidRequest)
00436          { return PrecessionMatrix(CoordTransTime(t)); }
00437 
00438       //------------------------------------------------------------------------------
00442       static Matrix<double> Nutation(DayTime t)
00443          throw(InvalidRequest);
00444 
00445       //------------------------------------------------------------------------------
00458       static Matrix<double> ECEFtoInertial(DayTime t,
00459                                            double xp,
00460                                            double yp,
00461                                            double UT1mUTC,
00462                                            bool reduced=false)
00463          throw(InvalidRequest);
00464 
00465       //------------------------------------------------------------------------------
00470       static void ResolveRotation(const Matrix<double>& R,
00471                                   double& theta,
00472                                   double& phi,
00473                                   double& psi,
00474                                   double& alpha,
00475                                   Vector<double>& nhat)
00476          throw(InvalidRequest);
00477 
00478    }; // end class GeodeticFrames
00479 
00480 } // end namespace gpstk
00481 
00482 #endif  // nothing below this...

Generated on Tue May 22 03:30:58 2012 for GPS ToolKit Software Library by  doxygen 1.3.9.1