中华农历论坛知识讨论区历法知识 → 寿星万年历5.08(测试版)


  共有936135人关注过本帖树形打印

主题:寿星万年历5.08(测试版)

帅哥哟,离线,有人找我吗?
HCN
  141楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:2 积分:192 威望:0 精华:0 注册:2008/12/31 20:40:00
  发帖心情 Post By:2008/12/31 20:44:00

大家新年好


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
lxm0521
  142楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:50 积分:1279 威望:0 精华:0 注册:2008/11/4 18:17:00
[讨论]  发帖心情 Post By:2009/1/3 17:24:00

尊敬的许老师:您好,非常感谢 您的开源精神,这大大提高了我们对对中国传统的热情,我在使用您的寿星万年历的过程中有几点拙见:

一、您似乎特别注重程序的体积(当然更注重功能),在您的后续版本中,阅读您的代码变得有点困难了,我没有学过JavaScript,但学过C语言和VB,在看了您的程序后,我又看了JavaScript的资料,现在基本能看懂程序,我希望您在今后的版本中能尽量带上详细的注释,这样将更加提高我们对中国历法的研究热情,您其实大可不必关心代码的多少,况且只有几百K而已,重要的是能引起大家对自己文化的热心。

二、我从网上也下到一个采用天文算法的历法软件,精度不如寿星万年历,但也已经很高,我在它里面发现,在计算日升日落和天体坐标时,它不仅考虑了海拔的影响,同时还考虑了温度和气压的影响,我觉得这一点特别值得借鉴。我把这个小程序发到附件里了,您看一下。

三、我这里有一个全国2500多个县市的经纬度和海拔高度的数据库,同时也发到附件里,或许对您有帮助。

再次感谢许老师!切盼答复!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
xjw01
  143楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蝙蝠侠 帖子:866 积分:3804 威望:3 精华:20 注册:2008/3/20 22:14:00
  发帖心情 Post By:2009/1/4 11:43:00

以下是引用lxm0521在2009-1-3 17:24:00的发言:

尊敬的许老师:您好,非常感谢 您的开源精神,这大大提高了我们对对中国传统的热情,我在使用您的寿星万年历的过程中有几点拙见:

一、您似乎特别注重程序的体积(当然更注重功能),在您的后续版本中,阅读您的代码变得有点困难了,我没有学过JavaScript,但学过C语言和VB,在看了您的程序后,我又看了JavaScript的资料,现在基本能看懂程序,我希望您在今后的版本中能尽量带上详细的注释,这样将更加提高我们对中国历法的研究热情,您其实大可不必关心代码的多少,况且只有几百K而已,重要的是能引起大家对自己文化的热心。

二、我从网上也下到一个采用天文算法的历法软件,精度不如寿星万年历,但也已经很高,我在它里面发现,在计算日升日落和天体坐标时,它不仅考虑了海拔的影响,同时还考虑了温度和气压的影响,我觉得这一点特别值得借鉴。我把这个小程序发到附件里了,您看一下。

三、我这里有一个全国2500多个县市的经纬度和海拔高度的数据库,同时也发到附件里,或许对您有帮助。

再次感谢许老师!切盼答复!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:

大家新年好!

最近很忙,不太有空搞万年历了。

关于精度:通常,日月出没计算精确到1分钟已足够。不太有必要准确计算到秒。这就意味着没有必要过多考虑大气状态、海拔等因素。在天体的高度角比较大时,可以考虑大气温度、压强等因素,以便取得超高精度的天体位置,当天体的高度角接近于零时,大气折射十分严重,以致于使天体变形(视觉上),在这种情况下,无法把大气折射计算得很准确,换句话说,日月出没的精度计算到秒难度很大。再者,各地的地形、地貌相差太大,在福建沿海,大多丘陵,日月出没时大多受到小山丘的阻档。当然,在平原地区,情况要好得多,但是,即使在这种情况下,考虑大气的温度及压强,对日月出没的计算精度也不会有大幅度的提高。这是个什么概念呢?:假如大气因素通常造成日月升降产生2分钟(+-1分钟)的误差,那么《寿星万年历》使用平均情况下的大气折射正,误差有望控制在1分钟以内。相反,如果考虑比较严格的修正方法使精度提高10倍(其实不太可能),误差仍有12秒,何况还有地形引起的误差。我们可以查一下每年的《中国天文年历》,就会发现,书中的“蒙气差”表通常只给出高度角在20度以上的蒙气修正(大气折射修正)。低于20度,尤其是在地平线上的时候,精度实在糟糕,所以在地平线上的蒙气修正通常使用一些经验修正法。

 

感谢您提供经纬度资料,有空的时候一定拜读。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
xjw01
  144楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蝙蝠侠 帖子:866 积分:3804 威望:3 精华:20 注册:2008/3/20 22:14:00
  发帖心情 Post By:2009/1/4 12:21:00

关于注释:

1、我确实有打算编写一个完整的注释,便时间精力有限,得以后再考虑补上。

2、关于算法说明:这是一个比较大的项目,工作量与编写《寿星万年历》的源代码部分花费的时间可能差不多,只能以后再考虑了。编写一个《寿星万年历》,花费在编写内核代码上的时间,占20%左右,花费在修补Bug及调试、版面设计等的间大约在20%左右,花费在算法设计上的时间大约占40%,花费在算法所需的基本数据的整理、提取上花费的时间约为10%,写说明书5%至10%。

举例来说:为了画出《寿星万年历》中的那个地图,我经常躺在床上想算法或在网络上找地图等,使用什么方法可以在万年历中整合一个地图?我花费了几天时间,每天可能半小时,这是算法的设计阶段。然后我花费了6个小时,提取地图数据,后来我又花费了3个小时把地图整合到万年历中,并作调试。

但不管怎么说,以上没有涉及算法的详细说明,仅在帮说明中涉及少量的说明。要写一个完整的算法说明,可能需要一两个月吧。

目前《寿星万年历》的源代码约200k,其中库数部数约占70k,注释30k,程序代码80k,htm页面代码20k

《寿星万年历》中的源代码大量使用“物件”、“类”的方式实现,在没有足够注释的情况下,确实会给程序阅读造成困难。

使用“类、物件”也有很多很处,他可以帮助程序员处理多达几万行的代码,如果使用“函数”来管理程序,处理2000行以上的代码就会有点力不从心。当你管理程序觉得轻松后,就有足够的精力来优化程序的性能。很多程序使用函数来管理,虽然也很长,但大多数是数据库造成的,内核程序不长,所以他们会使用函数来管理。这是我个人的一些观点。如果javascript不提供物件或类等基于“对象”功能,我不会使用javascript来编写万年历的,而会考虑使用c++。不少人说,《寿星万年历》运行速度比较快,这正是因我本人花了不少时间优化程序的结果。

总之,使用“函数”与“物件、类”各有优点,各人的习惯不同就有不同的选择。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
esnake
  145楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:40 积分:531 威望:0 精华:0 注册:2005/10/27 21:24:00
  发帖心情 Post By:2009/1/4 12:33:00

反应一个Bug:

公元690-700年的年历有误,本来是十一月却显示为正月。

输入公历690年1月,确定后可以看到1-15日为正月,16-31日为是农历十二月,690年2月15日又为一月小,实际上690年1月1日~15日应该是农历十一月,请许老师检查一下。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
lxm0521
  146楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:50 积分:1279 威望:0 精华:0 注册:2008/11/4 18:17:00
  发帖心情 Post By:2009/1/4 12:52:00

以下是引用esnake在2009-1-4 12:33:00的发言:

反应一个Bug:

公元690-700年的年历有误,本来是十一月却显示为正月。

输入公历690年1月,确定后可以看到1-15日为正月,16-31日为是农历十二月,690年2月15日又为一月小,实际上690年1月1日~15日应该是农历十一月,请许老师检查一下。

       许老师是这么说的:

       If v2 Mod 12 = 0 Then mc = "正"
       If v2 = 2 Then mc = "一" ' //689.12.18至701.01.14 建子为正月,建寅为一月,其它不变


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
lxm0521
  147楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:50 积分:1279 威望:0 精华:0 注册:2008/11/4 18:17:00
  发帖心情 Post By:2009/1/4 12:58:00

以下是引用xjw01在2009-1-4 12:21:00的发言:

关于注释:

1、我确实有打算编写一个完整的注释,便时间精力有限,得以后再考虑补上。

2、关于算法说明:这是一个比较大的项目,工作量与编写《寿星万年历》的源代码部分花费的时间可能差不多,只能以后再考虑了。编写一个《寿星万年历》,花费在编写内核代码上的时间,占20%左右,花费在修补Bug及调试、版面设计等的间大约在20%左右,花费在算法设计上的时间大约占40%,花费在算法所需的基本数据的整理、提取上花费的时间约为10%,写说明书5%至10%。

举例来说:为了画出《寿星万年历》中的那个地图,我经常躺在床上想算法或在网络上找地图等,使用什么方法可以在万年历中整合一个地图?我花费了几天时间,每天可能半小时,这是算法的设计阶段。然后我花费了6个小时,提取地图数据,后来我又花费了3个小时把地图整合到万年历中,并作调试。

但不管怎么说,以上没有涉及算法的详细说明,仅在帮说明中涉及少量的说明。要写一个完整的算法说明,可能需要一两个月吧。

目前《寿星万年历》的源代码约200k,其中库数部数约占70k,注释30k,程序代码80k,htm页面代码20k

《寿星万年历》中的源代码大量使用“物件”、“类”的方式实现,在没有足够注释的情况下,确实会给程序阅读造成困难。

使用“类、物件”也有很多很处,他可以帮助程序员处理多达几万行的代码,如果使用“函数”来管理程序,处理2000行以上的代码就会有点力不从心。当你管理程序觉得轻松后,就有足够的精力来优化程序的性能。很多程序使用函数来管理,虽然也很长,但大多数是数据库造成的,内核程序不长,所以他们会使用函数来管理。这是我个人的一些观点。如果javascript不提供物件或类等基于“对象”功能,我不会使用javascript来编写万年历的,而会考虑使用c++。不少人说,《寿星万年历》运行速度比较快,这正是因我本人花了不少时间优化程序的结果。

总之,使用“函数”与“物件、类”各有优点,各人的习惯不同就有不同的选择。

    谢谢许老师中肯的答复,非常感谢您在历法编程方面为大家作出的努力

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
esnake
  148楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:40 积分:531 威望:0 精华:0 注册:2005/10/27 21:24:00
  发帖心情 Post By:2009/1/4 12:59:00

原来如此,只是看着奇怪,从正月一下过到十二月,然后又回到一月。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
浪-淘-沙
  149楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:2068 积分:4263 威望:5 精华:4 注册:2008/11/13 21:03:00
  发帖心情 Post By:2009/1/4 13:00:00

以下是引用lxm0521在2009-1-3 17:24:00的发言:

三、我这里有一个全国2500多个县市的经纬度和海拔高度的数据库,同时也发到附件里,..........

我想请问一下lxm0521兄,各地的海拔高度是一个平均值(比如整个城市包括郊区郊县)还是某个点的高程数据?另外,这个高程数据是按地面来测量的,还是按建筑物的顶面(假若这个点上正好有一幢高楼)来测量的?

我用你的附表查到杭州的高程是43.2(米),似乎与实际不太相符。杭州市区的大多数地面高程不超过10米。西湖湖面的高程在10米左右。40来米高的地方是西湖边的一些小山,比如孤山高度30多米,丁家山高度40多米,雷峰(雷峰塔所在的山)高度约40米。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
lxm0521
  150楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:50 积分:1279 威望:0 精华:0 注册:2008/11/4 18:17:00
  发帖心情 Post By:2009/1/4 13:32:00

以下是引用浪-淘-沙在2009-1-4 13:00:00的发言:
以下是引用lxm0521在2009-1-3 17:24:00的发言:

三、我这里有一个全国2500多个县市的经纬度和海拔高度的数据库,同时也发到附件里,..........

我想请问一下lxm0521兄,各地的海拔高度是一个平均值(比如整个城市包括郊区郊县)还是某个点的高程数据?另外,这个高程数据是按地面来测量的,还是按建筑物的顶面(假若这个点上正好有一幢高楼)来测量的?

我用你的附表查到杭州的高程是43.2(米),似乎与实际不太相符。杭州市区的大多数地面高程不超过10米。西湖湖面的高程在10米左右。40来米高的地方是西湖边的一些小山,比如孤山高度30多米,丁家山高度40多米,雷峰(雷峰塔所在的山)高度约40米。

   您好,这个数据库并不是我整理的,不过您提醒了我,我去网上查看了一下,我从其他网站上查到的杭州海拔也是43.2米,此外我查了一下GoogleEarth,发现杭州中心海拔大概20米左右,另外我还看到一个《中国各地海拔高度分布图》,显示杭州附近海拔46米,根据这一系列的资料,这个43.2米应该是平均高度,况且我们说一个地区的海拔也只能尽可能取几个点的平均海拔,如果非要具体到某个点,除非我们有详细的数据库或者手头有海拔高度计,这样在使用《寿星万年历》的过程中就可以精确输入自己所在位置的海拔高度了,不过这或许意义不是很大,对观测日月食不会造成太大的误差,对于日升日落,也没必要精确到自己所在点的秒数,用一个平均值替代就足够了。

   以上仅仅是我的一点个人拙见,谢谢你!

另附《中国各地海拔高度分布图》网址http://www.satcomengr.com/Satcom/TABLES/altitude.htm


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

寿星万年历5.08(测试版)








签名