1
$\begingroup$

I'm getting the distance between two locations (lat/long) using Pythagoras theorem.

my data look like this (I use microdegrees because I have limitations)

point1: -34608420,-58373160
point2: -34609420,-58374160
distance:1414.213562373095

I have a few limitation, I'm building an application for a cell phone and using decimals and functions like $\sin, \cos$ are very expensive and take a lot of time. Also, I'm doing this calculation more than $1000$ times.

Pythagoras works fine, but I need to convert the result distance to meters. The radius is the Earth's radius.

I do not care about precession because the points are very close too each other and the arc would not be much.

So,

How can I convert the resulting distance using Pythagoras to meters? Is there a better way to do it, than using Pythagoras?

Thanks, Federico

  • 0
    There are pretty much 3 algorithms to simulate the trig functions: CORDIC, taylor series, and table lookup. Choice depends on your exact constraints. If you're processor constrained but the processor is better than a microcontroller, which I assume is the case for a cell phone, table lookup might be fastest.2012-01-07

1 Answers 1

1

For small distances, the north/south distance is $R(\lambda_2-\lambda_1)$, where $R$ is the radius of the earth and $\lambda$ is latitude. The east/west distance is $R\cos \lambda (\phi_2-\phi_1)$ where $\phi$ is longitude. You can then use Pythagoras on these linear dimensions. The only problem is the $\cos \lambda$, which you can't get away from because the lines of longitude get closer as you get to the poles. You could store a table of cosines, maybe every $5$ degrees, and interpolate, to save the time.