# How Lighthouses Work 4, Exercise 3: where a stepped lens starts to save glass # Mass of a solid plano-convex lens against a flat stepped one of the same aperture. import math NM = 1852.0 def transmissivity(visibility_nm): return 0.05 ** (1 / visibility_nm) def luminous_range_nm(intensity_cd, visibility_nm, threshold_lx=2e-7): 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 def geographic_range_nm(light_m, eye_m): return 3.86 * (math.sqrt(light_m) + math.sqrt(eye_m)) / 1.852 # Exercise 3: where does a stepped lens start to save glass? N_GLASS = 1.5 # assumed DENSITY = 2500.0 # assumed STEP_THICK_M = 0.02 # assumed EDGE_M = 0.005 # assumed edge thickness of the solid lens def masses(radius, focal): R = (N_GLASS - 1) * focal sag = R - math.sqrt(R ** 2 - radius ** 2) solid = math.pi * sag ** 2 * (3 * R - sag) / 3 + math.pi * radius ** 2 * EDGE_M stepped = math.pi * radius ** 2 * STEP_THICK_M return solid * DENSITY, stepped * DENSITY for focal in (0.5, 0.92, 1.33): row = [] for dia in (0.2, 0.4): s, t = masses(dia / 2, focal) row.append((dia, round(s, 1), round(t, 1))) print("focal", focal, "m:", row) # bisection: aperture radius at which the two masses are equal (f = 0.92 m) lo, hi = 0.05, 0.45 for _ in range(60): mid = (lo + hi) / 2 s, t = masses(mid, 0.92) if s < t: lo = mid else: hi = mid print("Break-even diameter:", round(2 * lo, 3), "m") # Output: # focal 0.5 m: [(0.2, 1.2, 1.6), (0.4, 18.6, 6.3)] # focal 0.92 m: [(0.2, 0.8, 1.6), (0.4, 8.9, 6.3)] # focal 1.33 m: [(0.2, 0.7, 1.6), (0.4, 6.4, 6.3)] # Break-even diameter: 0.325 m # # On the assumptions in the code (glass index 1.5, density 2,500 kg per cubic metre, a stepped # panel 20 mm thick, a 5 mm edge on the solid lens), the solid lens is lighter at 0.2 m diameter # (about 0.7 to 1.2 kg against 1.6 kg) and heavier at 0.4 m (6.4 to 18.6 kg against 6.3 kg). # Bisection puts the break-even at a diameter of about 0.325 m for the 920 mm focal length. The # shorter the focal length, the more the solid lens bulges and the sooner it loses: at 0.4 m it # weighs 18.6 kg for a focal length of 0.5 m and 6.4 kg for 1.33 m, while the stepped panel stays # at 6.3 kg. The model keeps the stepped panel at a flat 20 mm, which a real panel with prisms # will not be; the conclusion to trust is the trend, not the kilograms.