]> git.mxchange.org Git - flightgear.git/commitdiff
Trimming in turn now works
authortony <tony>
Tue, 26 Feb 2002 22:28:41 +0000 (22:28 +0000)
committertony <tony>
Tue, 26 Feb 2002 22:28:41 +0000 (22:28 +0000)
src/FDM/JSBSim/FGAircraft.cpp
src/FDM/JSBSim/FGState.cpp
src/FDM/JSBSim/FGTrim.cpp

index 6f61c729844766902e0c28db689d4390a0dfc269..20dd46854b51fd3c9d2a15ab11412e8ad2b31584 100644 (file)
@@ -158,7 +158,7 @@ bool FGAircraft::Run(void)
 
 float FGAircraft::GetNlf(void)
 {
-  return vNwcg(3);
+  return -1*Aerodynamics->GetvFs(3)/MassBalance->GetWeight();
 }
 
 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
index 148ac74cd9903da190fe7d528a1773f997686a2b..5d891c6f095335d8c5ae66ba8657200de083e538 100644 (file)
@@ -832,12 +832,14 @@ void FGState::ReportState(void) {
                     Aircraft->GetNlf(),
                     GetParameter(FG_PITCHRATE)*radtodeg );
   cout << out;
-  snprintf(out,80, "    Heading: %3.0f deg true  Sideslip: %5.2f deg\n",
+  snprintf(out,80, "    Heading: %3.0f deg true  Sideslip: %5.2f deg  Yaw Rate: %5.2f deg/s\n",
                     Rotation->Getpsi()*radtodeg,
-                    GetParameter(FG_BETA)*radtodeg );                  
+                    GetParameter(FG_BETA)*radtodeg,
+                    Rotation->GetPQR(3)*radtodeg  );                  
   cout << out;
-  snprintf(out,80, "    Bank Angle: %5.2f deg\n",
-                    Rotation->Getphi()*radtodeg );
+  snprintf(out,80, "    Bank Angle: %5.2f deg  Roll Rate: %5.2f deg/s\n",
+                    Rotation->Getphi()*radtodeg, 
+                    Rotation->GetPQR(1)*radtodeg );
   cout << out;
   snprintf(out,80, "    Elevator: %5.2f deg  Left Aileron: %5.2f deg  Rudder: %5.2f deg\n",
                     GetParameter(FG_ELEVATOR_POS)*radtodeg,
index 1e36a1abde87e81232b7f14c0fb2c53bb16d5436..c3adc62c28004030f98374dccacb1dd5ee3bf69e 100644 (file)
@@ -118,9 +118,9 @@ FGTrim::FGTrim(FGFDMExec *FDMExec,FGInitialCondition *FGIC, TrimMode tt ) {
     TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tWdot,tAlpha ));
     TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tUdot,tThrottle ));
     TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tQdot,tPitchTrim ));
-    //TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tVdot,tBeta ));
-    //TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tPdot,tAileron ));
-    //TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tRdot,tRudder ));
+    TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tVdot,tBeta ));
+    TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tPdot,tAileron ));
+    TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tRdot,tRudder ));
     break;
   case tCustom:
   case tNone:
@@ -605,19 +605,22 @@ void FGTrim::setupPullup() {
 void FGTrim::setupTurn(void){
   double g,phi;
   phi = fgic->GetRollAngleRadIC();
-  if( fabs(phi) > 0.01 && fabs(phi) < 1.56 ) {
+  if( fabs(phi) > 0.001 && fabs(phi) < 1.56 ) {
     targetNlf = 1 / cos(phi);
     g = fdmex->GetInertial()->gravity(); 
-    psidot = g*tan(phi) / fgic->GetVtrueFpsIC();
+    psidot = g*tan(phi) / fgic->GetUBodyFpsIC();
     cout << targetNlf << ", " << psidot << endl;
   }  
 }  
 
 void FGTrim::updateRates(void){
-  if(mode == tTurn) {
+  double phi = fgic->GetRollAngleRadIC();
+  double g = fdmex->GetInertial()->gravity(); 
+  if(fabs(phi) > 0.001 && fabs(phi) < 1.56 ) {
     double p,q,r,theta,phi;
     theta=fgic->GetPitchAngleRadIC();
     phi=fgic->GetRollAngleRadIC();
+    psidot = g*tan(phi) / fgic->GetUBodyFpsIC();
     p=-psidot*sin(theta);
     q=psidot*cos(theta)*sin(phi);
     r=psidot*cos(theta)*cos(phi);