It's possible to measure the dip in the horizon with altitude due to the curvature of the Earth with a theodolite. At 11,580 meters or 38,000 feet the refracted dip (the angle the horizon is below the horizontal plane taking into consideration atmospheric refraction) is 3.2°. I used a theodolite app on my Pixel 2 XL phone known as "Dioptra". Dioptra displays the angle of the target object in the center of the screen, where the crosshairs are, relative to the horizontal plane. For example, 1° would mean that the target is 1° above the horizontal plane, or 91° relative to plumb.

Before trusting the values provided by Diopta, or any theodolite app, it needs to be tested for a systematic offset which I'll refer to as the "bias". My phone reads 0.9° when level, so it has a bias of 0.9°. I'll start with the three different tests I did to find the bias, but I'll leave it as an exercise to the reader to determine which method is best. All methods are roughly in agreement.

The Geocam app has a similar bias of 1.1°, which is close to 0.9°. I've contacted tech support for my phone as well the theodolite apps, but I have not found a root cause.

For each photo it's possible to see a larger version by clicking.

Mirror Dioptra Test

Before using a mirror to test Dioptra we must first know how close the mirror is to vertical. In this case the mirror turned out to off by 0.3° with the top part of the mirror closer to the viewer:

One way of getting the phone perfectly level relative to the mirror is to place the crosshairs on a refection of the camera lens. I placed bits of pink paper above and to the side of the lens in order make it easier to see:

Dioptra indicated 1.2°, but we need to subtract 0.3° for the mirror which gives 0.9° for the bias.

I took a picture upside down to see if that would make a difference. This turns out to be tricky since the Dioptra app acts strangely when it transitions from -180° to 180°. It read 179.2°, but 179.4° would've been more consistent with the upside up measurement:

Tube Dioptra Test

I placed a long stainless steel tube on top of the laser level after putting pieces of paper under the laser level so that it was within 0.03° of level. At the end of the tube I placed a dark box with a small bit of pink paper on it that could be seen through the tube. I then attempted to take a picture straight down the tube using Dioptra:

Dioptra said 0.8°. The photo is slightly off horizontally, but vertically is what matters, and that seems to be about right.

Laser Dioptra Test

Since the level has a laser feature where the laser is horizontal when the level is horizontal I put pieces of paper under the level until it was within 0.03° of horizontal. I then turned the laser on and placed a solar filter in the beam to protect the camera. I then took a picture looking straight down the beam with the beam centered in the crosshairs:


On December 30th 2017 I took flight 3568 from Austin, TX to Nashville, TN. I took pictures out the plane window in hopes of capturing a dip in the horizon.

On overcast days, like this one, it's important to keep in mind that the apparent horizon is caused by the cloud tops. Any calculations to find the expected refracted dip in the horizon should be done treating the cloud tops as if they are ground, and then measuring the height from there.

Here's a photo shortly after exiting the clouds while ascending at 398 meters, or 1,306 feet:

Note that Dioptra recorded 1.1° which does not make sense, which may be because the plane was turning. Consequently it's hard to know when the angle recorded by Dioptra on a plane is accurate, but it probably helps to wait until after cruising altitude is reached. Also, I would make a note if the heading as indicated by my cell phone compass seemed stable. I think I took the following two pictures when the plane was stable, but it's possible there was some instability I wasn't aware of:

Here's a picture with the crosshair on what appears to be the cloud horizon (for lack of a better term) taken at 11,581 meters or 37,995 feet:

And finally here's a picture of 0.9°, which should be the horizontal plane as per Dioptra testing done above. In other words, this should be where the horizon would be at ground level, or where it would be if the Earth was flat. Taken at 11,035 meters or 36,204 feet:


It's unfortunate that theodolite apps such as Dioptra may have a bias. Perhaps there's confusion as to whether the center pixel corresponds to the horizontal plane. In any case it's important to test a theodolite app before using it. Also, I believe a dip in the horizon was demonstrated, but there are possible pitfalls, such as the plane turning, which causes roll and yaw.

That being said if we take the value of -1.9° shown for the cloud horizon and subtract from 0.9°, which is plumb, we get 2.8°. The cloud horizon is somewhere below 398 meters. So for that picture a height of 11,581 meters - 398 meters = 11,183 meters should be used. Entering 11,183 meters into Metabunk's Curve Calculator reveals a refracted horizon dip of 3.1°, which seems close. However, maybe the non-refracted value of 3.4° would be more appropriate at this altitude since refraction, which is cased by density gradient in the air, is less at higher altitudes.

For the -1.9° picture the crosshair is a bit above the cloud horizon, but only by 14 pixels. There are 28.54 pixels/° (see the this zip file for images and an explanation of how the pixels/° value was determined), so that reduces the angle by 14 / 28.54 = 0.5° which changes -1.9° to -2.4° which then changes the measured dip to 0.9° - -2.4° = 3.3°, which is between the expected non-refracted and refracted horizon dip.