Light and Distance

How Lighthouses Work ๐Ÿ†

Chapter 1 ยท Light and Distance

A lighthouse is a tower built to carry a light, and its job is the oldest one in navigation: to tell a sailor where the land, the rock or the harbour mouth is. The Wikipedia article on lighthouses describes one as a structure designed to emit light as a navigational aid, marking dangerous coastlines, shoals, reefs and rocks, and marking safe entries to harbours. Before any question about lenses, lamps or stone, there is a question of physics: how far away can a light be seen? The answer has three parts, and a lighthouse designer has to keep them apart. How far the light's strength carries it. How much the weather takes away. And how far the curve of the Earth allows it to be seen at all.

What was run, and what to trust
Every Python snippet in this chapter and in the three exercise solutions was executed, and the output in the comments is what Python printed. The definitions of the three ranges, the horizon constants and the inverse square law come from the sources named in the chapter. The light intensities, the heights and the visibilities used in the calculations are illustrative assumptions, labelled where they appear: they show how the principle works, and are not the figures of any real lighthouse. The later chapters bring in the real Scottish lights.

Three Questions, Three Ranges

RangeWhat limits itDepends on
Luminous rangethe light becomes too faint for the eye, because it spreads out and the air absorbs itintensity of the light, the clearness of the air
Geographic rangethe curve of the Earth hides the light below the horizonheight of the light, height of the observer's eye
Nominal rangethe luminous range in one agreed standard weather, so lights can be comparedintensity only

(Sources: the definitions agree across the US Lighthouse Society glossary, which I read directly, and the Boatnews article on lighthouse range, which I also read directly. The Britannica article on lights was blocked when I tried to fetch it, so what I know of it is a search summary only.) The glossary defines the nominal range as the "luminous range of a light in nautical miles when the meteorological visibility is 10 nautical miles". Boatnews says the luminous range depends on the power of the source and the weather, while the geographic range depends on the Earth's curvature and the heights of the light and the observer. What a sailor really sees is the smaller of the luminous and the geographic range, and this chapter builds the tools to calculate both.

Light Spreads Out: The Inverse Square Law

A small lamp sends its light out in all directions. Move twice as far away and the same light is spread over a sphere with four times the area, so each patch receives a quarter as much. This is the inverse square law: the intensity of light from a point source is inversely proportional to the square of the distance (stated, for example, in the Wikipedia article on the law). The strength of a lamp in a given direction is its luminous intensity, measured in candela (cd), and the light it delivers to a surface facing it is the illuminance, in lux (lx), which is simply E = I / dยฒ when the distance is in metres.

def illuminance(intensity_cd, distance_m): """Inverse square law: lux received on a surface facing the light.""" return intensity_cd / distance_m ** 2 I = 1_000_000 # assumed intensity, candela (illustrative) for km in (1, 2, 4, 8): print(km, "km", illuminance(I, km * 1000), "lx") print(illuminance(I, 2000) / illuminance(I, 1000)) # 1 km 1.0 lx # 2 km 0.25 lx # 4 km 0.0625 lx # 8 km 0.015625 lx # 0.25

Each doubling of the distance divides the light by four: 1.0, 0.25, 0.0625, 0.015625 lx. The last line confirms the ratio of 0.25 between 2 km and 1 km. This is the first reason a light cannot be seen forever. In empty space it would still weaken without limit, and the eye can only detect a light above some threshold. Doubling the range of a light means quadrupling its intensity, which is expensive, and it is why lighthouse engineers spent so much effort (as the later chapters show) gathering light into a beam instead of letting it spread in every direction.

The Air Takes Some: Allard's Law

Real air absorbs and scatters light, so the light is also weakened by a factor that falls exponentially with distance. Allard's law combines both effects: E = I · TD / dยฒ, where T is the fraction of light that survives each nautical mile and D is the distance in nautical miles. A search for the IALA (the international lighthouse authorities' body) documents turned up Allard's law as the standard way to calculate illuminance at the eye from intensity, distance and an exponential extinction factor, and the nominal range as the distance at which the illuminance falls to 0.2 microlux (2 × 10-7 lx) in a meteorological visibility of 10 nautical miles. I did not read the IALA text itself, only the search summary, which also notes that IALA does not regard 0.2 microlux as the true threshold of detection but as a convenient level above it. Treat 0.2 microlux here as the convention it is.

Meteorological visibility is the distance at which a dark object is just visible against the sky, which corresponds to 5% of the light getting through. That gives T = 0.051/V for a visibility of V nautical miles. For 10 nm this is 0.741, which matches the "74 percent transmission" that the Britannica search summary quotes for the standard weather. (The 5% figure is my own knowledge, used here because it reproduces the 74%.)

The Earth Curves Away: The Horizon

Even a very bright light disappears when the Earth's curve hides it. For an eye at height h above a smooth sea, the geometry of a tangent line to a sphere of radius R gives a horizon distance of d = √(2Rh) when h is small compared with R. With R = 6,371 km and h in metres this is 3.57 √h kilometres (verified on the Wikipedia article on the horizon). The air bends light slightly downward, which lets you see a little further: under standard conditions the article says the factor becomes about 3.86, an increase of about 8%. It also gives a "7/6 Earth radius" model of refraction.

import math R = 6371.0 # mean Earth radius, km def horizon_km(h_m, k=1.0): """Distance to the horizon for eye height h_m metres. k = 1 is the pure geometry; k = 7/6 is the 'Young' refraction model.""" return math.sqrt(2 * (R * k) * h_m / 1000) for h in (2, 10, 30, 60): print(h, round(horizon_km(h), 2), round(horizon_km(h, 7/6), 2)) print(round(3.57 * math.sqrt(30), 2), round(3.86 * math.sqrt(30), 2)) print(round(3.86 / 1.852, 3)) # 2 5.05 5.45 # 10 11.29 12.19 # 30 19.55 21.12 # 60 27.65 29.87 # 19.55 21.14 # 2.084

The columns are the height (m), the horizon without refraction (km) and the horizon with the 7/6 model (km). An eye 2 m above the sea sees only about 5 km, while one at 30 m sees 19.55 km, or 21.12 km with refraction. The two refraction estimates (21.12 km from the 7/6 model and 21.14 km from the constant 3.86) agree to 0.02 km, so they are the same idea in two forms. Dividing 3.86 by 1.852 km per nautical mile gives 2.084 nautical miles per square root of a metre. Sources disagree slightly on this constant: Boatnews prints 2.10, my arithmetic gives 2.084. Both are close to the "2.08" often quoted, and the gap is under 1%, but it is a reminder that the rules of thumb are approximations of an atmosphere that varies from day to day.

light (height H) โ— โ•ฑโ”‚ โ•ฑ โ”‚ โ•ฑ โ”‚ tangent line eye โ•ฑ โ”‚ โ•ฑ โ—โ”€โ”€โ”€โ”€โ•ฑโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ•ฑโ”€โ”€โ”€โ”€ โ”‚ โ•ฑ sea surface curves away โ”‚โ•ฑ (height h) geographic range = distance to horizon from the light + distance to horizon from the eye

That is the key to the geographic range. A light of height H is visible over its own horizon distance, and an observer's eye adds its own, so the two distances simply add: 3.86 (√H + √h) km. In nautical miles this is about 2.08 (√H + √h) with the heights in metres. Notice that the range grows with the square root of the height, so a tower four times as tall sees only about twice as far. The Wikipedia article on lighthouses gives the single-height formula D = 1.22 √H, with H in feet and D in nautical miles. That conflicts with the Wikipedia article on the horizon, where 1.22 is the constant for statute miles with the pure geometry, and the nautical-mile constant with feet is about 1.06 (about 1.15 with refraction, which is my own conversion of 2.084 from metres to feet). I trust the horizon article's explanation of the constants, and do not use the 1.22 figure in this course.

Putting It Together

Now the whole calculation. The code finds the luminous range from Allard's law by bisection (repeatedly halving an interval until the answer is pinned down), uses the 0.2 microlux threshold, and compares it with the geographic range. Every light intensity and height is an assumption for illustration.

import math NM = 1852.0 # metres in a nautical mile KM_PER_SQRT_M = 3.86 # horizon constant, with standard refraction def geographic_range_nm(light_m, eye_m): return KM_PER_SQRT_M * (math.sqrt(light_m) + math.sqrt(eye_m)) / (NM / 1000) def transmissivity(visibility_nm): """Fraction of light left after 1 nm, if 5% is left after visibility_nm.""" return 0.05 ** (1 / visibility_nm) def luminous_range_nm(intensity_cd, visibility_nm, threshold_lx=2e-7): """Allard's law, E = I * T**D / (D*1852)**2, solved for D by bisection.""" t = transmissivity(visibility_nm) lo, hi = 0.01, 200.0 for _ in range(100): mid = (lo + hi) / 2 e = intensity_cd * t ** mid / (mid * NM) ** 2 if e > threshold_lx: lo = mid else: hi = mid return (lo + hi) / 2 print(round(transmissivity(10), 3)) for v in (2, 5, 10, 20): print(v, round(luminous_range_nm(1_000_000, v), 1)) # 0.741 # 2 6.9 # 5 14.7 # 10 25.7 # 20 44.2

A light of an assumed 1,000,000 cd has a luminous range of 6.9 nm in poor visibility (2 nm), 14.7 nm at 5 nm, 44.2 nm in very clear air (20 nm), and 25.7 nm at the standard 10 nm visibility, which is its nominal range. The weather changes the answer by a factor of more than six, which is why a chart prints one agreed number and mariners are given tables to convert it.

for i in (10_000, 100_000, 1_000_000, 10_000_000): print(i, round(luminous_range_nm(i, 10), 1)) for h in (10, 30, 60, 100): print(h, round(geographic_range_nm(h, 5), 1)) # eye assumed 5 m up # what the sailor actually sees: the smaller of the two lum = luminous_range_nm(1_000_000, 10) geo = geographic_range_nm(30, 5) print(round(lum, 1), round(geo, 1), round(min(lum, geo), 1)) # 10000 14.3 # 100000 19.8 # 1000000 25.7 # 10000000 31.9 # 10 11.3 # 30 16.1 # 60 20.8 # 100 25.5 # 25.7 16.1 16.1

The first four lines show how stubborn the inverse square law is: multiplying the intensity by 100, from 100,000 cd to 10,000,000 cd, raises the nominal range only from 19.8 nm to 31.9 nm, a factor of 1.6. The next four lines show the geographic range for an observer whose eye is 5 m above the sea: 11.3 nm for a 10 m light and 25.5 nm for a 100 m light. The final line is the point of the chapter. The 1,000,000 cd light would reach 25.7 nm in standard weather, but if it stands 30 m above the sea and the observer's eye is 5 m up, the horizon cuts it off at 16.1 nm. Here a brighter lamp would not help. Only a taller tower, or a taller observer, would.

Nominal Range Is Not the Distance You See

A published nominal range is easy to misread. It is a statement about the light's brightness in standard weather, and it ignores the Earth's curvature altogether, as the Boatnews and IALA definitions both stress. A chart that says a light has a nominal range of 25 nm does not promise that a small boat will see it from 25 nm away. The boat's eye is a few metres up, and the light may be below its horizon long before its glare fades. Equally, a lamp on a very tall cliff has a long geographic range but may be too faint to see at that distance in haze. The two limits are independent, and the shorter one wins.

Common mistakes
Reading the nominal range as the distance at which the light will be seen (it is the luminous range in standard weather, and the horizon is ignored); forgetting the observer's own height in the geographic range (the two horizon distances add); expecting twice the range from twice the intensity (the inverse square law means four times); treating a height formula as exact (the refraction constants 3.57, 3.86, 2.08 and 2.10 are approximations, and the sources differ slightly); and mixing units (nautical miles, kilometres, feet and metres all appear in lighthouse sources, and the constants only work with matching units).
Exercise 1

A light of 250,000 cd (assumed). Find the illuminance it gives at 1, 2, 3 and 5 km, the distance at which it has fallen to 0.01 lx, and the intensity needed to give the same 0.01 lx at twice that distance. What does the answer say about doubling a lighthouse's range?

๐Ÿ“„ View solution
Exercise 2

For lights 20, 40 and 80 m above the sea, seen by an eye 3 m up, find the geographic range with and without refraction (3.86 and 3.57 km per square root of a metre), in nautical miles. Then find the height needed for a 20 nm range, and the height needed to double the range of the 40 m light.

๐Ÿ“„ View solution
Exercise 3

A light stands 25 m above the sea and is seen by an eye 4 m up. For intensities of 100,000 and 2,000,000 cd and visibilities of 2, 10 and 20 nm, find the luminous range and decide which of the luminous and geographic ranges limits what the observer sees. Then find the intensity that gives a nominal range of 15 nm.

๐Ÿ“„ View solution

Quick Reference

  • Inverse square law: E = I / dยฒ; double the distance, a quarter of the light
  • Luminous range: how far the light's strength carries it in the prevailing weather
  • Nominal range: the luminous range when meteorological visibility is 10 nm (T = 0.74 per nm)
  • Geographic range: set by the Earth's curve: about 3.86 (√H + √h) km, or 2.08 (√H + √h) nm, heights in metres, with standard refraction
  • Without refraction: 3.57 km per square root of a metre; refraction adds about 8%
  • What is seen: the smaller of the luminous and geographic ranges
Coming next
How Lighthouses Work 2 is about early beacons: the Pharos of Alexandria, coal and wood fires, candles, the Eddystone towers, and Smeaton's 1759 tower and dovetailed stone.