## 893Re: [tracker2] Distance calculation redux

Expand Messages
• Aug 30, 2006
Although your way is probably faster (and close enough for government work), why not take the COS of the average latitude for figuring convergence?  It would require addition and division to get the average, a call to COS (which I assume you already have compiled in anyway) and a multiplication to apply the convergence (which you already do with your 8 bands method).

I've checked the "flat earth" pythagorean theorem method using COS convergence out to 100 miles and it's off by less than 0.1 miles at 99miles.... and since most people only care about 2 significant digits, it's a great fit for a small processor.

Sorry can't help with the arctan.
Wes

On 8/30/06, scott@... <scott@...> wrote:

My first attempt at a distance calculation (using a floating point
implementation of the haversine formula) required 5 trigonometric function
calls, two square roots, and several floating point divisions. It also
needed 3 watchdog resets to keep the CPU from timing out during the
calculation! Floating point math is NOT the HC08's strong suit.

I rewrote it using mostly integer math, applying the pythagorean theorem and
dividing each hemisphere into 8 latitude bands to compensate for the
convergence of the meridians. I think it's accurate enough for this
application, and it's pretty fast. It's got one square root call and no
division.

I also added the ability to use compressed mode with a fixed position. This
was important because the distance calculation works from the compressed
integer representation of the coordinates, so the conversion had to be done
anyway.

Something's still not quite right - two points with the same coordinates
show a distance of 323 feet. Gotta track that one down. But it seems to be
good enough for distances in miles - everything seems to be within about 10%
of what it should be.

I was thinking that a cool use for this would be to add a scripting option
to trigger an action based on distance to a station. A T2 at your house
could see your car coming and turn the driveway light on when it's within a
mile, or your mobile station could turn on a proximity alarm light when you
come within a certain distance of another station on the road.

Now for bearing calculation. Anyone know how to fake an arctangent
calculation?

Scott

• Show all 8 messages in this topic