00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "Attitude.h"
00014 #include "utils/RungeKutta.h"
00015
00016
00017 namespace O_SESSAME {
00018
00019 Attitude::Attitude(): m_AttitudeState(), m_ControlTorques(3), m_pPropagator(NULL), m_Parameters(), m_pEnvironment(NULL), m_AttitudeHistory()
00020 {
00021
00022 }
00023
00024 Attitude::~Attitude()
00025 {
00026
00027
00028
00029
00030
00031
00032 }
00033
00034 void Attitude::SetStateObject(const AttitudeState &_newAttitudeState)
00035 {
00036 m_AttitudeState = _newAttitudeState;
00037 }
00038
00039 AttitudeState Attitude::GetStateObject() const
00040 {
00041 return m_AttitudeState;
00042 }
00043
00044 void Attitude::SetPropagator(Propagator *_propagator)
00045 {
00046 m_pPropagator = _propagator;
00047 m_pPropagator->SetAttitudeObject(this);
00048 return;
00049 }
00050
00051 odeFunctor Attitude::GetDynamicsEq() const
00052 {
00053 return m_AttDynEqFuncPtr;
00054 }
00055
00056 void Attitude::SetDynamicsEq(odeFunctor _AttDynEqFuncPtr)
00057 {
00058 m_AttDynEqFuncPtr = _AttDynEqFuncPtr;
00059 m_Integrateable = true;
00060 return;
00061 }
00062
00063 void Attitude::SetStateConversion(IntegratedAttitudeStateConversionFunction _ConversionFunction)
00064 {
00065 m_AttitudeStateConversionFunction = _ConversionFunction;
00066 }
00067
00068 IntegratedAttitudeStateConversionFunction Attitude::GetStateConversion() const
00069 {
00070 return m_AttitudeStateConversionFunction;
00071 }
00072
00073 void Attitude::SetControlTorques(const Vector &_ControlTorques)
00074 {
00075
00076 m_ControlTorques.initialize(_ControlTorques);
00077 return;
00078 }
00079 Vector Attitude::GetControlTorques() const
00080 {
00081 return m_ControlTorques;
00082 }
00083
00084 void Attitude::SetParameters(const Matrix &_Parameters)
00085 {
00086 m_Parameters.initialize(_Parameters);
00087 }
00088
00089 Matrix Attitude::GetParameters() const
00090 {
00091 return m_Parameters;
00092 }
00093
00094 Matrix Attitude::Propagate(const vector<ssfTime> &_propTime)
00095 {
00096 cout << "Begin propagating... " << endl;
00097 m_pPropagator->Propagate(_propTime);
00098
00099 return Matrix(3,3);
00100 }
00101
00102 bool Attitude::IsIntegrateable()
00103 {
00104 return m_Integrateable;
00105 }
00106
00107
00108
00109
00110 void Attitude::SetEnvironment(Environment *_pEnvironment)
00111 {
00112 m_pEnvironment = _pEnvironment;
00113 m_EnvironmentForcesFunctor.Set(m_pEnvironment, &Environment::GetTorques);
00114 }
00115
00116 Environment* Attitude::GetEnvironment() const
00117 {
00118 return m_pEnvironment;
00119 }
00120
00121 ObjectFunctor<Environment> Attitude::GetEnvironmentForcesFunctor()
00122 {
00123 return m_EnvironmentForcesFunctor;
00124 }
00125
00126
00127
00128
00129 AttitudeHistory& Attitude::GetHistoryObject()
00130 {
00131 return m_AttitudeHistory;
00132 }
00133
00134 }
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179