-----Original Message-----
From: openguides-dev-bounces(a)openguides.org
[mailto:openguides-dev-bounces@openguides.org]On Behalf Of David
Cantrell
Sent: 29 June 2004 01:16
To: OpenGuides software developers
Subject: Re: [OpenGuides-Dev] locator plugins
IvorW wrote:
An ellipsoidal projection about one great circle
will only
provide an accurate projection
regarding distances, for a very small percentage
of
locations on Earth.
I know we've talked about simply calculating distances from
point A to
point B on the surface of a sphere in the past, and rejected
it because
you lose accuracy over small distances, due to rounding
errors in cos()
and sin().
I wonder, if we used an arbitrary precision FP library like
Math::BigFloat does this problem go away? It doesn't provide trig
functions, but they can be derived thus:
cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + ... (x in radians)
and
sin(x) = x - x^3/3! + x^5/5! - x^7/7! + ...
This is guaranteed to give us accurate results provided we use
sufficiently accurate values for sin(x) and cos(x), I wonder
what the
performance hit would be.
More to the point is the accuracy of the other factor - the radius of the Earth.
If you assume that this is a constant, you are assuming that the Earth is a sphere.
Also, how would you go about measuring the distance from a given point on the Earth's
crust to the centre of the earth?
An alternative approach woud be to use a linear approximation (slides 24-26)
http://un.earth.li/~ivorw/slides/geogmod.ppt
Having defined an origin for our guide (e.g. Charing+, Carfax, etc.)
We could go out there with a GPS and a trundle wheel (or some other means of measuring
distances in a straight line accurately), and come up with the appropriate X and Y
scale factors for our own grid. This was my original idea, before I learned about UTM
and ellipsoids.
Ivor.