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


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

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

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


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


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


加好友 发短信
等级:新手上路 帖子:15 积分:237 威望:0 精华:0 注册:2009/10/3 15:33:00
  发帖心情 Post By:2010/2/27 23:59:00


图片点击可在新窗口打开查看此主题相关图片如下:test5000.jpg
图片点击可在新窗口打开查看



图片点击可在新窗口打开查看此主题相关图片如下:test10.jpg
图片点击可在新窗口打开查看


许老师,您好!

同样的设置,运行5000天和运行10天得到的同一天的星历数据,竟然不一样。

我实在找不出原因。麻烦您看看。


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


加好友 发短信
等级:新手上路 帖子:15 积分:237 威望:0 精华:0 注册:2009/10/3 15:33:00
  发帖心情 Post By:2010/2/28 0:06:00

我只将您程序中的1000限制改为了10000,别的都没动。
另外根据此“http://support.microsoft.com/kb/175500”,可去除IE的限制。

对比两者看,我输入的时间没变,但程序输出的时间却有稍许的变化。

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


加好友 发短信
等级:论坛游民 帖子:35 积分:1266 威望:0 精华:0 注册:2009/6/7 12:15:00
  发帖心情 Post By:2010/2/28 13:45:00

程序总有个计算精度和范围的啊,你强制让他计算那么多当然有误差了

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


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

不是个数的问题,100个与5000个没有区别的。

 

因为间隔的天数指力学时,而不是UTC,所以不是以每隔UTC的1天增长星历的。

 

如果使用力学时,应当不会这样。


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


加好友 发短信
等级:新手上路 帖子:15 积分:237 威望:0 精华:0 注册:2009/10/3 15:33:00
  发帖心情 Post By:2010/3/1 23:08:00

谢谢,许老师的回复!

DISLIN,是个不错的图形库,支持JAVA,里面有支持地图的库。

http://www.mps.mpg.de/dislin/windows.html

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


加好友 发短信
等级:新手上路 帖子:2 积分:212 威望:0 精华:0 注册:2010/2/5 16:33:00
  发帖心情 Post By:2010/3/8 10:14:00

楼主辛苦了,谢谢您将劳动成果与我们分享,谢谢..

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


加好友 发短信
等级:新手上路 帖子:15 积分:237 威望:0 精华:0 注册:2009/10/3 15:33:00
  发帖心情 Post By:2010/3/11 23:20:00


图片点击可在新窗口打开查看此主题相关图片如下:china.jpg
图片点击可在新窗口打开查看


许先生,这个就是用dislin画的,很方便的。投影有很多选择,国家随便加。


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


加好友 发短信
等级:论坛游侠 帖子:159 积分:583 威望:0 精华:1 注册:2008/9/3 16:55:00
  发帖心情 Post By:2010/3/15 14:52:00

许老师你好:

能不能把恒星的当前 方位角  和 高度角 显示出来,谢谢

 

[此贴子已经被作者于2010-4-3 13:03:45编辑过]

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


加好友 发短信
等级:新手上路 帖子:1 积分:191 威望:0 精华:0 注册:2010/3/31 12:25:00
回历算法问题,急  发帖心情 Post By:2010/3/31 14:55:00

许老师,真的是牛人,谢谢你的源码;我现在需要用到您写得公历转回历的算法,但我弄了两天都没搞对;请您帮帮我,急用,大家也帮我看看问题在哪?



unsigned short uiHajraConvert(struct HajraConvdate *Date)
{
          U64  ulA,ulB,ulJD,u64Year,u64Month,u64Day;
            //因为我用的单片机不能支持浮点型数,所以就用长整型代替,
        //因此为了保证精度,所以程序在很多地方都是先扩大倍数然后再缩小


u64Year=Date->solaryear;


u64Month=Date->solarmonth;


u64Day=Date->solardate;
            //我公历的初始化传入的数据是2000年1月1日


//计算儒略日ulJD

if(u64Month<=2)

{


u64Year--;


u64Month+=12;

}

ulA=u64Year/100;

if(2+ulA/4>=ulA)

{

          ulB=2-ulA+ulA/4;

          ulJD=36525*(u64Year+4716)/100+3060010*(u64Month+1)/100000+u64Day+ulB-1524;

}

else

{


ulB=ulA-ulA/4-2;


ulJD=36525*(u64Year+4716)/100+3060010*(u64Month+1)/100000+u64Day-ulB-1524;

}


U64 z,y,m,d,k,d0;


d0=ulJD-2451545;
          //程序爬到这里时求出的ulJD==2451545,这数据应该是对的,但下面求出来的回历不正确,请帮我看看

//
d = d0 + 503105;          z = int2((d+0.1)/10631);  //10631为一周期(30年)
//
d -= z*10631;            y = int2((d+0.5)/354.366); //加0.5的作用是保证闰年正确
//
d -= int2(y*354.366+0.5); m = int2((d+0.11)/29.51);
//
d -= int2(m*29.51+0.5);


d = d0 + 503105;          z = (d*10+1)/106310;  //10631为一周期(30年)

d -= z*10631;            y = (d*1000+500)/354366; //加0.5的作用是保证闰年正确

d -= (y*354366+500)/1000; m = (d*100+11)/2951;

d -= (m*2951+50)/100;


Date->HajraYear=z*30+y+1;

Date->HajraMonth=m+1;

Date->HajraDate=d+1;

//
U64  n,d0,k,A,B,y,m,d;

//
d0=ulJD;
//
n = d0+503105;
//    k = (n*10+1)/106310;
//
A = n - k*10631;
//
//
y = (A*10+5)*100/354366;
//   
//
B = A-(y*354366+500)/1000;
//
//
m = (B*100+11)/2951;
//
//
d = B-(295001*m+5000)/10000;

//
最后,年记做 y+1+k*30,月记做 m+1,日记做 d+1


//
Date->HajraYear=y+1+k*30;
//
Date->HajraMonth=m+1;
//
Date->HajraDate=d+1;


return 0;
}

[此贴子已经被作者于2010-3-31 16:03:25编辑过]

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

返回版面帖子列表

寿星万年历5.08(测试版)








签名