X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FUFO.cxx;h=93928f67d4bdddb30644d51f91137497622d28f8;hb=fac1525fde5f30d10c5431c5b02f85abd7589e63;hp=a62ab40e1583eb294cc84955cee57b578f161bed;hpb=22de2508aade107b021e50889b6cfa69af3bfcea;p=flightgear.git diff --git a/src/FDM/UFO.cxx b/src/FDM/UFO.cxx index a62ab40e1..93928f67d 100644 --- a/src/FDM/UFO.cxx +++ b/src/FDM/UFO.cxx @@ -26,8 +26,6 @@ #endif #include -#include -#include #include #include
@@ -73,34 +71,33 @@ void FGUFO::init() { // Run an iteration of the EOM (equations of motion) void FGUFO::update( double dt ) { - // cout << "FGLaRCsim::update()" << endl; if (is_suspended()) return; lowpass::set_delta(dt); double time_step = dt; + FGControls *ctrl = globals->get_controls(); // read the throttle - double throttle = globals->get_controls()->get_throttle( 0 ); - double brake_left = globals->get_controls()->get_brake_left(); - double brake_right = globals->get_controls()->get_brake_right(); + double throttle = ctrl->get_throttle( 0 ); + double brake_left = ctrl->get_brake_left(); + double brake_right = ctrl->get_brake_right(); if (brake_left > 0.5 || brake_right > 0.5) throttle = -throttle; - throttle = Throttle->filter(throttle); + double velocity = Throttle->filter(throttle) * Speed_Max->getDoubleValue(); // meters/sec - // read and lowpass-filter the state of the control surfaces - double aileron = Aileron->filter(globals->get_controls()->get_aileron()); - double elevator = Elevator->filter(globals->get_controls()->get_elevator()); - double rudder = Rudder->filter(globals->get_controls()->get_rudder()); - aileron += Aileron_Trim->filter(globals->get_controls()->get_aileron_trim()); - elevator += Elevator_Trim->filter(globals->get_controls()->get_elevator_trim()); - rudder += Rudder_Trim->filter(globals->get_controls()->get_rudder_trim()); + // read and lowpass-filter the state of the control surfaces + double aileron = Aileron->filter(ctrl->get_aileron()); + double elevator = Elevator->filter(ctrl->get_elevator()); + double rudder = Rudder->filter(ctrl->get_rudder()); - double velocity = throttle * Speed_Max->getDoubleValue(); // meters/sec + aileron += Aileron_Trim->filter(ctrl->get_aileron_trim()); + elevator += Elevator_Trim->filter(ctrl->get_elevator_trim()); + rudder += Rudder_Trim->filter(ctrl->get_rudder_trim()); double old_pitch = get_Theta(); double pitch_rate = SGD_PI_4; // assume I will be pitching up @@ -157,7 +154,7 @@ void FGUFO::update( double dt ) { double yaw = fabs(rudder) < .2 ? 0.0 : rudder / (25 + fabs(speed) * .1); // update (lon/lat) position - double lat2, lon2, az2; + double lat2 = 0.0, lon2 = 0.0, az2 = 0.0; if ( fabs(speed) > SG_EPSILON ) { geo_direct_wgs_84 ( get_Altitude(), get_Latitude() * SGD_RADIANS_TO_DEGREES, @@ -165,8 +162,7 @@ void FGUFO::update( double dt ) { get_Psi() * SGD_RADIANS_TO_DEGREES, dist, &lat2, &lon2, &az2 ); - _set_Longitude( lon2 * SGD_DEGREES_TO_RADIANS ); - _set_Latitude( lat2 * SGD_DEGREES_TO_RADIANS ); + _set_Geodetic_Position( lat2 * SGD_DEGREES_TO_RADIANS, lon2 * SGD_DEGREES_TO_RADIANS ); } // cout << "lon error = " << fabs(end.x()*SGD_RADIANS_TO_DEGREES - lon2)