Hi again!

Ralf Gerlich wrote:
> This has to do mostly with the special cases introduced for rounding
> (regarding SG_EPSILON) and for covering the difference between (int)
> cast rounding towards zero and the desired behaviour more similar to a
> floor().

The problem only occurs for latitudes north of 83N or south of 83S
western longitudes. Only here the longitudinal span of buckets is above
1.0 and always divisible by 2, so that the center of a bucket always
lies on an integral longitude.

This leads to the fabs(diff)<SG_EPSILON condition in newbucket.cxx:109
to evaluate to true and therefore activates the wrong calculation.
Casting to (int) always rounds towards zero, which in this case leads to
the base longitude being shifted eastwards by one span.

In case of latitudes north of 89N or south of 89S non-western longitudes
(>=0) will lead to a base longitude of 0, while western longitudes will
lead to a base longitude of -180. This means that the single tiles
surrounding the polar caps (width 360 degree, height 1/8 degree)
essentially have different tile numbers depending on whether one is
coming from an eastern or a western latitude.

This might also explain the "missing northpole"-problem reported by
Torsten Dreyer some time ago. Another possibility would be that Curt's
last build failed in a similar way as ours did and there are not
northpole tiles ;-)

Cheers,
Ralf

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to