X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FUFO.cxx;h=e2c1366dbd9570443558448addd254c20530473c;hb=44ce4cdb973461cd1c4d37c9e8d11fe96b238be1;hp=f581ba038ad47ca697bf10d15a0f52ad2b859f05;hpb=e1c2a95f2f30ac4f1854f0c2d4e6e30d613ec99d;p=flightgear.git diff --git a/src/FDM/UFO.cxx b/src/FDM/UFO.cxx index f581ba038..e2c1366db 100644 --- a/src/FDM/UFO.cxx +++ b/src/FDM/UFO.cxx @@ -31,14 +31,16 @@ #include "UFO.hxx" -const double throttle_damp = 0.05; -const double aileron_damp = 0.01; -const double elevator_damp = 0.01; +const double throttle_damp = 0.2; +const double aileron_damp = 0.05; +const double elevator_damp = 0.05; +const double rudder_damp = 0.4; FGUFO::FGUFO( double dt ) : Throttle(0.0), Aileron(0.0), - Elevator(0.0) + Elevator(0.0), + Rudder(0.0) { // set_delta_t( dt ); } @@ -62,8 +64,6 @@ void FGUFO::update( double dt ) { if (is_suspended()) return; - int multiloop = _calc_multiloop(dt); - double time_step = dt; // read the throttle @@ -78,6 +78,8 @@ void FGUFO::update( double dt ) { + Aileron * (1 - aileron_damp); Elevator = globals->get_controls()->get_elevator() * elevator_damp + Elevator * (1 - elevator_damp); + Rudder = globals->get_controls()->get_rudder() * rudder_damp + + Rudder * (1 - rudder_damp); // the velocity of the aircraft double velocity = Throttle * 2000; // meters/sec @@ -156,6 +158,7 @@ void FGUFO::update( double dt ) { // angle of turn double turn_rate = sin(roll) * SGD_PI_4; // radians/sec double turn = turn_rate * time_step; + double yaw = fabs(Rudder) < .2 ? 0.0 : Rudder / (25 + fabs(speed) * .1); // update (lon/lat) position double lat2, lon2, az2; @@ -179,7 +182,7 @@ void FGUFO::update( double dt ) { // update euler angles _set_Euler_Angles( roll, pitch, - fmod(get_Psi() + turn, SGD_2PI) ); + fmod(get_Psi() + turn + yaw, SGD_2PI) ); _set_Euler_Rates(0,0,0); _set_Geocentric_Position( lat_geoc, get_Longitude(),