Fix a bug with converting frequencies to "int".
This commit is contained in:
parent
8f21c91edf
commit
8f1c10a746
10 changed files with 37 additions and 19 deletions
|
@ -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
|
||||
|
|
|
@ -28,6 +28,9 @@
|
|||
#include "fixlist.hxx"
|
||||
|
||||
|
||||
FGFixList *current_fixlist;
|
||||
|
||||
|
||||
// Constructor
|
||||
FGFixList::FGFixList( void ) {
|
||||
}
|
||||
|
|
|
@ -62,4 +62,7 @@ public:
|
|||
};
|
||||
|
||||
|
||||
extern FGFixList *current_fixlist;
|
||||
|
||||
|
||||
#endif // _FG_FIXLIST_HXX
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -65,4 +65,7 @@ public:
|
|||
};
|
||||
|
||||
|
||||
extern FGILSList *current_ilslist;
|
||||
|
||||
|
||||
#endif // _FG_ILSLIST_HXX
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -65,4 +65,7 @@ public:
|
|||
};
|
||||
|
||||
|
||||
extern FGNavList *current_navlist;
|
||||
|
||||
|
||||
#endif // _FG_NAVLIST_HXX
|
||||
|
|
|
@ -7,12 +7,12 @@
|
|||
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,
|
||||
&n, &heading, &dist) ) {
|
||||
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;
|
||||
cout << " heading = " << heading << " dist = " << dist << endl;
|
||||
|
@ -20,12 +20,12 @@ 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,
|
||||
&i, &heading, &dist) ) {
|
||||
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;
|
||||
cout << " rwy = " << i.get_rwyno() << endl;
|
||||
|
@ -34,12 +34,12 @@ 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,
|
||||
&fix, &heading, &dist) ) {
|
||||
if ( current_fixlist->query( "GONER", -82, 41, 3000,
|
||||
&fix, &heading, &dist) ) {
|
||||
cout << "Found a matching fix" << endl;
|
||||
cout << " id = " << fix.get_ident() << endl;
|
||||
cout << " heading = " << heading << " dist = " << dist << endl;
|
||||
|
|
Loading…
Reference in a new issue