00001 00002 00008 /* \todo Add reference counter to ensure deletion when not used anymore. 00009 * \todo finish implementation of the abstract and concrete central bodies. 00010 */ 00012 00013 #ifndef __O_SESSAME_CENTRALBODY_H__ 00014 #define __O_SESSAME_CENTRALBODY_H__ 00015 00016 #include "Rotation.h" 00017 #include "Matrix.h" 00018 #include "OrbitState.h" 00019 #include "Time.h" 00020 #include "Models/MagneticModel.h" 00021 00022 namespace O_SESSAME { 00023 00034 class CentralBody 00035 { 00036 public: 00038 virtual ~CentralBody() {}; 00039 00040 00041 // MAGNETIC MODEL 00042 void SetMagneticModel(MagneticModel* _pNewMagModel); 00043 00044 00045 // PHYSICAL PARAMETERS 00046 virtual inline double GetAvgRotationRate(); 00047 virtual inline double GetRadius(); 00048 virtual inline double GetGravitationalParameter() { return m_GravitationalParameter; } 00049 00051 Vector GetVector2Body(CentralBody*) const; 00052 00054 Vector GetVector2Body(const OrbitState& _satOrbitState) const; 00055 00056 00058 CentralBody* operator= (CentralBody*); 00059 00061 void ReleaseReference(); 00062 00063 protected: 00065 CentralBody(); 00066 00068 void GetReference(); 00069 00070 00071 double m_Radius; 00072 double m_Mass; 00073 double m_GravitationalParameter; 00075 double m_AtmHeight; 00076 double m_AvgRotationRate; 00077 Vector m_GravitationalFieldConstants; 00078 00079 int m_ReferenceCount; 00080 MagneticModel* m_pMagneticFieldModel; 00081 MagneticFieldCoefficients m_MagFieldCoeffs; 00082 }; 00083 } // close namespace O_SESSAME 00084 00092 #endif 00093 // Do not change the comments below - they will be added automatically by CVS 00094 /***************************************************************************** 00095 * $Log: CentralBody.h,v $ 00096 * Revision 1.3 2003/06/12 17:57:41 nilspace 00097 * Added magnetic models. 00098 * 00099 * Revision 1.2 2003/06/09 15:20:39 nilspace 00100 * Changed CentralBody directory. 00101 * 00102 * Revision 1.1 2003/06/06 17:34:53 nilspace 00103 * Moved to CentralBody directory. 00104 * 00105 * Revision 1.7 2003/05/20 17:51:12 nilspace 00106 * Updated comments. 00107 * 00108 * Revision 1.6 2003/05/13 18:59:16 nilspace 00109 * Fixed some comments. 00110 * 00111 * Revision 1.5 2003/05/05 20:45:46 nilspace 00112 * Changed the pass-by-address parameters to pass-by-reference. 00113 * 00114 * Revision 1.4 2003/05/02 16:16:28 nilspace 00115 * Documented the API. 00116 * 00117 * Revision 1.3 2003/04/27 22:04:33 nilspace 00118 * Created the namespace O_SESSAME. 00119 * 00120 * Revision 1.2 2003/04/23 16:29:47 nilspace 00121 * Updated makefile directories. 00122 * 00123 * Revision 1.1 2003/04/08 22:35:11 nilspace 00124 * Initial Submission. 00125 * 00126 ******************************************************************************/