CentralBody.h

Go to the documentation of this file.
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 ******************************************************************************/

Generated on Wed Aug 6 12:58:43 2003 for Open-Sessame Framework by doxygen1.3