00001 ////////////////////////////////////////////////////////////////////////////////////////////////// 00002 /*! \file OrbitFrameEQW.h 00003 * \brief Interface to the EQW Orbit Frame 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_EQW_H__ 00014 #define __SSF_ORBIT_FRAME_EQW_H__ 00015 #include "OrbitFrame.h" 00016 00017 /*! \brief Equinoctial Coordinate System 00018 * \ingroup OrbitFrames 00019 * 00020 * \detail Detailed Description 00021 */ 00022 class OrbitFrameEQW : public OrbitFrame 00023 { 00024 public: 00025 { 00026 /*! \brief Constructor 00027 * @param _LongAscNode Longitude of the Ascending Node (rad) 00028 * @param _Inclination Inclination (rad) 00029 */ 00030 OrbitFrameEQW(const double &_LongAscNode, const double &_Inclination); 00031 00032 /*! \brief Deconstructor */ 00033 virtual ~OrbitFrameEQW(); 00034 00035 /*! \brief Return the rotation \f$R^{IJK-SEZ}\f$ 00036 * \f${\bf r}_{IJK} = R_{3}\left(-\theta_{LST}\right)R_{2}\left(\theta_{LST}-\pi\right){\bf r}_{ECEF}\f$ 00037 * @return rotation from SEZ to IJK 00038 */ 00039 Rotation GetRotation2IJK() const; 00040 00041 /*! \brief Return the rotation \f$R^{ECEF-SEZ}\f$ 00042 * \f${\bf r}_{ECEF} = R_{2}\left(\pi-\theta_{LST}\right)R_{3}\left(\theta_{LST}\right){\bf r}_{IJK}\f$ 00043 * @return rotation from IJK to SEZ 00044 */ 00045 Rotation GetRotationFromIJK() const; 00046 00047 OrbitFrameEQW* NewPointer(); 00048 OrbitFrameEQW* Clone(); 00049 00050 protected: 00051 int m_fr; 00052 private: 00053 00054 }; 00055 inline OrbitFrameEQW::OrbitFrameEQW(const double &_LongAscNode, const double &_Inclination) 00056 { 00057 if(_Inclination>0 && _Inclination<=PI/2) {m_fr = 1;} 00058 else{m_fr = -1;} 00059 m_Transformation2IJK = R3(-m_fr*m_LongAscNode)*R1(-m_Inclination)*R3(m_LongAscNode); 00060 }; 00061 inline OrbitFrameEQW::~OrbitFrameEQW() {}; 00062 inline Rotation OrbitFrameEQW::GetRotation2IJK() const {return m_Transformation2IJK;}; 00063 inline Rotation OrbitFrameEQW::GetRotationFromIJK() const {return ~m_Transformation2IJK;}; 00064 00065 inline OrbitFrameEQW* OrbitFrameEQW::NewPointer() { return new OrbitFrameEQW(); } 00066 inline OrbitFrameEQW* OrbitFrameEQW::Clone() { return new OrbitFrameEQW(*this); } 00067 #endif 00068 00069 // Do not change the comments below - they will be added automatically by CVS 00070 /***************************************************************************** 00071 * $Log: OrbitFrameEQW.h,v $ 00072 * Revision 1.1.1.1 2005/04/26 17:40:59 cakinli 00073 * Adding OpenSESSAME to DSACSS distrib to capture fixed version. 00074 * 00075 * Revision 1.7 2003/05/20 17:47:59 nilspace 00076 * Updated comments. 00077 * 00078 * Revision 1.6 2003/04/29 20:17:39 nilspace 00079 * Added NewPointer() and Clone() functions. 00080 * 00081 * Revision 1.5 2003/04/29 18:45:31 nilspace 00082 * Moved all function definitions out of class interface definition. 00083 * 00084 * Revision 1.4 2003/04/24 20:05:55 nilspace 00085 * Made GetRotation functions const. 00086 * 00087 * Revision 1.3 2003/04/23 16:26:05 nilspace 00088 * Updated directory structure & default parameters. 00089 * 00090 * Revision 1.2 2003/04/22 17:37:25 nilspace 00091 * Added reference frames. 00092 * 00093 * Revision 1.1 2003/04/08 22:48:03 nilspace 00094 * Initial Submission. 00095 * 00096 * 00097 ******************************************************************************/