00001 00002 00008 /* 00009 * 00010 */ 00012 00013 #ifndef __SSF_ORBIT_STATE_H__ 00014 #define __SSF_ORBIT_STATE_H__ 00015 00016 #include "orbitframes/OrbitFrame.h" 00017 #include "orbitstaterep/OrbitStateRepresentation.h" 00018 00019 namespace O_SESSAME { 00020 00047 class OrbitState 00048 { 00049 public: 00051 OrbitState(); 00053 virtual ~OrbitState(); 00055 OrbitState(const OrbitState &_OrbStateCopy); 00056 00061 OrbitState(OrbitStateRepresentation* _pOrbRep, OrbitFrame* _pOrbFrame = NULL); 00062 00069 void SetOrbitFrame(OrbitFrame* _pnewOrbitFrame); 00070 00074 OrbitFrame* GetOrbitFrame() const; 00075 00079 void SetStateRepresentation(OrbitStateRepresentation* _pStateRep); 00080 00085 void SetStateRepresentation(OrbitStateRepresentation* _pStateRep, OrbitFrame* _pOrbFrame); 00086 00090 OrbitStateRepresentation* GetStateRepresentation() const; 00091 00097 double GetOrbitAngularMomentum() const; 00098 00103 void SetState(const Vector& _state); 00104 00110 void SetState(const Vector& _state, OrbitFrame* _pOrbFrame); 00111 00116 Vector GetState() const; 00117 00122 OrbitState operator= (const OrbitState& _OrbStateCopy); 00123 private: 00125 OrbitStateRepresentation* m_pOrbitStateRepresentation; 00127 OrbitFrame* m_pOrbitFrame; 00128 }; 00129 00130 /* Possibility of turning into a template class 00131 OrbitState<PositionVelocity, OrbFrameIJK> initialOrbit1; 00132 OrbitState<Keplerian, OrbFrameSEZ> initialOrbit1.ChangeType(); 00133 vs. 00134 OrbitState initOrb1(POSITION_VELOCITY, ORBFRAME_IJK); 00135 initOrb1.ChangeType(KEPLERIAN); 00136 initOrb1.GetKeplerianElements(); 00137 00138 template <TOrbRep, TOrbFrame> 00139 class OrbitState 00140 { 00141 public: 00142 OrbitState(); 00143 virtual ~OrbitState(); 00144 OrbitState(const Vector& _State); 00145 00146 // void SetOrbitFrame(const TOrbFrame &_newOrbitFrame); 00147 const TOrbFrame& GetOrbitFrame() const; 00148 00149 // void SetStateRepresentation(const TOrbRep &_StateRep); 00150 // void SetStateRepresentation(const TOrbRep &_StateRep, const TOrbFrame &_orbFrame); 00151 const TOrbRep& GetStateRepresentation() const; 00152 00153 void SetState(const Vector &_state); 00154 const Vector& GetState() const; 00155 00156 private: 00157 TOrbRep m_OrbitStateRepresentation; 00158 TOrbFrame m_OrbitFrame; 00159 00160 }; 00161 */ 00162 } // close namespace O_SESSAME 00163 00164 #endif 00165 00166 // Do not change the comments below - they will be added automatically by CVS 00167 /***************************************************************************** 00168 * $Log: OrbitState.h,v $ 00169 * Revision 1.9 2003/06/12 23:08:20 nilspace 00170 * Fixed to calculate angular momentum. 00171 * 00172 * Revision 1.8 2003/06/12 18:02:15 nilspace 00173 * Added GetAngularVelocity() function. 00174 * 00175 * Revision 1.7 2003/05/22 14:33:58 nilspace 00176 * Added NULL default value to constructor. 00177 * 00178 * Revision 1.6 2003/05/13 18:46:29 nilspace 00179 * Checked pointers if they were initialized before calling. 00180 * 00181 * Revision 1.5 2003/05/02 16:16:46 nilspace 00182 * Documented the API. 00183 * 00184 * Revision 1.4 2003/04/29 20:56:25 nilspace 00185 * Update to work with Propagator. 00186 * 00187 * Revision 1.3 2003/04/29 18:47:31 nilspace 00188 * Added copy constructor and operator= functions. 00189 * 00190 * Revision 1.2 2003/04/23 16:26:02 nilspace 00191 * Updated directory structure & default parameters. 00192 * 00193 * Revision 1.1 2003/04/08 22:47:00 nilspace 00194 * Initial Submission. 00195 * 00196 * 00197 * 00198 ******************************************************************************/