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


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

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

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


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

已发布V4.66版

1、增加了时差表(按年输出),即平太阳时与真太阳时的时间差

2、把时差函数移到全局函数文件中


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


加好友 发短信
等级:新手上路 帖子:5 积分:335 威望:0 精华:0 注册:2009/10/11 21:50:00
  发帖心情 Post By:2009/10/17 18:41:00

谢谢,使用并关注中ing

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


加好友 发短信
等级:新手上路 帖子:26 积分:667 威望:0 精华:0 注册:2008/7/18 14:10:00
  发帖心情 Post By:2009/10/17 21:59:00

很好,看介绍的确修改了很多。
至于界面,个人感觉看着不舒服。虽然简化分类了,但看着小气了。想程序名字字体小小,而地名栏,老的两行对齐,新的错开,总觉得不好看。

不过无论界面做的如何,采用html页面始终做不到最好最理想。

建议另外出个老版本的升级。

可以吗

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


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

已发布4.67版:

1、增加了几颗恒星,主要是加了一个织女,星号为699

在天之文论坛讨论一个问题用到织女,所以选加入这粒

 

2、增加一些日食计算原理

 

本来是想完整写一篇日食计算原理的手册,现在发现,计算的细节很多,三言两句说不清楚。其实,日食计算方法,大部分没有超出高中《解析几何》的范畴,不太有必要给出计算说明,有点浪费时间了。不给计算过程,每次检查程、优化程序时,以得重新笔算,真是麻烦。


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


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

空点直线过(x1,y1,z1)和(x2,y2,z2),求这条直线与椭球(地球)的交点,不知有没有更简便的方法。我的算法有点复杂,一点都不好用。

 

我在求解中心线、日食界线用到了直线与椭球交线的求解。


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


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

我不知许兄是如何求解直线与椭球的交点的。

 

我觉得用参数方程来表示直线,似乎比较简洁:

x=x1+m*t

y=y1+n*t

z=z1+p*t

此处,t是参数,m,n,p是常数

m=x2-x1

n=y2-y1

p=z2-z1

 

而地球表面(旋转椭球面)的方程为:

x^2 / a^2 + y^2 / a^2 + z^2 / c^2 = 1

此处,a为赤道半径,c为极半径,都是已知数。

 

把直线方程代入椭球方程,得到一个关于 t 的一元二次方程式,有现成的求根公式,也有现成的程序算法,

就可以解出参数t,有二个解,根据实际情况选其中一个解。毕竟月亮的影子在地球上只可能是一个点,不可能是二个点。

(如果方程无实数解,说明直线与地球不相交。)

(许兄以前的日食预报,往往把地球的另一面也报出来了,但实际上,地球的另一面是看不到日食的。)

 

解出 t ,再代回到直线的参数方程,就可得到交点的坐标:x,y,z。

至于如何把x,y,z化为地球的经纬度,我想许兄已经有现成的算法了。

 

 


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


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

判断月亮在地球的投影。

由于解得的 t 往往是二个值(如果直线与地球相切,那么交点只有一个)。

那么离月亮近的那个交点才是产生日食的投影点。

 

把求得的t1 t2分别代回直线的参数方程,得到二个交点坐标:

(X',Y',Z'),(X",Y",Z")。

各自与月亮坐标(x2,y2,z2)求距离。哪个近的那个就是需要的交点。


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


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

浪淘沙的方法比我的好得多。我的方法在帮助中有讲到,我的那个方法不好。

我计算的步骤:

1、利用空间直线的两点式方程(x-x1)/(x2-x1)=(y-y1)/(y2-y1)=(z-z1)/(z2-z1)

把它转为y=ax+b,z=cx+d的形式

2、代入椭球方程

3、得到两个x的值,再由y=ax+b,z=cx+d算出y和z

 

这个方法有两个问题:

1、当x2-x1很小时,极端情况下为0,a和c很大或无穷大,无法求解。因此在程序设计时,还要判断|y2-y1|与|x2-x1|的大小,如果|y2-y1|比较大,则对x和y轮换求解,这造成麻烦。

虽然,在草稿纸上计算,觉得这个方法还马马虎虎,但实际编程计算时,因为这个轮换操作,感觉很不好。

2、求解a,b,c,d的值也很费事

当然,主要还是那个轮换很麻烦

 


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


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

 浪-淘-沙版主的数学功底出我意料,以后得多向你学习。关于日月食计算,我还有几个算法需要改进,以后再向你请教了。谢谢版主。

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


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

以下是引用浪-淘-沙在2009-10-21 1:15:00的发言:

至于如何把x,y,z化为地球的经纬度,我想许兄已经有现成的算法了。

 

我这是么做的:

 

1、x,y,z求出后,显然由x和y就可以得到经度J=atan2(y,x),起算点是x轴,即x轴为0经度。如果已知x轴的赤经为v,那么(x,y,z)点相对于春风点的经度为J+v,如果已知格林尼治恒星时g,那么(x,y,z)点的地理经度为g-(J+v)

 

2、纬度

显然,地心纬度是tanφ'=z/sqrt(x^2+y^2),再利用他转换为地理纬度。

为了表述上符合数学习惯,上式的分母写作y,分子写作x

由于该点在地球上,所以x^2/a^2+y^2/b^2=1(即该点在椭圆上)

求微分后得dy/dx=-(b/a)^2*x/y

dy/dx是切线的斜率,tanφ=-dx/dy,φ是地理纬度。所以有tanφ=(a/b)^2tanφ'。当然,写成原来的x,y,z,应变为:

tanφ

=(a^2/b^2)tanφ'

=(a^2/b^2)z/sqrt(x^2+y^2)

 

 

 

 

 

 

 


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

返回版面帖子列表

寿星万年历5.08(测试版)








签名