用此方法计算任意时刻的太阳高度分为以下几个步骤:
1.算太阳直射点的经纬度。太阳直射点的经度可以根据你所在地的地方时来推算,纬度则利用日期推算。公式为C=arcsin(sinAsinB)。A:从春分日起算到该日天数/半年天数*π B:黄赤交角
2.计算该地与太阳直射点的最短距离(或最短距离所对的圆心角度数),得到两地太阳高度差。具体方法等会详细介绍。
3.算该地太阳高度。H=90º-太阳高度差。
例:某地的经纬度为(30ºN,120ºE),求该地夏至日上午10:00的太阳高度?
根据地方时算太阳直射点的经度。
120ºE+(2*15º)=150ºE
所以太阳直射点的地理坐标为[23º26′N,150ºE]。
计算两地最短距离所对的圆心角,这个我要详细说一下。
首先,我们要以地心为原点建立一个空间直角坐标系。将A、c两地及其所在经线与赤道的交点与地心连接起来,并过点A、C作赤道半径OE、OF的垂线,垂足为B、D。过点A作CB的垂线,垂足为G。α为C地的纬度,β为A地的纬度,γ为两地经度差。φ就是我们要求的圆心角。
在Rt△COB中
CB=Oc*sinα=6371*sin30º=3185.50km
OB=√(Oc^2-CB^2)=√(6371^2-3185.50^2)≈5517.45km
在Rt△AOD中
AD=OA*sinβ=6371*sin23º26′≈2533.63km
OD=√(OA^2-AD^2)≈5845.54km
在△BOD中
BD=√(OD^2+OB^2-2*OB*OD*cosγ)=√(5845.54^2+5517.45^2-2*5517.45*5845.54*cos30º)≈2957.98km
在Rt△AGC中
CG=CB-GB=3185.50-2533.63=651.87km
GA=BD=2957.98km
AC=√(CG^2+GA^2)=√(651.87^2+2957.98^2)≈3028.96km
在△AOC中
φ=arccos[(Oc^2+OA^2-AC^2)/(2*OC*OA)=27º30′
故该地的10:00的太阳高度为
H=90º-27º30′=62º30′
可见,难度最大的就是计算两地球面最短距离的圆心角,当然,如果嫌麻烦也可以不使用我的方法,计算两地最短球面距离有公式:
设A、B经纬度为(jA,WA)(jB,WB),则半径为R球面上两点间最短距离为
弧AB=R*arccos[sin(WA)sin(WB)+cos(WA)Cos(WB)c0S(jA-jB)]
求出弧长再转化为圆心角的度数就可以了。