中华农历论坛知识讨论区历法知识 → 如何计算天体的升降


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

主题:如何计算天体的升降

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


加好友 发短信
等级:蝙蝠侠 帖子:866 积分:3804 威望:3 精华:20 注册:2008/3/20 22:14:00
如何计算天体的升降  发帖心情 Post By:2009/6/19 15:57:00

您无权查看精华帖子

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


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

谢谢许兄提供日出日落的算法。

仔细看了二遍,算法的描述基本理解了。

如何将它用程序代码表示出来,我还得慢慢研究。


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


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

<script language=javascript>
/******************
太阳升起时间计算。xjw01,2009.6.21
******************/

//===============数学工具==================

function sin(x)  { return Math.sin(x);   }
function cos(x)  { return Math.cos(x);   }
function rad2rrad(v){//对超过-PI到PI的角度转为-PI到PI
  v=v % (2*Math.PI);
  if(v<=-Math.PI) return v+2*Math.PI;
  if(v>Math.PI) return v-2*Math.PI;
  return v;
}
function timeStr(jd){ //取儒略日数中的时间
 var T=jd+0.5;
 T=(T-Math.floor(T))*24;
 var h,m,s;
 h=Math.floor(T); T=(T-h)*60;
 m=Math.floor(T); T=(T-m)*60;
 s=Math.floor(T+0.5);
 return h+':'+m+':'+s;
}

var rad  = 180*3600/Math.PI;

//===============太阳升起==================

function sunLat(t){ //太阳黄经,t为儒略世纪数UT
  t += (32*(t+1.8)*(t+1.8)-20)/86400/36525;  //儒略世纪年数,力学时
  var J = 48950621.66 + 6283319653.318*t + 53*t*t - 994
   +334166 * cos( 4.669257+  628.307585*t)
   +  3489 * cos( 4.6261  + 1256.61517*t )
   +2060.6 * cos( 2.67823 +  628.307585*t ) * t;
 return J/10000000;
}

function sheng(jd,L,fa,TZ){ //jd儒略日平午,L地理经度,fa地理纬度,TZ时区,返回太阳升起时间
 jd-=TZ;
 var T=jd/36525;
 var J = sunLat(T), sinJ=sin(J), cosJ=cos(J); //太阳黄经以及它的正余弦值
 var gst = 2*Math.PI*(0.7790572732640 + 1.00273781191135448*jd) //恒星时(子午圈位置)
          + (0.014506 + 4612.15739966*T + 1.39667721*T*T)/rad;

 var E = (84381.4060 -46.836769*T)/rad; //黄赤交角

 var A=Math.atan2( sinJ*cos(E), cosJ); //太阳赤经
 var D=Math.asin ( sin(E)*sinJ );      //太阳赤纬
 var cosH0 = (sin(-50*60/rad) - sin(fa)*sin(D) ) / ( cos(fa)*cos(D) ); //日出的时角计算
 if(cosH0>=1||cosH0<=-1)  return 0;
 var H0 = -Math.acos( cosH0 ); //升点时角(日出)
 var H = gst-L-A; //太阳时角
 return jd - rad2rrad(H-H0)/6.28+TZ;
}

//===============测试代码==================

//北京的地标 -116°23' 纬度 + 39°54'

L = -(116+23/60)/180*Math.PI;
fa= +( 39+54/60)/180*Math.PI;

for(i=0;i<30;i++){ //计算30天测试
 T=i; //T从2000年1月1.5日起算
 T = sheng(T,L,fa,8/24);
 T = sheng(T,L,fa,8/24);
 document.write('T=' + i +' '+ timeStr(T) + '<br>');
}

</script>

[此贴子已经被作者于2009-6-22 8:36:13编辑过]

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


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

以上程序,2000年1月1日(T=0)至2000年1月30日(T=29)的计算结果,北京:

 

T=0 7:35:58
T=1 7:36:6
T=2 7:36:13
T=3 7:36:17
T=4 7:36:19
T=5 7:36:19
T=6 7:36:17
T=7 7:36:12
T=8 7:36:6
T=9 7:35:57
T=10 7:35:45
T=11 7:35:32
T=12 7:35:17
T=13 7:34:59
T=14 7:34:39
T=15 7:34:17
T=16 7:33:53
T=17 7:33:26
T=18 7:32:58
T=19 7:32:28
T=20 7:31:55
T=21 7:31:20
T=22 7:30:44
T=23 7:30:5
T=24 7:29:25
T=25 7:28:42
T=26 7:27:58
T=27 7:27:12
T=28 7:26:24
T=29 7:25:34


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


加好友 发短信
等级:论坛游民 帖子:54 积分:1008 威望:0 精华:0 注册:2007/6/16 13:30:00
  发帖心情 Post By:2011/5/13 6:49:00

为什么定义在地平线下50角分而不是0度呢?

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


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

以下是引用jyarmy在2011-5-13 6:49:00的发言:
为什么定义在地平线下50角分而不是0度呢?

大气折射及太阳视面的共同作用。

 

当你眼睛看到太阳的顶面升出地面时。其实太阳的中心还在地面(地平线)之下15角分(不考虑大气折射)。

 

而大气折射,可以让地平线之下的东西提前35角分就被你看到了。


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


加好友 发短信
等级:论坛游民 帖子:54 积分:1008 威望:0 精华:0 注册:2007/6/16 13:30:00
  发帖心情 Post By:2011/5/16 21:45:00

以下是引用浪-淘-沙在2011-5-13 9:42:00的发言:

大气折射及太阳视面的共同作用。


 


当你眼睛看到太阳的顶面升出地面时。其实太阳的中心还在地面(地平线)之下15角分(不考虑大气折射)。


 


而大气折射,可以让地平线之下的东西提前35角分就被你看到了。



谢谢,终于明白了

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

返回版面帖子列表

如何计算天体的升降








签名