I recently had a chance to go to a sea-shore and to also ponder the question:

"What is the farthest point on the horizon that I can theoretically see, ignoring the effects of fog, clouds, waves, tide, and non-uniform curvature of Earth?"

So, I got to work, and derived the formula thus:


  • Earth to be a perfect sphere of radius, r;

  • My height (at eye-level) to be, h; and

  • The linear distance to the horizon to be, d;


$(r+h)^2 = d^2 + r^2$ (via Pythagoras theorem)


$d = (h^2 + 2rh) ^.5$

Also, the curved distance, c, to the horizon, would be:

$c = r . arccos (r / (r+h) )$

However, here begins my difficulty. When I substitute the values...

r = 6370 km
h = 180 cm   (or, 6 ft)

... I get,

d = 4.58 km   (reasonable, appears correct)
c = 274 km    (!!!)

... which doesn't make sense to me!

Why so much difference between c and d? Intuitively, I am expecting c to be very close to d. Why? Because, the surface of Earth is more or less flat, and when dealing with a linear distance, d, in the vicinity of merely 5 km, the curved distance, c, should also be very close to d. Isn't it?

Where am I wrong in my intuitive thinking (as, afaik, my formula and computation are correct)?

  • $\begingroup$ I think maybe you just punched it in wrong. For me (in radians mode): 6370 / 6370.0018 INV COS * 6370 I get 4.7887. I know this is an old post, but I was just trying to calc something similar. It took me a little while to get it right, too. $\endgroup$ – Octopus May 8 '18 at 18:14

What are you using to calculate this? Since $r/(r+h)$ is very close to 1, your (correct) formula for $c$ will be very sensitive to small precision errors in computing arccos. With an inexpensive calculator I got a result close to your 274 km, but when I asked Mathematica for the result I got an answer that was for all practical purposes equal to the straight-line distance, 4.78874 km.

  • $\begingroup$ O boy! THAT never occurred to me, and could never have - so I'm glad I posted this here. Now, I used gnome-calculator on Ubuntu 13.x, which I thought was an 'arbitrary precision' calculator. Apparently, it's not. My $r/(r+h)$ came out to be 0.99999971. $\endgroup$ – Harry Jul 5 '13 at 13:12
  • $\begingroup$ Rick, since I'm not familiar with Mathematica, would you also post the function (or, the relevant code snippet) you used to calculate $r/(r+h)$ to arbitrary precision? Thanks. $\endgroup$ – Harry Jul 5 '13 at 13:16
  • 1
    $\begingroup$ @Harry Mathematica is a very powerful computer algebra program. It's also very expensive. However there's a free program that runs on the same engine. Check out Wolfram Alpha. Using this on your problem the linear distance is 4.788737 km and the circular distance is 4.788736 km, so the two differ by about a millimeter $\endgroup$ – Rick Decker Jul 5 '13 at 16:27
  • $\begingroup$ Fair enough. Thanks a lot! $\endgroup$ – Harry Jul 6 '13 at 3:33
  • $\begingroup$ Btw, I found out that /usr/bin/bc -l can also do the job; the -l option uses a precision of 20 digits which can give you a value that is fairly precise, and if you want more precision, you can specify scale=50 or higher inside your bc script. $\endgroup$ – Harry Jul 9 '13 at 6:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.