1
0
Fork 0

Fix a bug with converting frequencies to "int".

This commit is contained in:
curt 2000-04-24 23:51:56 +00:00
parent 8f21c91edf
commit 8f1c10a746
10 changed files with 37 additions and 19 deletions

View file

@ -1,13 +1,13 @@
noinst_LIBRARIES = libNavAids.a noinst_LIBRARIES = libNavaids.a
noinst_PROGRAMS = testnavs noinst_PROGRAMS = testnavs
libNavAids_a_SOURCES = \ libNavaids_a_SOURCES = \
fix.hxx fixlist.hxx fixlist.cxx \ fix.hxx fixlist.hxx fixlist.cxx \
ils.hxx ilslist.hxx ilslist.cxx \ ils.hxx ilslist.hxx ilslist.cxx \
nav.hxx navlist.hxx navlist.cxx nav.hxx navlist.hxx navlist.cxx
testnavs_SOURCES = testnavs.cxx testnavs_SOURCES = testnavs.cxx
testnavs_LDADD = libNavAids.a -lsgdebug -lsgmath -lsgmisc -lz testnavs_LDADD = libNavaids.a -lsgdebug -lsgmath -lsgmisc -lz
INCLUDES += -I$(top_builddir) -I$(top_builddir)/src INCLUDES += -I$(top_builddir) -I$(top_builddir)/src

View file

@ -28,6 +28,9 @@
#include "fixlist.hxx" #include "fixlist.hxx"
FGFixList *current_fixlist;
// Constructor // Constructor
FGFixList::FGFixList( void ) { FGFixList::FGFixList( void ) {
} }

View file

@ -62,4 +62,7 @@ public:
}; };
extern FGFixList *current_fixlist;
#endif // _FG_FIXLIST_HXX #endif // _FG_FIXLIST_HXX

View file

@ -112,7 +112,7 @@ operator >> ( istream& in, FGILS& i )
>> i.imlat >> i.imlon; >> i.imlat >> i.imlon;
i.locfreq = (int)(f * 100.0); i.locfreq = (int)(f*100.0 + 0.5);
// return in >> skipeol; // return in >> skipeol;
return in; return in;

View file

@ -28,6 +28,9 @@
#include "ilslist.hxx" #include "ilslist.hxx"
FGILSList *current_ilslist;
// Constructor // Constructor
FGILSList::FGILSList( void ) { FGILSList::FGILSList( void ) {
} }
@ -95,7 +98,7 @@ bool FGILSList::init( FGPath path ) {
bool FGILSList::query( double lon, double lat, double elev, double freq, bool FGILSList::query( double lon, double lat, double elev, double freq,
FGILS *ils, double *heading, double *dist ) FGILS *ils, double *heading, double *dist )
{ {
ils_list_type stations = ilslist[(int)(freq*100.0)]; ils_list_type stations = ilslist[(int)(freq*100.0 + 0.5)];
ils_list_iterator current = stations.begin(); ils_list_iterator current = stations.begin();
ils_list_iterator last = stations.end(); ils_list_iterator last = stations.end();

View file

@ -65,4 +65,7 @@ public:
}; };
extern FGILSList *current_ilslist;
#endif // _FG_ILSLIST_HXX #endif // _FG_ILSLIST_HXX

View file

@ -88,7 +88,7 @@ operator >> ( istream& in, FGNav& n )
in >> n.type >> n.lat >> n.lon >> n.elev >> f >> n.range in >> n.type >> n.lat >> n.lon >> n.elev >> f >> n.range
>> c >> n.ident; >> c >> n.ident;
n.freq = (int)(f * 100.0); n.freq = (int)(f*100.0 + 0.5);
if ( c == 'Y' ) { if ( c == 'Y' ) {
n.dme = true; n.dme = true;
} else { } else {

View file

@ -28,6 +28,9 @@
#include "navlist.hxx" #include "navlist.hxx"
FGNavList *current_navlist;
// Constructor // Constructor
FGNavList::FGNavList( void ) { FGNavList::FGNavList( void ) {
} }
@ -95,7 +98,7 @@ bool FGNavList::init( FGPath path ) {
bool FGNavList::query( double lon, double lat, double elev, double freq, bool FGNavList::query( double lon, double lat, double elev, double freq,
FGNav *n, double *heading, double *dist ) FGNav *n, double *heading, double *dist )
{ {
nav_list_type stations = navaids[(int)(freq*100.0)]; nav_list_type stations = navaids[(int)(freq*100.0 + 0.5)];
nav_list_iterator current = stations.begin(); nav_list_iterator current = stations.begin();
nav_list_iterator last = stations.end(); nav_list_iterator last = stations.end();

View file

@ -65,4 +65,7 @@ public:
}; };
extern FGNavList *current_navlist;
#endif // _FG_NAVLIST_HXX #endif // _FG_NAVLIST_HXX

View file

@ -7,12 +7,12 @@
int main() { int main() {
double heading, dist; double heading, dist;
FGNavList navs; current_navlist = new FGNavList;
FGPath p_nav( "/home/curt/FlightGear/Navaids/default.nav" ); FGPath p_nav( "/home/curt/FlightGear/Navaids/default.nav" );
navs.init( p_nav ); current_navlist->init( p_nav );
FGNav n; FGNav n;
if ( navs.query( -93.2, 45.14, 3000, 117.30, if ( current_navlist->query( -93.2, 45.14, 3000, 117.30,
&n, &heading, &dist) ) { &n, &heading, &dist) ) {
cout << "Found a vor station in range" << endl; cout << "Found a vor station in range" << endl;
cout << " id = " << n.get_ident() << endl; cout << " id = " << n.get_ident() << endl;
cout << " heading = " << heading << " dist = " << dist << endl; cout << " heading = " << heading << " dist = " << dist << endl;
@ -20,12 +20,12 @@ int main() {
cout << "not picking up vor. :-(" << endl; cout << "not picking up vor. :-(" << endl;
} }
FGILSList ilslist; current_ilslist = new FGILSList;
FGPath p_ils( "/home/curt/FlightGear/Navaids/default.ils" ); FGPath p_ils( "/home/curt/FlightGear/Navaids/default.ils" );
ilslist.init( p_ils ); current_ilslist->init( p_ils );
FGILS i; FGILS i;
if ( ilslist.query( -93.1, 45.24, 3000, 110.30, if ( current_ilslist->query( -93.1, 45.24, 3000, 110.30,
&i, &heading, &dist) ) { &i, &heading, &dist) ) {
cout << "Found an ils station in range" << endl; cout << "Found an ils station in range" << endl;
cout << " apt = " << i.get_aptcode() << endl; cout << " apt = " << i.get_aptcode() << endl;
cout << " rwy = " << i.get_rwyno() << endl; cout << " rwy = " << i.get_rwyno() << endl;
@ -34,12 +34,12 @@ int main() {
cout << "not picking up ils. :-(" << endl; cout << "not picking up ils. :-(" << endl;
} }
FGFixList fixlist; current_fixlist = new FGFixList;
FGPath p_fix( "/home/curt/FlightGear/Navaids/default.fix" ); FGPath p_fix( "/home/curt/FlightGear/Navaids/default.fix" );
fixlist.init( p_fix ); current_fixlist->init( p_fix );
FGFix fix; FGFix fix;
if ( fixlist.query( "GONER", -82, 41, 3000, if ( current_fixlist->query( "GONER", -82, 41, 3000,
&fix, &heading, &dist) ) { &fix, &heading, &dist) ) {
cout << "Found a matching fix" << endl; cout << "Found a matching fix" << endl;
cout << " id = " << fix.get_ident() << endl; cout << " id = " << fix.get_ident() << endl;
cout << " heading = " << heading << " dist = " << dist << endl; cout << " heading = " << heading << " dist = " << dist << endl;