X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInstrumentation%2Fkr_87.cxx;h=c909b7ceebe84f1e8756514d36d110756a2a4d07;hb=5c101b8021a14ac1e5d60b77b76140b1365460dc;hp=aa2ffab904636ff60011dbb37311da3caa26d104;hpb=c9813d1b5d79b4aad13c263690a0223086af25ac;p=flightgear.git diff --git a/src/Instrumentation/kr_87.cxx b/src/Instrumentation/kr_87.cxx index aa2ffab90..c909b7cee 100644 --- a/src/Instrumentation/kr_87.cxx +++ b/src/Instrumentation/kr_87.cxx @@ -244,14 +244,12 @@ void FGKR_87::unbind () { // Update the various nav values based on position and valid tuned in navs void FGKR_87::update( double dt_sec ) { - double acft_lon = lon_node->getDoubleValue() * SGD_DEGREES_TO_RADIANS; - double acft_lat = lat_node->getDoubleValue() * SGD_DEGREES_TO_RADIANS; - double acft_elev = alt_node->getDoubleValue() * SG_FEET_TO_METER; + SGGeod acft = SGGeod::fromDegFt(lon_node->getDoubleValue(), + lat_node->getDoubleValue(), + alt_node->getDoubleValue()); need_update = false; - Point3D aircraft = sgGeodToCart( Point3D( acft_lon, acft_lat, acft_elev ) ); - Point3D station; double az1, az2, s; // On timeout, scan again @@ -361,20 +359,17 @@ void FGKR_87::update( double dt_sec ) { if ( valid ) { // cout << "adf is valid" << endl; // staightline distance - station = Point3D( x, y, z ); - dist = aircraft.distance3D( station ); + // What a hack, dist is a class local variable + dist = sqrt(distSqr(SGVec3d::fromGeod(acft), xyz)); // wgs84 heading - geo_inverse_wgs_84( acft_elev, - acft_lat * SGD_RADIANS_TO_DEGREES, - acft_lon * SGD_RADIANS_TO_DEGREES, - stn_lat, stn_lon, + geo_inverse_wgs_84( acft, SGGeod::fromDeg(stn_lon, stn_lat), &az1, &az2, &s ); heading = az1; // cout << " heading = " << heading // << " dist = " << dist << endl; - effective_range = kludgeRange(stn_elev, acft_elev, range); + effective_range = kludgeRange(stn_elev, acft.getElevationFt(), range); if ( dist < effective_range * SG_NM_TO_METER ) { inrange = true; } else if ( dist < 2 * effective_range * SG_NM_TO_METER ) { @@ -530,9 +525,7 @@ void FGKR_87::search() { stn_elev = adf->get_elev_ft(); range = adf->get_range(); effective_range = kludgeRange(stn_elev, acft_elev, range); - x = adf->get_x(); - y = adf->get_y(); - z = adf->get_z(); + xyz = adf->get_cart(); if ( globals->get_soundmgr()->exists( "adf-ident" ) ) { globals->get_soundmgr()->remove( "adf-ident" );