昨天看到在新疆巴音布鲁克拍摄到的一段视频,截图如下。图中越远处日影越大,这是对的,日影大小应该约为 (日影距离*太阳直径/日地距离)。查看地图,河道宽约100米,最近的一个日影大约占河道1/3。可推出相机距离约 100/3 * 1AU/太阳直径 ~ 3 km。问题是,为什么每段河面都有个日影呢?如果河水面是在同一个平面这显然是不可能的。关键恰恰在于,河面是起伏的。下面我用一个简单的水面模型进行分析。
设阳光方向为 $ \hat{s}=\cos\theta\ \hat{x} - \sin\theta\ \hat{y}$ ($\hat{x}, \hat{y}$ 分别为水平方向与垂直方向的单位向量); 观察者位置为 $(X,Y)$, 设水面高度变化为 $y = h \sin (k x) $。接下来,我们需要计算的是水面的切面方向,列出光线的反射方程,也就是入射阳光方向与水面切面的角度等于反射光线与水面切面的角度。
水面切线方向是 $\vec{t} = \hat{x} + dy/dx \ \hat{y} = \hat{x} + hk \cos (kx) \hat{y}$。(这里不需要计算单位向量,因为 t 长度会在后面的点积中消去)
反射光线向量(从水面反射点到观察点的向量)是 $\vec{r} = (X-x)\ \hat{x} + (Y-y)\ \hat{y}$,单位向量是
$\hat{r} = \frac{ (X-x)\ \hat{x} + (Y-y)\ \hat{y} }{\sqrt{ (X-x)^2 + (Y-y)^2}}$
反射方程是 入射光线向量与切向的点积等于反射线向量与切向的点积,用 bra-ket 符号表示为,$<\hat{s}|\vec{t}> = <\hat{r} | \vec{t}>$
也就是
$\cos\theta - hk \sin\theta \cos kx = \frac{ (X-x) + hk \ (Y-y)\ \cos kx }{\sqrt{ (X-x)^2 + (Y-y)^2}}$
$ hk (\sin\theta + \frac{ (Y-y)}{\sqrt{ (X-x)^2 + (Y-y)^2}}) \cos kx = \cos \theta - \frac{ (X-x) }{\sqrt{ (X-x)^2 + (Y-y)^2}}$
上面的方程中 $y = h \sin kx $,是随着 x 变化的,这使方程变得相当复杂。假设观察者高度 Y 远远大于水面波动幅度 h,我们可以将 Y-y 近似为 Y, 因此
$hk (\sin\theta + \frac{ Y}{\sqrt{ (X-x)^2 + Y^2}}) \cos kx = \cos \theta - \frac{ (X-x) }{\sqrt{ (X-x)^2 + Y^2}}$
先进行一下 sanity check,如果水面完全平整,也就是 k =0 , 上面的方程 reduce 成 $\cos \theta = \frac{ (X-x) }{\sqrt{ (X-x)^2 + Y^2}}$,这是对的。
最终,我们的反射方程是(如果我没有算错):
$hk \cos kx = \frac{\sqrt{ (X-x)^2 + Y^2} \cos \theta - (X-x)}{\sqrt{ (X-x)^2 + Y^2}\sin \theta+Y}$
左边是余弦函数,右边是一个与 x 有关的数,存在多个 x 解(也就是多个日影)是可能的。进一步分析(如计算不同距离的日影大小)估计就比较 tedious了,用计算机数值解可能更有效。有兴趣的读者可以继续。
转载本文请联系原作者获取授权,同时请注明本文来自岳东晓科学网博客。
链接地址:https://wap.sciencenet.cn/blog-684007-1278632.html?mobile=1
收藏