1
0
Fork 0

Updates to help work the kinks out of JSBsim.

This commit is contained in:
curt 1999-12-30 17:42:24 +00:00
parent 817279c7a8
commit 871e4e8319
5 changed files with 50 additions and 19 deletions

View file

@ -177,7 +177,14 @@ bool FGAircraft::LoadAircraft(string aircraft_path, string engine_path, string f
#else
if (holding_string.compare("//",0,2) != 0) {
#endif
if (holding_string == "AIRCRAFT") {
if (holding_string == "CFG_VERSION") {
aircraftfile >> CFGVersion;
cout << "Config file version: " << CFGVersion << endl;
if (CFGVersion < NEEDED_CFG_VERSION) {
cout << endl << "YOU HAVE AN OLD CFG FILE FOR THIS AIRCRAFT."
" RESULTS WILL BE UNPREDICTABLE !!" << endl << endl;
}
} else if (holding_string == "AIRCRAFT") {
cout << "Reading in Aircraft parameters ..." << endl;
} else if (holding_string == "AERODYNAMICS") {
cout << "Reading in Aerodynamic parameters ..." << endl;
@ -451,13 +458,19 @@ void FGAircraft::FMAero(void)
- F[SideCoeff]*sin(alpha)*sin(beta)
- F[LiftCoeff]*cos(alpha);
dxcg = (Xcg - Xrp)/12; //cg and rp values are in inches
dycg = (Ycg - Yrp)/12;
dzcg = (Zcg - Zrp)/12;
// The d*cg distances below, given in inches, are the distances FROM the c.g.
// TO the reference point. Since the c.g. and ref point are given in inches in
// the structural system (X positive rearwards) and the body coordinate system
// is given with X positive out the nose, the dxcg and dzcg values are
// *rotated* 180 degrees about the Y axis.
Moments[0] += -Fzaero*dycg - Fyaero*dzcg; //rolling moment
dxcg = -(Xrp - Xcg)/12; //cg and rp values are in inches
dycg = (Yrp - Ycg)/12;
dzcg = -(Zrp - Zcg)/12;
Moments[0] += Fzaero*dycg - Fyaero*dzcg; //rolling moment
Moments[1] += Fxaero*dzcg - Fzaero*dxcg; //pitching moment
Moments[2] += Fxaero*dycg + Fyaero*dxcg; //yawing moment
Moments[2] += -Fxaero*dycg + Fyaero*dxcg; //yawing moment
for (axis_ctr = 0; axis_ctr < 3; axis_ctr++) {
for (ctr = 0; ctr < coeff_ctr[axis_ctr+3]; ctr++) {

View file

@ -179,7 +179,8 @@ private:
float phi, tht, psi;
float Weight, EmptyWeight;
float dt;
float CFGVersion;
int numTanks;
int numEngines;
int numSelectedOxiTanks;

View file

@ -52,6 +52,7 @@ SENTRY
#define DEGTORAD 1.745329E-2
#define KTSTOFPS 1.68781
#define FPSTOKTS 0.592484
#define NEEDED_CFG_VERSION 1.10
#define HPTOFTLBSSEC 550

View file

@ -74,8 +74,8 @@ FGOutput::~FGOutput(void)
bool FGOutput::Run(void)
{
if (!FGModel::Run()) {
SocketOutput();
// DelimitedOutput("JSBSimData.csv");
// SocketOutput();
DelimitedOutput("JSBSimData.csv");
} else {
}
return false;
@ -116,7 +116,11 @@ void FGOutput::DelimitedOutput(void)
cout << "Alpha,";
cout << "L,";
cout << "M,";
cout << "N";
cout << "N,";
cout << "Throttle,";
cout << "Aileron,";
cout << "Elevator,";
cout << "Rudder";
cout << endl;
dFirstPass = false;
}
@ -152,7 +156,11 @@ void FGOutput::DelimitedOutput(void)
cout << Translation->Getalpha() << ",";
cout << Aircraft->GetL() << ",";
cout << Aircraft->GetM() << ",";
cout << Aircraft->GetN() << "";
cout << Aircraft->GetN() << ",";
cout << FCS->GetThrottle(0) << ",";
cout << FCS->GetDa() << ",";
cout << FCS->GetDe() << ",";
cout << FCS->GetDr() << "";
cout << endl;
}
@ -193,7 +201,11 @@ void FGOutput::DelimitedOutput(string fname)
datafile << "Alpha,";
datafile << "L,";
datafile << "M,";
datafile << "N";
datafile << "N,";
datafile << "Throttle,";
datafile << "Aileron,";
datafile << "Elevator,";
datafile << "Rudder";
datafile << endl;
sFirstPass = false;
}
@ -229,7 +241,11 @@ void FGOutput::DelimitedOutput(string fname)
datafile << Translation->Getalpha() << ",";
datafile << Aircraft->GetL() << ",";
datafile << Aircraft->GetM() << ",";
datafile << Aircraft->GetN() << "";
datafile << Aircraft->GetN() << ",";
datafile << FCS->GetThrottle(0) << ",";
datafile << FCS->GetDa() << ",";
datafile << FCS->GetDe() << ",";
datafile << FCS->GetDr() << "";
datafile << endl;
datafile.flush();
}

View file

@ -625,21 +625,21 @@ int fgOPTIONS::parse_option( const string& arg ) {
}
} else if ( arg.find( "--uBody=" ) != string::npos ) {
if ( units == FG_UNITS_FEET ) {
uBody = atof( arg.substr(8) ) * FEET_TO_METER;
} else {
uBody = atof( arg.substr(8) );
} else {
uBody = atof( arg.substr(8) ) * FEET_TO_METER;
}
} else if ( arg.find( "--vBody=" ) != string::npos ) {
if ( units == FG_UNITS_FEET ) {
vBody = atof( arg.substr(8) ) * FEET_TO_METER;
} else {
vBody = atof( arg.substr(8) );
} else {
vBody = atof( arg.substr(8) ) * FEET_TO_METER;
}
} else if ( arg.find( "--wBody=" ) != string::npos ) {
if ( units == FG_UNITS_FEET ) {
wBody = atof( arg.substr(8) ) * FEET_TO_METER;
} else {
wBody = atof( arg.substr(8) );
} else {
wBody = atof( arg.substr(8) ) * FEET_TO_METER;
}
} else if ( arg.find( "--heading=" ) != string::npos ) {
heading = atof( arg.substr(10) );