海市蜃楼

天文算法14

第十六章 大气折射 Atmospheric Refraction

1. 大气折射

大气折射(又称:蒙气差(蒙气即行星的大气)、折光差)即原本直线前进的光或其它电磁波在穿越大气层时,因为空气密度随着高度变化所产生的偏折。这种折射是光通过空气时因为密度的增加使速度降低(折射率增加)。大气折射在近地面时会产生海市蜃楼,让远方的物体出现或荡漾,和非幻觉的升高或降低,伸长或缩短。这个词也适用于声音的折射。无论是天体或地面上物体位置的测量都需要考虑大气折射。

对天文或天体的折射,导致天体在天空中的位置看起来比实际为高。大地折射通常导致物体出现在比实际高的位置上,然而在靠近地面的空气被加热的下午,光线的曲折向上会使物体看似出现在比实际位置低的地方。

折射不仅影响可见光,还包括所有的电磁波,然而在程度上不尽相同(见光的色散)。例如在可见光,蓝色受到的影响大于红色。这会对天体光谱在展开时的高解析图像造成影响。

只要有可能,天文学家会安排在天体在天空中接近高度最高的顶点时才要观测。同样的,水手也不会观测一颗高度低于20°或更低恒星的位置。如果不能避免靠近地平线的观测,有可能使用具有修正系统,以弥补这种折射造成的影响。如果色散也是一个问题(如果是宽频的高解析观测),大气折射可以使用成对的旋转玻璃棱镜处理掉。但是当大气折射的总量是温度梯度、温度、压力和湿度(特别是在中红外波长时的水蒸气总量)的函数时,成功补偿这些修正量的工作可以让人为之望而却步。另一方面,测量师经常都会将他们的工作安排在下午折射程度最低的时候。

在有很强的温度梯度、大气不均匀和空气动荡的时候,大气折射会变得很严重。这是造成恒星闪烁和日出与日落时太阳各种不同变形的原因。

太阳在日出和日落时位移的图

2. 真纬度,视纬度

  真纬度即为天体的真实地平纬度(仰角)$h$,视纬度即为经过大气折射后观测到的纬度$h_0$。
  当已知真纬度$h$,可以由该$h$推算出一个矫正量R,视纬度$h_0 = h + R$
  当已知视纬度$h_0$,可以由该$h_0$推算出一个矫正量R,真纬度$h = h_0 - R$

3. 矫正量R–单位角分

3.1 $h_0 \Rightarrow R,h$

  • $h_0>15°$时: $$R=58”.294\tan(90-h_0)-0”.0668\tan^3(90°-h_0)$$ $$h = h_0 - R$$

    // Gt15True returns refraction for obtaining true altitude when altitude
    // is greater than 15 degrees (about .26 radians.)
    //
    // h0 must be a measured apparent altitude of a celestial body.
    //
    // Result is refraction to be subtracted from h0 to obtain the true altitude
    // of the body.
    // 纬度大于15度时,由视纬度求真纬度的矫正量R
    func Gt15True(h0 unit.Angle) unit.Angle {
        // (16.1) p. 105
        t := (math.Pi/2 - h0).Tan()
        return gt15true1.Mul(t) - gt15true2.Mul(t*t*t)
    }
    
  • Bennett公式,当$h\in [0,90°]$时: $$R = \frac {1}{\tan(h_0 +\frac {7.31}{h_0 +4.4})}$$ $$ΔR = -0.06sin(14.7R+13)$$ 对于任意$h_0$,这个公式的精度是$0.07′=4.2”$,最大误差发生在$h_0 =12°$。
    应当注意的是:当$h_0 =90°$时,$R=-0”.08$,理论上天顶应该不受折射影响,可以加上0.0013515′,从而为0。
    若考虑修正量,即$R=R+ΔR$,最大误差为$0.015′=0.9”$。
    当$h_0 =90°$时,计算的结果是$R=-0.89”$,不作第二项修正反而更好。

    // Bennett returns refraction for obtaining true altitude.
    //
    // h0 must be a measured apparent altitude of a celestial body in radians.
    //
    // Results are accurate to .07 arc min from horizon to zenith.
    //
    // Result is refraction to be subtracted from h0 to obtain the true altitude
    // of the body.
    // Bennett 公式,由视纬度求真纬度矫正量 R
    func Bennett(h0 unit.Angle) unit.Angle {
        // (16.3) p. 106
        hd := h0.Deg()
        return unit.AngleFromMin(1 / math.Tan((hd+7.31/(hd+4.4))*math.Pi/180))
    }
    
    // Bennett2 returns refraction for obtaining true altitude.
    //
    // Similar to Bennett, but a correction is applied to give a more accurate
    // result.
    //
    // Results are accurate to .015 arc min.  Result unit is radians.
    // 带矫正量的Bennett公式
    func Bennett2(h0 unit.Angle) unit.Angle {
        R := Bennett(h0).Min()
        return unit.AngleFromMin(R - .06*math.Sin((14.7*R+13)*math.Pi/180))
    }
    

3.2 $h \Rightarrow R,h_0$

  • $h>15°$时: $$R=58”.276\tan(90°-h) -0”.0824\tan^3(90°-h)$$ $$h_0 = h + R$$

    // Gt15Apparent returns refraction for obtaining apparent altitude when
    // altitude is greater than 15 degrees (about .26 radians.)
    //
    // h must be a computed true "airless" altitude of a celestial body.
    //
    // Result is refraction to be added to h to obtain the apparent altitude
    // of the body.
    // 纬度大于15度时,由真纬度求视纬度的矫正量R
    func Gt15Apparent(h unit.Angle) unit.Angle {
        // (16.2) p. 105
        t := (math.Pi/2 - h).Tan()
        return gt15app1.Mul(t) - gt15app2.Mul(t*t*t)
    }
    
  • 类Bennett公式 $$R = \frac {1.02}{\tan(h+\frac{10.3}{h+5.11})}$$ 同样,$h=90°$时,该式算得$R$不等于零,差值是 0.0019279。

    // Saemundsson returns refraction for obtaining apparent altitude.
    //
    // h must be a computed true "airless" altitude of a celestial body in radians.
    //
    // Result is refraction to be added to h to obtain the apparent altitude
    // of the body.
    //
    // Results are consistent with Bennett to within 4 arc sec.
    // 由真纬度求视纬度矫正量,与Bennett公式对应
    func Saemundsson(h unit.Angle) unit.Angle {
        // (16.4) p. 106
        hd := h.Deg()
        return unit.AngleFromMin(1.02 / math.Tan((hd+10.3/(hd+5.11))*math.Pi/180))
    }
    

相关

下一页
上一页
comments powered by Disqus