Le Wednesday 22 April 2009 19:20:54 Martin Spott, vous avez écrit :
> Curtis Olson wrote:
> > I'm seeing a ton of these nan's when I start at KHAF ... it's just one or
> > two or three per frame, but that ends up spewing an awful lot of extra
> > text to my console.
>
> That's weird, at least using the ASK 21 I don't see a single one - on
> Linux/AMD64 with GCC-4.3.2,
>
> Martin.
Here on OpenSuse 11.0, 64 bits , core2quad, and GCC 4.3.1, I don't have a
single one, with any plane, anywhere.
I suspect the Nans to have the following probable origins:
**get_elevation_m doesn't hit the ground at all, ( but then its said to return
the sea level )
**a division by zero occurs somewhere here:
for (int i = 0; i <= 4; i++)
{
probe_lat_rad[i] =
asin(sin(deg2rad*user_latitude_deg)*cos(dist_probe_m[i]/earth_rad_m)
+cos(deg2rad*user_latitude_deg)*sin(dist_probe_m[i]/earth_rad_m)*cos(ground_wind_from_rad));
if (probe_lat_rad[i] == 0.0) {
probe_lon_rad[i] = (deg2rad*user_latitude_deg); //
probe on a pole
}
else {
probe_lon_rad[i] =
fmod((deg2rad*user_longitude_deg+asin(sin(ground_wind_from_rad)
*sin(dist_probe_m[i]/earth_rad_m)/cos(probe_lon_rad[i]))+PI)
,(2.0*PI))-PI;
}
probe_lat_deg[i]= rad2deg*probe_lat_rad[i];
probe_lon_deg[i]= rad2deg*probe_lon_rad[i];
}
but I thought checking for poles would prevent this ?
** divisions by zero here ?
slope[0] = (probe_elev_m[0] - probe_elev_m[1]) / dist_probe_m[1];
slope[1] = (probe_elev_m[1] - probe_elev_m[2]) / dist_probe_m[2];
slope[2] = (probe_elev_m[2] - probe_elev_m[3]) / dist_probe_m[3];
slope[3] = (probe_elev_m[4] - probe_elev_m[0]) / -dist_probe_m[4];
unlikely, as these are initialized with good, positive values
** division by zero again ?
else
{
agl_factor = exp(-(2 + 2 * probe_elev_m[0] / 4000) *
(user_altitude_agl_m - BOUNDARY2_m) /
max(probe_elev_m[0],200.0));
}
I'm a bit at lost for now, as I really don't see any NaN anymore here, and
don't have another platform to test on.
I would be interested to see on which platforms / configuration this happens,
maybe when more feedback comes in ??
------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today.
Use priority code J9JMT32. http://p.sf.net/sfu/p
_______________________________________________
Flightgear-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-devel