How to use the refraction approximation in the metabunk curve calculator


New Member
Mick's refraction simulator is well-suited for examining shots of distant objects made possible by temperature inversion. However it is a complex visual tool, and usually I just want the "Refracted Hidden" number from the curve calculator. This requires estimating the temperature gradient, but I haven't yet seen a discussion on how to do this.

During a common case of temperature inversion, warm air over cool water, the temperature gradient can vary greatly near the water, yet the refraction model reduces it to a single number. Could the model even produce a reasonable result in this situation?

I've been obtaining decent answers from the curve calculator using the following estimate:

(temperature gradient) = ((air temperature) - (water temperature)) / (visible height of target)​

I will provide the rationale later, but for now let's test it out.

Blackpool to Snaefell, Isle of Man

A shot from a previous thread with increased contrast:

65 miles away; viewer height of about 6 inches. Profile taken from the one Mick posted:

In the shot, a sliver of the connecting valley is visible on the right, corresponding to about 75 pixels from the top in the profile. The profile is 248 pixels high and Snaefell is 2034ft, so we see about (75/248)*2034 ≈ 615ft of the mountain.

Also from the Blackpool thread:

26.5C = 79.7F. The temperature gradient is (79.7 - 61)/615 ≈ 0.03040650406.

1329.04 + 615 = 1944.04; actual 2034.

Liverpool to Snaefell, Isle of Man

Picture from a relatively recent video:

84 miles away; viewer height of 218ft. Profile again:

I don't quite see the valley on the right of Snaefell this time. I estimate the horizon to be about 55 pixels down in the profile, which translates to (55/248)*2034 ≈ 451 feet of the mountain showing.

Unfortunately there is no time stamp apart from the upload date, 29 August 2019. Liverpool had a warm spell the previous week.

Let's say the temperature was 20C = 68F when the video was made. Sea temperature:

The temperature gradient is (68-61.9)/451 = 0.01352549889.

1643.3 + 451 = 2094.3; actual 2034.

Fort Niagara, NY to Toronto

Picture from a previously discussed video:

30.86 miles away; viewer height of 37ft. Note the date of 18 Feb 2017. Mick created a profile overlay in a previous thread:

The CN Tower is 1815ft. Measuring the slanted distances, I estimate 381 pixels out of 441 pixels are above the horizon, so about (381/441)*1815 ≈ 1600 feet of the tower is visible.

At 1:07 in the video, the long shadows coming from the west indicate late afternoon, about 55F:

Water temperature:

Temperature gradient is (55 - 34.5)/1600 = 0.0128125.

198.27 + 1600 = 1798.27; actual 1815.


Viewer is on the left; target is on the right. Assume warm air and cool water.

Although the temperature gradient is constant in the refraction model, in reality the gradient is much higher near the water. However if we are only concerned with the highest point on the target then it's not so bad to spread the gradient evenly from the horizon to the top of the target, like spreading a lump of butter over bread.

Why use the visible height of the target instead of its actual height? Since the most significant refraction takes place near the horizon, we want the model to capture that aspect. Consider a very tall target that is barely peeking above the horizon. Close to the horizon the refraction is greater, but this will not be reflected in the model if we spread the gradient across the actual height of the target, resulting in a small gradient.

In this method for estimating temperature gradients, shorter targets are naturally assigned higher gradients. This comports with shorter targets being stretched in comparison to their taller counterparts, as shown the shot of Toronto.
Last edited: