以下是引用xjw01在2008-12-19 22:26:00的发言:已发布V3.22版
1、改进坐标变换相差算法——使用了严格的周日视差修正算法。
2、改进sun_moon()类,在赤道坐标进行视差修正。
3、增加了日食甚的参考计算。注意:只是算出了日月中心角距离的最小值发生的时刻,有无日食还须人工核对一下半径和。
食甚时刻使用了迭代算法,精度较高。
4、增加了海拨高度及任意地标输入。
判断有无日食,只要日月半径和的值小于日月中心角距值,就算是能发生日食的.
判断是否日全食,要计算日的半径(以Rs表示),月的半径(Rm),日月中心角距(Lsm),所以请许兄提供日月半径和(Rsm)的值的同时,也分别提供日半径,月半径。
先判断Rm-Rs,若为负(即月亮的视半径小于太阳的视半径),至多可能发生日环食或日偏食。若为正或为零,至多可能发生日全食或日偏食。(这里面还有个问题,就是从初亏到复圆这一段时间,月亮的视半径变化其实很大的,太阳的视半径几乎没多少变化。)
当 Rm (月半径) 大于等于 Rs(日半径) 时,判断Rm-(Rs+Lsm)的值。其最大值大于等于零时,就是全食。其值从负值慢慢增加到刚好为0时(内切时刻,(初亏时刻是外切时刻)),就是食既时刻,达到最大值时就是食甚时刻,然后慢慢减小到0时,就是生光时刻。(全食带之外的地区当然只能观看到偏食了)。若Rm-(Rs+Lsm)的值从头至尾都是小于0,且Lsm < Rm+Rs,则是偏食。
当 Rm 小于 Rs 时,判断Rs-(Rm+Lsm)的值。其最大值大于等于零时,就是环食。对于环食,没有食既及生光的概念。但可以算出二个内切时刻(Rs-(Rm+Lsm)的值从负值增大到零时就是第一次内切。然后继续增大到最大值(就是食甚时刻,再慢慢减小到0,就是第二次内切时刻)。(同理,日环食带之外的地区当然只能观看到偏食了)。
不知我的上述判断是否正确,请许兄及其他同好指正。
如果可能,请许兄在软件里直接显示出:Rs(日视半径),Rm(月视半径),Lsm(日月中心角距),
Rm<Rs时,显示Rs-(Rm+Lsm)
Rm>=Rs时,显示Rm-(Rs+Lsm)
这样,我们就可以粗略判断初亏,食既,食甚,生光,复圆时刻。