Hi James,

> Update of /var/cvs/FlightGear-0.9/source/src/Navaids
> In directory baron.flightgear.org:/tmp/cvs-serv9789/Navaids
>
> Modified Files:
>       navdb.cxx navdb.hxx navlist.cxx navlist.hxx navrecord.cxx 
>       navrecord.hxx 
> Log Message:
> James Turner:
> Convert FGNavRecord to inherit FGPositioned. This is much more self-contained 
> than the FGRunway change, since FGNavRecord already had good encapsulation of 
> its state. However, it's a large diff due to moving around two nasty pieces 
> of code - the 'align navaid with extended runway centerline' logic and the 
> 'penalise transmitters at the opposite runway end' logic.
>
> In general things are more readable because I've replaced the Navaid type 
> enum, and the use of Robin's integer type codes, with   switches on the 
> FGPositioned::Type code - no more trying to recall that '6' is an outer 
> marker in Robin's data. The creation code path is also pushed down from navdb 
> into navrecord itself. 
>
>
> Index: navlist.cxx
> ===================================================================
> RCS file: /var/cvs/FlightGear-0.9/source/src/Navaids/navlist.cxx,v
> retrieving revision 1.21
> retrieving revision 1.22
> diff -C 2 -r1.21 -r1.22
> *** navlist.cxx       20 Oct 2007 08:36:22 -0000      1.21
> --- navlist.cxx       12 Sep 2008 08:46:17 -0000      1.22
> ***************
> *** 262,265 ****
> --- 257,302 ----
>   }
>   
> + // LOC, ILS, GS, and DME antenna's could potentially be
> + // installed at the opposite end of the runway.  So it's not
> + // enough to simply find the closest antenna with the right
> + // frequency.  We need the closest antenna with the right
> + // frequency that is most oriented towards us.  (We penalize
> + // stations that are facing away from us by adding 5000 meters
> + // which is further than matching stations would ever be
> + // placed from each other.  (Do the expensive check only for
> + // directional atennas and only when there is a chance it is
> + // the closest station.)
> + 
> + static bool penaltyForNav(FGNavRecord* aNav, const SGVec3d &aPos)
> + {
> +   switch (aNav->type()) {
> +   case FGPositioned::ILS:
> +   case FGPositioned::LOC:
> +   case FGPositioned::GS:
> + // FIXME
> + //  case FGPositioned::DME: we can't get the heading for a DME transmitter, 
> oops
> +     break;
> +   default:
> +     return false;
> +   }
> +   
> +   double hdg_deg = 0.0;
> +   if (aNav->type() == FGPositioned::GS) {
> +     int tmp = (int)(aNav->get_multiuse() / 1000.0);
> +     hdg_deg = aNav->get_multiuse() - (tmp * 1000);
> +   } else {    
> +     hdg_deg = aNav->get_multiuse();
> +   }
> +   
> +   double az1 = 0.0, az2 = 0.0, s = 0.0;
> +   SGGeod geod = SGGeod::fromCart(aPos);
> +   geo_inverse_wgs_84( geod, aNav->geod(), &az1, &az2, &s);
> +   az1 = az1 - hdg_deg;
> +   
> +   if ( az1 >  180.0) az1 -= 360.0;
> +   if ( az1 < -180.0) az1 += 360.0;
> +   
> +   return fabs(az1 > 90.0);
> + }
>   
>   // Given a point and a list of stations, return the closest one to the
>   

MSVC has a problem compiling this line :

return fabs(az1 > 90.0);


and I must admit I also have a problem understanding your intention. You
are trying to extract the absolute value of a boolean. Should it be

return fabs(az1) > 90.0;

  instead ?

-Fred

-- 
Frédéric Bouvier
http://my.fotolia.com/frfoto/   Photo gallery
http://fgsd.sourceforge.net/    FlightGear Scenery Designer


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to