此方法是根据球缺的面积来计算。一个球被平面截下的一部分叫做球缺。截面叫做球缺的底面,垂直于截面的直径被截后,剩下的线段长叫做球缺的高,如下图所示。球缺曲面部分的面积:
S = 2 π R H S = 2\pi RH S=2πRH
其中R是球的半径,H是球缺的高。
假设天区范围为: ∣ g b ∣ ≤ 5 ∘ , 0 ∘ ≤ g l ≤ 9 0 ∘ |\mathrm{gb}|\le5^{\circ},0^{\circ}\le\mathrm{gl}\le90^{\circ} ∣gb∣≤5∘,0∘≤gl≤90∘,球缺的高度为 H = R − R × sin 5 ∘ H=R-R\times\sin{5^{\circ}} H=R−R×sin5∘。由公式1可以求得球缺的面积,用半球的面积减去球缺的面积,再乘以2,即可得到所选天区的面积。Python
代码如下:
import math
import numpy as np
## 假设是银道坐标系 换成
##注:如果要计算非对称纬度内的面积,需要对以下程序修改
gb = 5 # 银纬范围 |b| <5
gl_min = -5 # 银经最小值
gl_max = 90 # 银经最大值
gl_ra = (gl_max-gl_min)/360 ## 银经比例
R = 1 # 球的半径,球的表面积为 4*pi
S_ball = 41252.96 # 天球的总的面积: 单位 平方度
H = R - math.sin(math.radians(gb))*R #球缺的高
## 球缺的面积为S = 2*pi*R*H
S_ha = 2*math.pi*R*R #半球的面积
S_le = 2*math.pi*H*R # 球缺的面积
S_sur = 2* S_ball*(S_ha-S_le)*gl_ra/math.pi/4 ## 结果
print("Result:",S_sur)