# How to calculate horizon distance variation?

**URL:** https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023
**Category:** Cecil's Columns/Staff Reports
**Created:** [March 25, 2003, 2:50pm UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023 "2003-03-25T14:50:41Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![scr4](https://avatars.discourse-cdn.com/v4/letter/s/59ef9b/32.png) [@scr4](https://boards.straightdope.com/u/scr4)
#### Post date: [March 25, 2003, 2:50pm UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/1 "2003-03-25T14:50:41Z")

</div>

In the column [Are the north and south horizons not equally distant?](http://www.straightdope.com/classics/a1_167b.html), Cecil states:

> [@](#):
>
> …for a person five feet tall standing on a raft in calm waters at 45 degrees latitude in the Northern Hemisphere, the distance to the northern horizon exceeds that to the southern horizon by a total of … four inches.

I can’t seem to be able to come up with this number. Distance to the horizon is **x = sqrt(2 R h)**, where **R** is the radius of curvature and **h** is the observer’s height. So for someone 1.5m tall, the horizon is 4.3km away. The variation in this value with respect to curvature variation is **dx/dR=h/sqrt(2 R)=3.4x10[sup]-4[/sup]**.

If I’m reading [this page](http://home.online.no/~sigurdhu/WGS84_Eng.html) correctly, the radius of curvature of earth varies from 6399.5 km at the equator to 6335.4 km at the poles. I don’t feel like doing the proper calculation for an ellipse so I’ll just assume that the radius of curvature varies linearly from equator to pole. Your north/south views are 4.3 km apart on average, so that gives **dR=0.026km**. Multiply that by **dx/dr** and I get **dx=8.9mm.** That’s one order of magnitude off from Cecil’s answer. Can anyone figure out what I did wrong? I did try plotting the radius of curvature and it’s not very far from a linear function, off by no more than 10%.

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 25, 2003, 8:48pm UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/2 "2003-03-25T20:48:07Z")

</div>

I don’t know, but I’ve been working on it since yesterday to no avail. I’ve been using a somewhat different and less elegant method, specifically looking at the equation of an ellipse in polar and seeing where the tangent line intersects it. I didn’t think the curvature assumption would work, because I was unable to show that horizon distance was directly related to average curvature over the viewing path. But I’ll give it a shot, if you think that’s a good assumption.

---

<div class="post-metadata">

### Author: ![scr4](https://avatars.discourse-cdn.com/v4/letter/s/59ef9b/32.png) [@scr4](https://boards.straightdope.com/u/scr4)
#### Post date: [March 26, 2003, 12:31am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/3 "2003-03-26T00:31:39Z")

</div>

**Achernar** , I don’t know if my assumptions are valid. Maybe you should do it your way and compare answers.

Intiutively Cecil’s answer seems way too large, which is why I bothered to do the calculation in the first place. But intuition isn’t very useful for a question like this.

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 26, 2003, 12:43am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/4 "2003-03-26T00:43:48Z")

</div>

Okay, I just came up with a way to make this problem a zillion times simpler than the way I was doing it, with no difficult assumptions. It will take me a little while to work it out, though:

Start by drawing the diagram assuming the cross-section of the Earth is a circle, and compute the slope of the lines of sight that tell you the distances to the horizons. Then scale the whole thing down by a factor of (b/a) in the vertical dimension. The lines of sight will scale by a factor which depends only on their slope. Thus you can figure out the exact lengths of the new lines of sight.

I do have one question, though. Is 45°N located at a point such that the Center-You line makes a 45° angle with the plane of the equator? Or is it defined some other way?

---

<div class="post-metadata">

### Author: ![scr4](https://avatars.discourse-cdn.com/v4/letter/s/59ef9b/32.png) [@scr4](https://boards.straightdope.com/u/scr4)
#### Post date: [March 26, 2003, 1:57am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/5 "2003-03-26T01:57:09Z")

</div>

> [@](#):
>
> \*Originally posted by Achernar \*  
> **I do have one question, though. Is 45°N located at a point such that the Center-You line makes a 45° angle with the plane of the equator?**

I think 45°N is where the normal to the surface is 45° away from the axis of rotation. Not that it makes much difference, of course.

The new method you proposed should work. I look forward to your result. I’ll try to work it out too in the meantime.

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 26, 2003, 2:32am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/6 "2003-03-26T02:32:33Z")

</div>

I get… 2.88 mm = 0.114 in. Here’s how I did it.

I treated the Earth as an ellipse with major axis on the x-axis and minor axis on the y-axis. This will probably be reflected in my language, but I’ll try to make it understandable.

Givens: equatorial (or major) Earth radius **a**. eccentricity of Earth **e**. height of observer **h**. Latitude angle **L**.

1. I’ll start by assuming that the Earth is a circle with radius **a**. Call the distance to the horizon **x** , as you did, and to first order in **h/a** , **x = sqrt(2&nbsp;a&nbsp;h)**.

2. Call the angle between the observer and the tangent to the horizon **B**. It’s exactly true that **tan(B) = x/a**, so using my assumption from (1) and assuming **B** is small, I get **B = sqrt(2 h / a)**.

3. Drawing the lines from the observer’s head to the tangent points to the horizon, I get that they have slopes exactly **m = cot(L ± B)**. I’m using **±** to denote + for North and - for South. I’ll use **-+** to denote the opposite.

4. So imagine we have a line segment of slope **m = dy / dx** and length **A**. If we transfrom **dy -\> p dy** then we will transform the length **A -\> k A** , where **k** depends only on **m** and **p**. I get **k[sup]2[/sup] = (1 + p[sup]2[/sup] m[sup]2[/sup]) / (1 + m[sup]2[/sup])**. In the case that we want, **p[sup]2[/sup] = (b/a)[sup]2[/sup] = 1 - e[sup]2[/sup]**. We can then reduce the previous formula to **k[sup]2[/sup] = 1 - e[sup]2[/sup]m[sup]2[/sup] / (1 + m[sup]2[/sup])**. This whole step involved no approximations.

5. Using the value for **m** from part (3) gives **k[sup]2[/sup] = 1 - e[sup]2[/sup] cos[sup]2[/sup](L ± B)**. Using binomial expansion for small **e** gives **k = 1 - 1/2 e[sup]2[/sup] cos[sup]2[/sup](L ± B)**.

6. Call the difference in **k** s **Dk**. Exactly, **Dk = 1/2 e[sup]2[/sup] (cos[sup]2[/sup](L + B) - cos[sup]2[/sup](L + B))**. Now, I’m going to make a couple assumptions to simplify the trig. Assume **B** is really small and use the binomial expansion again to get **cos[sup]2[/sup](L ± B) = cos(L) -+ 2 B sin(L)**. This gives an approximated value of **Dk = 2e[sup]2[/sup] B sin(L)**.

7. The difference in horizon distances is **x Dk**. Combining results from (1), (2), and (6) gives a value for **x Dk** of:

**4 h e[sup]2[/sup] sin(L)**

Your link gives a value for **e[sup]2[/sup]** of 0.000694, so, there you go. I do think it’s strange that it does not depend on **a** , but it’s not inconceivable. Now, I think it’s important I outline the assumptions:

(1) **h \<\< a**. Ridiculously good.  
(2) **x \<\< a**. Good to better than a percent.  
(5) **e[sup]2[/sup] \<\< 1**. Good to one part in a few hundred.  
(6) **B \<\< 1**. Actually the same as in (2). I think this also assumes that **B \<\< L** , but I’m not sure. It shouldn’t make a big difference, though.

There are also three implicit assumptions. First, the one I brought up in my last post, about just what we call 45°N. Second, that **h** is actually the height of the observer _before_ the squashing. Both of these assumptions introduce error on the order of **e[sup]2[/sup]**. Third, that the person is standing such that their feet are are pointing toward the center of the earth, as opposed to standing either perpendicular to the ground, or pointing toward the center of gravity. I don’t know about this assumption, but I can’t imagine it carrying error on an order greater than **e[sup]2[/sup]**.

With the exception of the very last one I mentioned, all of the assumptions were just to make the math _simpler_ rather than _possible_. I think I may go through the calculations again without making them, to see how different the answer is. But anyway, we now have at least three answers. 🙂

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 26, 2003, 2:48am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/7 "2003-03-26T02:48:32Z")

</div>

Well, I already see one mistake I made, so let me point that out immediately. The value of e[sup]2[/sup] should be 0.006694. That gives a final value of 28.9 mm = 1.14 in, greater than my previous post by a factor of 10. More errors to come, I’m sure… 😛

---

<div class="post-metadata">

### Author: ![scr4](https://avatars.discourse-cdn.com/v4/letter/s/59ef9b/32.png) [@scr4](https://boards.straightdope.com/u/scr4)
#### Post date: [March 26, 2003, 2:51am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/8 "2003-03-26T02:51:33Z")

</div>

> [@](#):
>
> \*Originally posted by Achernar \*  
> **4 h e[sup]2[/sup] sin(L)**

I haven’t gone through all your math yet, but this result looks strange. The **sin(L)** dependency indicates that the variation is greatest at the poles. **sin(2 L)** dependency would make more sense. :dubious:

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 26, 2003, 3:24am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/9 "2003-03-26T03:24:08Z")

</div>

Okay, I went through it again, doing everything numerically to about 12 digits, and I got a somewhat, though not significantly, different result - 2.0507 cm = 0.80737 in. Here’s how.

Based on **scr4** ’s last post, I knew that my L value was slightly off. After the squashing, along the Earth, dy/dx = -1 at 45°N, so since dy is scaled by a factor of p = b/a, I knew that _before_ the squashing, dy/dx = -a/b. For a circle, dy/dx = -x/y, so x/y = a/b. Thus tan(L) = y/x = b/a. This gives a value of L = 44.9037878494°, and m = tan(L) = 0.996647189335.

Now, if the person is standing pointing toward the center of the Earth (the assumption I don’t know how to get rid of) then their body is a line segment with slope m (given by last paragraph). Using the formula from (4) before gives k[sub]person[/sub] = 0.9966664051313, and so their heigh before the squashing is h = 1.52910100248 m.

The unassuming formula for x is: x = sqrt(h(h+2a)), so x = 4416.51827795 m.

tan(B) = x/a exactly, so B = 0.039674252376°. Values for k are then k[sub]+[/sub] = 0.998321693734 and k[sub]-[/sub] = 0.998317050459. Dk = 4.64327486×10[sup]-6[/sup]. Using the value for x from the last paragraph gives a value of x Dk of 0.020507 m.

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 26, 2003, 3:30am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/10 "2003-03-26T03:30:57Z")

</div>

> [@](#):
>
> \*Originally posted by scr4 \*  
> The **sin(L)** dependency indicates that the variation is greatest at the poles. **sin(2 L)** dependency would make more sense. :dubious:

Good call. I see now that the reason for this is that in (6) I actually assume that B \<\< cot(L), which clearly won’t work when L = 90°. This assumption comes in when I used the binomial expansion as follows:

cos(L + B) = cos(L) - B sin(L)  
cos(L + B)[sup]2[/sup] = cos(L) - 2 B sin(L)

---

<div class="post-metadata">

### Author: ![scr4](https://avatars.discourse-cdn.com/v4/letter/s/59ef9b/32.png) [@scr4](https://boards.straightdope.com/u/scr4)
#### Post date: [March 26, 2003, 3:31am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/11 "2003-03-26T03:31:11Z")

</div>

I think 2cm is the right answer, unless Cecil wants to jump in and correct us. I took the \*\* k2 = 1 - e2 cos2(L ± B)\*\* from your previous post and solved it by brute force (aka MathCad) to get the same result. My first post is only off by a factor of 2, which is not too bad considering the crude approximations I used.

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 26, 2003, 3:45am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/12 "2003-03-26T03:45:09Z")

</div>

cos[sup]2[/sup](L + B) - cos[sup]2[/sup](L - B) = sin(2L) sin(2B). How about that. Using that instead of my stupid ol’ binomial expansion gives:

Dk = e[sup]2[/sup] B sin(2L)

and:

x Dk = 2 h e[sup]2[/sup] sin(2L) = 2.040 cm

Okay, now that my uber-elegant solution agrees with brute force, I’m willing to go with it. 😃

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 26, 2003, 5:37am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/13 "2003-03-26T05:37:40Z")

</div>

> [@](#):
>
> \*Originally posted by Achernar \*  
> I used the binomial expansion as follows:
> 
> cos(L + B) = cos(L) - B sin(L)  
> cos(L + B)[sup]2[/sup] = cos(L) - 2 B sin(L)

Aha, I see my error now. The binomial expansion would have given me the correct result, but I didn’t do it right. I left out a factor of cos(L). However, using the expansion is silly, because the only term it would leave out, the B[sup]2[/sup] term, would have cancelled in the next step anyway. That’s what I get for blindly applying approximations instead of playing around with the trig. :smack:

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 26, 2003, 6:57am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/14 "2003-03-26T06:57:31Z")

</div>

I tried doing the problem again, this time from a radius of curvature approach, but I get a slightly different answer. Maybe you can find where I erred? Using parametric forms for x(L) and y(L) of:

x = a cos(L)  
y = b sin(L)

and [formula 4](http://mathworld.wolfram.com/RadiusofCurvature.html) gives:

R = 1 / ab × (a[sup]2[/sup] sin[sup]2[/sup]L + b[sup]2[/sup] cos[sup]2[/sup]L)[sup]3/2[/sup]  
= a[sup]2[/sup] / b × (1 + b[sup]2[/sup] / a[sup]2[/sup] × cos[sup]2[/sup]L)[sup]3/2[/sup]  
= a[sup]2[/sup] / b × (1 - e[sup]2[/sup] cos[sup]2[/sup]L)[sup]3/2[/sup]

For small e[sup]2[/sup]:

R = a[sup]2[/sup] / b × (1 - 3/2 × e[sup]2[/sup] cos[sup]2[/sup]L)  
dR = a[sup]2[/sup] / b × 3/2 × e[sup]2[/sup] sin(2L) dL

dR/R = 3/2 e[sup]2[/sup] sin(2L) dL

Since x (not to be confused with x(L) that I used earlier in this post) is proportional to R[sup]1/2[/sup] we can say that dx/x = (1/2) dR/R. Also, dL = B. So:

dx = 3/4 × x B e[sup]2[/sup] sin(2L) = 3/2 × h e[sup]2[/sup] sin(2L)

This of course differs from the previous answer by a factor of 3/4. Hmmmm…

---

<div class="post-metadata">

### Author: ![Chronos](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/chronos/32/134_2.png) [@Chronos](https://boards.straightdope.com/u/Chronos)
#### Post date: [March 26, 2003, 9:04pm UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/15 "2003-03-26T21:04:34Z")

</div>

> [@](#):
>
> Now, if the person is standing pointing toward the center of the Earth (the assumption I don’t know how to get rid of)

That, at least, I know how to fix. You’ve got the elliptical Earth, and a person standing with their feet pointing to the center. So from a surface=horizontal reference frame, that’s just a person who’s leaning slightly. Increase the person’s height slightly, and you’ll bring his eyes back to the height where they should be. But this will, in fact, be an O(e[sup]2[/sup]) correction.

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 26, 2003, 9:16pm UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/16 "2003-03-26T21:16:21Z")

</div>

So you’re saying have them stand perpendicular to the surface? That makes a certain amount of sense. But I think what happens is that the angle by which the person is tilted is O(e[sup]2[/sup]), and since the difference in height is related to 1 - the cosine of this angle, it’s actually O(e[sup]4[/sup]). Eh, I could be wrong, though. I’m bad with orders.

---

<div class="post-metadata">

### Author: ![Chronos](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/chronos/32/134_2.png) [@Chronos](https://boards.straightdope.com/u/Chronos)
#### Post date: [March 27, 2003, 9:55pm UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/17 "2003-03-27T21:55:07Z")

</div>

Hm, I was thinking that the angle would be order e, so the cosine would be e[sup]2[/sup]. But I can never remember eccentricity formulae, so you may be right. Either way, it’s probably too small to worry about, and it’d have approximately the same effect on both horizons.

And I’m not saying to make the person stand perpendicularly, I’m saying that a tall, leaning person is equivalent to a shorter, non-leaning person.

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 27, 2003, 10:28pm UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/18 "2003-03-27T22:28:09Z")

</div>

You also have to take into account the fact that they’re now at a different latitude when they’re leaning, though. This effect, I believe, will be order e[sup]2[/sup] (h / a)[sup]2[/sup].

I think that it is right that in real life a person would be standing perpendicular to the horizon. The gravity vector is the gradient of the potential, so it’s normal to any equipotential surface, like the water.

Using this assumption, I got that they will be leaning by an angle W (wrt the line to the center of the Earth) given exactly by

tan(W) = e[sup]2[/sup] tan(L) / (1 + (1 - e[sup]2[/sup])tan[sup]2/sup)

which is of course order e[sup]2[/sup].

---

<div class="post-metadata">

### Author: ![RM\_Mentock](https://avatars.discourse-cdn.com/v4/letter/r/e274bd/32.png) [@RM\_Mentock](https://boards.straightdope.com/u/RM_Mentock)
#### Post date: [March 27, 2003, 11:02pm UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/19 "2003-03-27T23:02:01Z")

</div>

Achenar, I’m not sure what you mean by perpendicular to the horizon. A person standing up is perpendicular to the surface they’re standing on–if it’s level, which is what we’re assuming. If you were to extend the perpendicular down through the Earth, at mid-latitudes, it would miss the center of the Earth by a factor of tens of kilometers. That makes it of order e[sup]2[/sup].

Chronos, if the person is leaning, they’ll be leaning towards the southern horizon, which means their eyes will be closer to it–throwing the answer off.

scr4, you got your radius of curvature values backwards, in your first post.

---

<div class="post-metadata">

### Author: ![Achernar](https://avatars.discourse-cdn.com/v4/letter/a/e274bd/32.png) [@Achernar](https://boards.straightdope.com/u/Achernar)
#### Post date: [March 28, 2003, 12:00am UTC](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023/20 "2003-03-28T00:00:56Z")

</div>

> [@](#):
>
> \*Originally posted by RM Mentock \*  
> Achenar, I’m not sure what you mean by perpendicular to the horizon.

I meant perpendicular to the surface. Sorry about that. :smack: The tens of kilometers you mention I get as being equal to e[sup]2[/sup] a cos(L), which is order e[sup]2[/sup]. However, the effect this has on the value of x Dk (or whatever you want to call the final answer) is related to the square of this value, I believe, so the final answer would have a change of order e[sup]4[/sup].

[Next page](https://boards.straightdope.com/t/how-to-calculate-horizon-distance-variation/164023.md?page=2)
