00001 ////////////////////////////////////////////////////////////////////////////////////////////////// 00002 /*! \file OrbitFramePQW.h 00003 * \brief Interface to the Perifocal Satellite Coordinate System Class. 00004 * \author $Author: cakinli $ 00005 * \version $Revision: 1.1.1.1 $ 00006 * \date $Date: 2005/04/26 17:40:59 $ 00007 *////////////////////////////////////////////////////////////////////////////////////////////////// 00008 /* 00009 * 00010 */ 00011 ////////////////////////////////////////////////////////////////////////////////////////////////// 00012 00013 #ifndef __SSF_ORBIT_FRAME_PQW_H__ 00014 #define __SSF_ORBIT_FRAME_PQW_H__ 00015 #include "OrbitFrame.h" 00016 00017 /*! \brief Satellite Radial Coordinate System 00018 * \ingroup OrbitFrames 00019 * 00020 * \detail The fundamental plane is the satellite's orbit, and the origin is at the 00021 * center of the Earth. The P axis points towards perigee, and the Q axis is \f$90^{\circ}\f$ 00022 * from the P axis in the direction of satellite motion. The W axis is then normal to the orbit. 00023 * The PQW system always maintains an orientation towards perigee and is therefore best 00024 * suited for robits with a well-defined eccentricity. (Vallado, pg 41) 00025 * 00026 */ 00027 class OrbitFramePQW : public OrbitFrame 00028 { 00029 /*! \brief Constructor 00030 * @param _LongAscNode Longitude of the Ascending Node (rad) 00031 * @param _Inclination Inclination (rad) 00032 * @param _ArgPerigee Argument of Perigee (rad) 00033 */ 00034 OrbitFramePQW(const double &_LongAscNode, const double &_Inclination, const double &_ArgPerigee); 00035 00036 /*! \brief Deconstructor */ 00037 virtual ~OrbitFramePQW(); 00038 /*! \brief Return the rotation \f$R^{PQW-IJK}\f$ 00039 * \f${\bf r}_{IJK} = R_{3}\left(-\Omega\right)R_{1}\left(-i\right)R_{3}\left(-\omega\right){\bf r}_{ECEF}\f$ 00040 * @return rotation from PQW to IJK 00041 */ 00042 Rotation GetRotation2IJK() const; 00043 00044 /*! \brief Return the rotation \f$R^{IJK-PQW}\f$ 00045 * \f${\bf r}_{ECEF} = R_{3}\left(\omega\right)R_{1}\left(i\right)R_{3}\left(\Omega\right){\bf r}_{IJK}\f$ 00046 * @return rotation from IJK to PQW 00047 */ 00048 Rotation GetRotationFromIJK() const; 00049 00050 OrbitFramePQW* NewPointer(); 00051 OrbitFramePQW* Clone(); 00052 protected: 00053 00054 private: 00055 00056 }; 00057 inline OrbitFramePQW::OrbitFramePQW(const double &_LongAscNode, const double &_Inclination, const double &_ArgPerigee): OrbitFrame(R3(-_LongAscNode)*R1(-_Inclination)*R3(-_ArgPerigee)) {}; 00058 inline OrbitFramePQW::~OrbitFramePQW() {}; 00059 00060 inline Rotation OrbitFramePQW::GetRotation2IJK() const {return m_Transformation2IJK;}; 00061 inline Rotation OrbitFramePQW::GetRotationFromIJK() const {return ~m_Transformation2IJK;}; 00062 inline OrbitFramePQW* OrbitFrameIJK::NewPointer() { return new OrbitFramePQW(); } 00063 inline OrbitFramePQW* OrbitFrameIJK::Clone() { return new OrbitFramePQW(*this); } 00064 00065 #endif 00066 00067 // Do not change the comments below - they will be added automatically by CVS 00068 /***************************************************************************** 00069 * $Log: OrbitFramePQW.h,v $ 00070 * Revision 1.1.1.1 2005/04/26 17:40:59 cakinli 00071 * Adding OpenSESSAME to DSACSS distrib to capture fixed version. 00072 * 00073 * Revision 1.8 2003/05/21 03:51:38 nilspace 00074 * Fixed spelling of "the" in comments. 00075 * 00076 * Revision 1.7 2003/05/20 17:47:59 nilspace 00077 * Updated comments. 00078 * 00079 * Revision 1.6 2003/04/29 20:17:40 nilspace 00080 * Added NewPointer() and Clone() functions. 00081 * 00082 * Revision 1.5 2003/04/29 18:45:35 nilspace 00083 * Moved all function definitions out of class interface definition. 00084 * 00085 * Revision 1.4 2003/04/24 20:05:55 nilspace 00086 * Made GetRotation functions const. 00087 * 00088 * Revision 1.3 2003/04/23 16:26:06 nilspace 00089 * Updated directory structure & default parameters. 00090 * 00091 * Revision 1.2 2003/04/22 17:37:25 nilspace 00092 * Added reference frames. 00093 * 00094 * Revision 1.1 2003/04/08 22:48:04 nilspace 00095 * Initial Submission. 00096 * 00097 * 00098 ******************************************************************************/