]> git.mxchange.org Git - flightgear.git/commitdiff
Updates to nav radio stack model ... starting to get to first usable pass.
authorcurt <curt>
Tue, 25 Apr 2000 04:58:25 +0000 (04:58 +0000)
committercurt <curt>
Tue, 25 Apr 2000 04:58:25 +0000 (04:58 +0000)
src/Cockpit/radiostack.cxx
src/Cockpit/radiostack.hxx
src/Cockpit/steam.cxx
src/Main/fg_init.cxx
src/Main/main.cxx

index 3c0a91423d8a52fbe166404706014db028d4e066..e29364a8c1bc5371d1570c06a6cc32950b190878 100644 (file)
@@ -53,10 +53,12 @@ void FGRadioStack::update( double lon, double lat, double elev ) {
        nav1_lon = ils.get_loclon();
        nav1_lat = ils.get_loclat();
        nav1_elev = ils.get_gselev();
-       cout << "Found a vor station in range" << endl;
-       cout << " id = " << ils.get_locident() << endl;
-       cout << " heading = " << nav1_heading
-            << " dist = " << nav1_dist << endl;
+       nav1_target_gs = ils.get_gsangle();
+       nav1_radial = ils.get_locheading();
+       // cout << "Found a vor station in range" << endl;
+       // cout << " id = " << ils.get_locident() << endl;
+       // cout << " heading = " << nav1_heading
+       //      << " dist = " << nav1_dist << endl;
     } else {
        nav1_inrange = false;
        cout << "not picking up vor. :-(" << endl;
@@ -70,10 +72,10 @@ void FGRadioStack::update( double lon, double lat, double elev ) {
        nav2_lon = nav.get_lon();
        nav2_lat = nav.get_lat();
        nav2_elev = nav.get_elev();
-       cout << "Found a vor station in range" << endl;
-       cout << " id = " << nav.get_ident() << endl;
-       cout << " heading = " << nav2_heading
-            << " dist = " << nav2_dist << endl;
+       // cout << "Found a vor station in range" << endl;
+       // cout << " id = " << nav.get_ident() << endl;
+       // cout << " heading = " << nav2_heading
+       //      << " dist = " << nav2_dist << endl;
     } else {
        nav2_inrange = false;
        cout << "not picking up vor. :-(" << endl;
@@ -87,10 +89,10 @@ void FGRadioStack::update( double lon, double lat, double elev ) {
        adf_lon = nav.get_lon();
        adf_lat = nav.get_lat();
        adf_elev = nav.get_elev();
-       cout << "Found an adf station in range" << endl;
-       cout << " id = " << nav.get_ident() << endl;
-       cout << " heading = " << adf_heading
-            << " dist = " << junk << endl;
+       // cout << "Found an adf station in range" << endl;
+       // cout << " id = " << nav.get_ident() << endl;
+       // cout << " heading = " << adf_heading
+       //      << " dist = " << junk << endl;
     } else {
        adf_inrange = false;
        cout << "not picking up adf. :-(" << endl;
index 8cddfddf801e29ecf15484eca8497c12c156c5af..34cd1dab4add56303c8a0d8cc9d02077cd38b4a0 100644 (file)
@@ -41,6 +41,7 @@ class FGRadioStack {
     double nav1_elev;
     double nav1_dist;
     double nav1_heading;
+    double nav1_target_gs;
 
     bool nav2_inrange;
     double nav2_freq;
@@ -50,6 +51,7 @@ class FGRadioStack {
     double nav2_elev;
     double nav2_dist;
     double nav2_heading;
+    double nav2_target_gs;
 
     bool adf_inrange;
     double adf_freq;
@@ -93,6 +95,7 @@ public:
     inline double get_nav1_elev() const { return nav1_elev; }
     inline double get_nav1_dist() const { return nav1_dist; }
     inline double get_nav1_heading() const { return nav1_heading; }
+    inline double get_nav1_target_gs() const { return nav1_target_gs; }
 
     inline bool get_nav2_inrange() const { return nav2_inrange; }
     inline double get_nav2_radial() const { return nav2_radial; }
@@ -101,6 +104,7 @@ public:
     inline double get_nav2_elev() const { return nav2_elev; }
     inline double get_nav2_dist() const { return nav2_dist; }
     inline double get_nav2_heading() const { return nav2_heading; }
+    inline double get_nav2_target_gs() const { return nav2_target_gs; }
 
     inline bool get_adf_inrange() const { return adf_inrange; }
     inline double get_adf_lon() const { return adf_lon; }
index 8ec8f211e09c078ffa88e715d029b92cbdcd5d68..4d31ca1384a93c5584f96f4885373ab8df1da25f 100644 (file)
@@ -232,47 +232,75 @@ void FGSteam::_CatchUp()
 
 
 
-double FGSteam::get_HackGS_deg   ()
-{      double x,y,dme;
-       if (0==NAV1_LOC) return 0.0;
-       y = 60.0 * ( NAV1_Lat - FGBFI::getLatitude () );
-       x = 60.0 * ( NAV1_Lon - FGBFI::getLongitude() )
+double FGSteam::get_HackGS_deg () {
+
+    double x = current_radiostack->get_nav1_dist();
+    double y = (FGBFI::getAltitude() - current_radiostack->get_nav1_elev())
+       * FEET_TO_METER;
+    double angle = atan2( y, x ) * RAD_TO_DEG;
+    return current_radiostack->get_nav1_target_gs() - angle;
+
+#if 0
+    double x,y,dme;
+    if (0==NAV1_LOC) return 0.0;
+    y = 60.0 * ( NAV1_Lat - FGBFI::getLatitude () );
+    x = 60.0 * ( NAV1_Lon - FGBFI::getLongitude() )
                        * cos ( FGBFI::getLatitude () / RAD_TO_DEG );
-       dme = x*x + y*y;
-       if ( dme > 0.1 ) x = sqrt ( dme ); else x = 0.3;
-       y = FGBFI::getAltitude() - NAV1_Alt;
-       return 3.0 - (y/x) * 60.0 / 6000.0;
+    dme = x*x + y*y;
+    if ( dme > 0.1 ) x = sqrt ( dme ); else x = 0.3;
+    y = FGBFI::getAltitude() - NAV1_Alt;
+    return 3.0 - (y/x) * 60.0 / 6000.0;
+#endif
 }
 
 
-double FGSteam::get_HackVOR1_deg ()
-{      double r;
-       double x,y;
-       y = 60.0 * ( NAV1_Lat - FGBFI::getLatitude () );
-       x = 60.0 * ( NAV1_Lon - FGBFI::getLongitude() )
-                       * cos ( FGBFI::getLatitude () / RAD_TO_DEG );
-       r = atan2 ( x, y ) * RAD_TO_DEG - NAV1_Rad - FGBFI::getMagVar();
-       if (r> 180.0) r-=360.0; else
+double FGSteam::get_HackVOR1_deg () {
+    double r;
+
+#if 0
+    double x,y;
+    y = 60.0 * ( NAV1_Lat - FGBFI::getLatitude () );
+    x = 60.0 * ( NAV1_Lon - FGBFI::getLongitude() )
+       * cos ( FGBFI::getLatitude () / RAD_TO_DEG );
+    r = atan2 ( x, y ) * RAD_TO_DEG - NAV1_Rad - FGBFI::getMagVar();
+#endif
+
+    r = current_radiostack->get_nav1_radial() - 
+       current_radiostack->get_nav1_heading() + 180.0;
+    // cout << "Radial = " << current_radiostack->get_nav1_radial() 
+    //      << "  Bearing = " << current_radiostack->get_nav1_heading() << endl;
+    
+    if (r> 180.0) r-=360.0; else
        if (r<-180.0) r+=360.0;
-       if ( fabs(r) > 90.0 )
-               r = ( r<0.0 ? -r-180.0 : -r+180.0 );
-       if (NAV1_LOC) r*=5.0;
-       return r;
+    if ( fabs(r) > 90.0 )
+       r = ( r<0.0 ? -r-180.0 : -r+180.0 );
+    if (NAV1_LOC) r*=5.0;
+
+    return r;
 }
 
 
-double FGSteam::get_HackVOR2_deg ()
-{      double r;
-       double x,y;
-       y = 60.0 * ( NAV2_Lat - FGBFI::getLatitude () );
-       x = 60.0 * ( NAV2_Lon - FGBFI::getLongitude() )
-                       * cos ( FGBFI::getLatitude () / RAD_TO_DEG );
-       r = atan2 ( x, y ) * RAD_TO_DEG - NAV2_Rad - FGBFI::getMagVar();
-       if (r> 180.0) r-=360.0; else
+double FGSteam::get_HackVOR2_deg () {
+    double r;
+
+#if 0
+    double x,y;
+    y = 60.0 * ( NAV2_Lat - FGBFI::getLatitude () );
+    x = 60.0 * ( NAV2_Lon - FGBFI::getLongitude() )
+       * cos ( FGBFI::getLatitude () / RAD_TO_DEG );
+    r = atan2 ( x, y ) * RAD_TO_DEG - NAV2_Rad - FGBFI::getMagVar();
+#endif
+
+    r = current_radiostack->get_nav2_radial() -
+       current_radiostack->get_nav2_heading() + 180.0;
+    // cout << "Radial = " << current_radiostack->get_nav1_radial() 
+    // << "  Bearing = " << current_radiostack->get_nav1_heading() << endl;
+    
+    if (r> 180.0) r-=360.0; else
        if (r<-180.0) r+=360.0;
-       if ( fabs(r) > 90.0 )
-               r = ( r<0.0 ? -r-180.0 : -r+180.0 );
-       return r;
+    if ( fabs(r) > 90.0 )
+       r = ( r<0.0 ? -r-180.0 : -r+180.0 );
+    return r;
 }
 
 
index 33f6fba7cde06e21dfa57b17206906db4bff8564..1cdbaa1267b1a35bd0acfce4ddbf729ad7a8c835 100644 (file)
@@ -473,13 +473,13 @@ bool fgInitSubsystems( void ) {
     // Initialize the underlying radio stack model
     current_radiostack = new FGRadioStack;
 
-    current_radiostack->set_nav1_freq( 111.70 );
-    current_radiostack->set_nav1_radial( 280.0 );
+    current_radiostack->set_nav1_freq( 110.30 );
+    current_radiostack->set_nav1_radial( 299.0 );
 
-    current_radiostack->set_nav2_freq( 117.80 );
-    current_radiostack->set_nav2_radial( 068.0 );
+    current_radiostack->set_nav2_freq( 115.70 );
+    current_radiostack->set_nav2_radial( 45.0 );
 
-    current_radiostack->set_adf_freq( 210.0 );
+    current_radiostack->set_adf_freq( 266.0 );
 
     current_radiostack->update( cur_fdm_state->get_Longitude(),
                                cur_fdm_state->get_Latitude(),
index 61c104f2a3d8adfe292bf8ce1698e84c1cad6fb2..10ca154ec3de65c656b6b631e1f9988e31796ee2 100644 (file)
@@ -745,8 +745,8 @@ void fgUpdateTimeDepCalcs(int multi_loop, int remainder) {
     ephem->update( t, cur_fdm_state->get_Latitude() );
 
     // Update radio stack model
-    current_radiostack->update( cur_fdm_state->get_Longitude(),
-                               cur_fdm_state->get_Latitude(),
+    current_radiostack->update( cur_fdm_state->get_Longitude() * RAD_TO_DEG,
+                               cur_fdm_state->get_Latitude() * RAD_TO_DEG,
                                cur_fdm_state->get_Altitude() * FEET_TO_METER );
 }