太阳方位计算原理

首先NOAA提供的计算过程是一张Excel表格,这张表变量有4个,分别是经、纬度、时区、时间,在这里我们取北京的经纬度(注意:要转换为十进制,不能是度分秒),时区是东8区,为+8小时,日期设置为2012年1月21日(大寒日)。

时间为8点整到15点整,每隔半小时计算一次,那这里咱们的连续日照时间就是30分钟了,表格计算逻辑还是很清晰的,我用了几个小时将它翻译为代码(可转注源),请看我的笔记,笔记内有具体计算过程,以及结果。

注:本文不涉及创新,只讲解原理,单纯是讲解计算过程

A 高度角的计算

首先是高度角的计算公式,先求天顶角,然后取余角

\[Altitude = { π \over 2} – Zenith\]
\[ Zenith = arccos(sin(lat)sin(dec) + cos(lat)cos(dec)cos(ha)) \]

上式,Altitude 为高度角,Zenith为天顶角,lat为纬度(弧度制),dec为太阳赤纬(Declination),ha为太阳时角。

A1 太阳赤纬的计算

由上可见求出天顶角就可以求出高度角,要想求得天顶角,还有两个量需要求,一个是太阳赤纬,另一个是太阳时角

\[dec= arcsin(sin(toe)sin(sal))\]

上是toe为真黄赤交角(True Obliq Ecliptic),sal为太阳视黄经(Sun Apparent Longtitude),sal的计算跳到④

\[toe = moe + corr\]

上式中moe为平黄赤交角(Mean Obliq Ecliptic),corr为交角修正

\[moe = 23 + (26 + sec / 60) / 60\]

其中

\[sec = 21.448 – T * (46.815 + T * (0.00059 – T * 0.001813))\]
\[corr = 0.00256 * cos(rad(125.04 – 1934.136 * T))\]

其中T为儒略世纪,rad为角度转弧度的函数

A1.1 儒略日与儒略世纪的计算

儒略世纪Julian Century)是一百儒略年的时间长度,从1984年起作为所有天文历表的时间单位。

\[T = { t -2451545 \over 36525} \]

上式中t为儒略日

儒略日Julian Day)是在儒略周期内以连续的日数计算时间的计时法

\[t= int(365.25(Y+4716))+int(30.6001(M+1))+D+B-1524.5\]

其中int为取整函数,Y为年份,M为月份,D为日期(可带上时间转换为一天的小数)

\[B = 2 – A + int(A/4)\]
\[A = int(Y / 100)\]
A1.2 太阳视黄经(Sun Apparent Longtitude)的计算
\[sal = stl – 0.00569 – 0.00478 * sin(rad(125.04 – 1934.136 * T))\]

其中 stl 为太阳真黄经(Sun True Longtitude)

\[stl = gmsl + c\]

其中 gmsl 是太阳几何平黄经(Geometry Mean Sun Longtitude),c 是太阳中心差

\[gmsl = 280.46646 + T* (36000.76983 + T* 0.0003032)\]
\[c = sin(m) * (1.914602 – T* (0.004817 + 0.000014 * T)) + sin(2 * m) * (0.019993 – 0.000101 * T) + sin(3 * m) * 0.000289\]

其中 m 是太阳平近点角(Geometry Mean Anom Sun)

\[m = 357.52911 + T* (35999.05029 – 0.0001537 * T)\]

至此,太阳赤纬的计算公式完整了。

A2 太阳时角的计算
guest
0 评论
Inline Feedbacks
View all comments