我们把直接射入人眼的太阳光与 AB 的夹角记为 α ,把经过水面上的一点 C 反射进入人眼的光线与 AB 的夹角记为 β 。对照片进行精确地测量,可知太阳的直径相当于照片中的 317 个像素,而露出水面的部分高 69 像素,水中的倒影则只有 29 像素。众所周知太阳的视直径(看太阳的视角)为 0.5 度,因此我们就得到 α = 0.5 * 69 / 317 ≈ 0.1088 度, β = 0.5 * 29 / 317 ≈ 0.0457 度。
如果再已知人眼(或者说相机)离水面的垂直距离 h 为 2 米,那么根据这些数据我们就足以估算出地球的半径了。不妨把 ∠AOB 记为 φ ,把 ∠AOC 记为 θ ,把人眼到水天相接处的距离 AB 记为 D ,把人眼到反射点的距离 AC 记为 d ,入射角和反射角记为 γ ,最后用 r 来表示地球半径,那么此时我们一共有 6 个未知量。为了求解出这 6 个未知数,我们需要寻找 6 个不同的方程。这 6 个方程可以由以下 6 组等量关系得到:
1. 四边形 OBAC 的内角和为 360° ,即 (φ - θ) + 90° + β + (180° - γ + 90°) = 360° , 化简得 方程(1) φ + β = θ + γ
2. 两条平行线的同旁内角相加为 180° ,即 (α + β) + (180° - 2γ) = 180° ,即 方程(2) α + β = 2γ
3. 由于 AO = h + r ,同时又有 AO = AD + DO = D·sinφ + r·cosφ ,因此有 方程(3) h + r = D·sinφ + r·cosφ
4. BD 既可以等于 D·cosφ ,又可以等于 r·sinφ ,于是有 方程(4) D·cosφ = r·sinφ
5. 由于 AO = h + r ,同时又有 AO = AE + EO = d·sin(γ+θ) + r·cosθ ,因此有 方程(5) h + r = d·sin(γ+θ) + r·cosθ
6. CE 既可以等于 d·cos(γ+θ) ,又可以等于 r·sinθ ,于是有 方程(6) d·cos(γ+θ) = r·sinθ
一系列复杂的代数运算(省略数百字)最终告诉我们:
r = h / (√1 - 2·cosβ·cosγ + cos2γ / sinβ - 1)
其中 γ = (α + β)/2 。代入已知的 α 、 β 和 h 可以得到,地球半径 r 大约为 7.29312 * 10^6 米,也即 7293 千米。
这个估算的误差有多大呢?事实上,地球的半径大约为 6300 多千米,可见误差不是一般的大。不过,考虑到我们估算的依据仅仅是一张照片,能把数量级估对就已经相当牛 B 了。除了测量的精度之外,还有很多潜在的因素会导致误差。目前看来,误差的最主要来源似乎是不完全平静的水面——一点小小的波浪就会给 α 、 β 的值带来巨大的影响。
