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
libNavAids_a_SOURCES = \
libNavaids_a_SOURCES = \
fix.hxx fixlist.hxx fixlist.cxx \
ils.hxx ilslist.hxx ilslist.cxx \
nav.hxx navlist.hxx navlist.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

View file

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

View file

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

View file

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

View file

@ -28,6 +28,9 @@
#include "ilslist.hxx"
FGILSList *current_ilslist;
// Constructor
FGILSList::FGILSList( void ) {
}
@ -95,7 +98,7 @@ bool FGILSList::init( FGPath path ) {
bool FGILSList::query( double lon, double lat, double elev, double freq,
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 last = stations.end();

View file

@ -65,4 +65,7 @@ public:
};
extern FGILSList *current_ilslist;
#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
>> c >> n.ident;
n.freq = (int)(f * 100.0);
n.freq = (int)(f*100.0 + 0.5);
if ( c == 'Y' ) {
n.dme = true;
} else {

View file

@ -28,6 +28,9 @@
#include "navlist.hxx"
FGNavList *current_navlist;
// Constructor
FGNavList::FGNavList( void ) {
}
@ -95,7 +98,7 @@ bool FGNavList::init( FGPath path ) {
bool FGNavList::query( double lon, double lat, double elev, double freq,
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 last = stations.end();

View file

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

View file

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