中华农历论坛知识讨论区历法知识 → 回复帖子

  回复帖子
用户名:   *您没有注册?
密码:   *忘记论坛密码?    标题采用“回复:XXX....”
主题标题:  *不得超过 200 个汉字
当前心情
上一页 发帖表情 下一页
内容
高级设置: 签名: 回帖通知:
 

主题最新回顾(发布时间:2010/3/30 17:32:00)
--  作者:heatzs
--  
这个还真不会,学习一下

主题最新回顾(发布时间:2010/3/7 21:27:00)
--  作者:buffettlamb
--  
许老师,我看了您们翻译的天文算法一书,里面有现成的地平线与黄道的交点的公式:

如果ε是黄赤交角,φ是观测站的纬度,θ是本地恒星时,那么在地平线(地面与天球交的大圆)与黄道相交的两点的黄经是(注意:只需计算1点,另一点与它相距180度):
tan(λ)=(-cos(θ))/(sin(ε)tan(φ)+cos(ε)*sin(θ))  (12.9)
黄道面与地平面的夹是:
cos(I)=cos(ε)*sin(φ)-sin(ε)*cos(φ)*sin(θ)  (12.10)

此问题已经解决,谢谢许老师!

主题最新回顾(发布时间:2010/3/7 14:43:00)
--  作者:buffettlamb
--  
许老师,您好!
您帮我看下9楼的程序,那是我根据您的算法,用您万年历中的函数编的,但出来的结果和正确值不一样。

别看图片的那个,那个是您万年历中计算太阳升降时刻的,您说没找到A,我才翻拍发上来的。

实在不好意思啊。我这个学生的这方面知识很差啊。


主题最新回顾(发布时间:2010/3/7 10:00:00)
--  作者:xjw01
--  

你的题目是“求助:如何求某时某地的东方地平线与黄道的交点?”

 

 

并不是求太阳运动,也不是求太阳升降。太阳升降问题:太阳在平行圈上运动,不是简单的在黄道上运动!

 

你现在求黄道与地平圈的交点。那只要给出黄道位置、地平圈位置,不就可以知道交点了。黄道位置用黄极描述,地平圈位置用天顶描述。在这个表述过程中,没用到“太阳”位置,苦苦计算太阳位置又作何用。


主题最新回顾(发布时间:2010/3/7 2:57:00)
--  作者:buffettlamb
--  
许老师,您好。我在您的代码上修改了下:
function sunShengD(jd2,L,fa){
//上升点计算。jd2儒略日(L当地平午UT),L地理经度,fa地理纬度
  var i;
  var now=new Date();
    var jd=jd2 - J2000;
  jd += now.getTimezoneOffset()/60/24+dt_T(jd); //转为力学时;
//求星历
    var T=jd/36525, E=(84381.4060 -46.836769*T)/rad; //黄赤交角
  var gst =pGST2(jd);  //恒星时
  var D=gst+L;
    var AA = atan2( -1*cos(E)*(1+sin(D)),cos(D))+90/radd; 
  return AA;
}

计算sunShengD(jd2,L,fa)    // L  = 121.46/radd, fa = 31.23/radd
得到:
2010-03-08 12:00  53°46'22.51"

和正确的上升点数值92°15'不一样。不知我错在哪里?


[此贴子已经被作者于2010-3-7 16:07:27编辑过]


主题最新回顾(发布时间:2010/3/6 12:29:00)
--  作者:buffettlamb
--  
太感谢许老师了!

上面那段里有VAR A,但看不清,弄张图片上来,看得清楚些。这段代码在EPH0.JS里。



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

主题最新回顾(发布时间:2010/3/6 10:01:00)
--  作者:xjw01
--  
以下是引用buffettlamb在2010-3-6 1:39:00的发言:
谢谢许老师,我对星历很感兴趣,很感谢您的指导,可我的天文知识太少太少了,正在努力学习中,刚知道了啥叫黄极。
能看懂您的,但不会继续推下去。

东方地平线交于黄道的那个点就叫上升点,我想知道它在黄道的经度。

是不是您程序sunShengJ(jd-dt_T(jd)+L/pi2,L,fa,-1) 中的VAR a就是我要的结果?

 

sunShengJ(jd-dt_T(jd)+L/pi2,L,fa,-1) 是用来求日出日没时间的。

var a我怎么没有找到。当时给出这个程序时,好象有给出算法的描述。


主题最新回顾(发布时间:2010/3/6 9:52:00)
--  作者:xjw01
--  

ε黄赤交角
90表示90度,不是弧度编程时应注意
g是格林尼治恒星时
L是地理经度,向东测量为正
D=g+L是本地恒星时

 

黄极的赤道坐标是(-90,90-ε)
黄极的时角坐标是(D-(-90),90-ε) = (D+90,90-ε)
黄极的正西起算的时角坐标是(90-(D+90),90-ε) = (-D,90-ε)
最后,把(-D,90-ε)代入黄道转赤道坐标的公式中,即得到黄极在地平坐标系中的坐标
tanα = ( sinλ*cosε - tanβ*sinε ) / cosλ
sinδ = sinβ*cosε + cosβ*sinε*sinλ
(把式中的λ用-D代入,β用90-ε代入即可。α为黄极的经度J,δ为黄极的纬度W)

所以:
tan(J) = ( -sinD*cosε - tan(90-ε)*sin(ε) ) / cosD
sin(W) = cosε*cosε - sinε*sinε*sinD

化简得最后公式:
J = atan2( -cosε(1+sinD), cosD)
W = asin( 1 - sin 平方ε(1+sinD) )
这就得到了黄极的坐标(J,W)
注意,这个坐标是从正西起算(北球正西点:沿赤道逆时针(即顺行),经过该点,高度角由负变正,是个升交点) 的。

当(J,W)计算出来以后,升降交点就可求得(J+-90度,0),黄道面与地平面的夹角为90-W

 

 你认真计算一下,也许我算错了。你要作图计算!!!!把地球画正立(赤道),北极在上。

 

 


主题最新回顾(发布时间:2010/3/6 1:39:00)
--  作者:buffettlamb
--  
谢谢许老师,我对星历很感兴趣,很感谢您的指导,可我的天文知识太少太少了,正在努力学习中,刚知道了啥叫黄极。
能看懂您的,但不会继续推下去。

东方地平线交于黄道的那个点就叫上升点,我想知道它在黄道的经度。

是不是您程序sunShengJ(jd-dt_T(jd)+L/pi2,L,fa,-1) 中的VAR a就是我要的结果?

function sunShengJ(jd,L,fa,sj){ //太阳升降计算。jd儒略日(须接近L当地平午UT),L地理经度,fa地理纬度,sj=-1升,sj=1降
  var i;
  jd=floor(jd+0.5)-L/pi2;
  for(i=0;i<2;i++){
  var="var"  t="jd/36525," e="(84381.4060" -46.836769*T)/rad; //黄赤交角
  var="var"  t="t"  = T+(32*(T+1.8)*(T+1.8)-20)/86400/36525;  //儒略世纪年数,力学时

  var="var"  J="J"  = (48950621.66 + 6283319653.318*t + 53*t*t - 994
        +334166 * cos( 4.669257+  628.307585*t)
        +  3489="3489"  * cos( 4.6261  + 1256.61517*t )
        +2060.6 * cos( 2.67823 +  628.307585*t ) * t)/10000000;
  var="var"  sinj="sin(J)," cosj="cos(J);" //太阳黄经以及它的正余弦值
  var="var"  gst="gst"  = (0.7790572732640 + 1.00273781191135448*jd)*pi2 + (0.014506 + 4612.15739966*T + 1.39667721*T*T)/rad; //恒星时(子午圈位置)
  var="var"  A="A"  = atan2( sinJ*cos(E), cosJ="cosJ"  );  //太阳赤经
  var="var"  D="D"  = asin="asin"  ( sin(E)*sinJ );        //太阳赤纬
  var="var"  cosH0="cosH0"  = (sin(-50*60/rad) - sin(fa)*sin(D) ) / ( cos(fa)*cos(D) );
    if(abs(cosH0)>=1) return 0; //太阳在地平线上的cos(时角)计算
  jd += rad2rrad(sj*acos(cosH0) - (gst+L-A) )/6.28; //(升降时角-太阳时角)/太阳速度
  }
  return jd; //反回格林尼治UT
}

主题最新回顾(发布时间:2010/3/5 18:59:00)
--  作者:xjw01
--  

ε黄赤交角

90表示90度,不是弧度编程时应注意

g是格林尼治恒星时

L是地理经度,向东测量为正

 

 

 

黄极的赤道坐标是(-90,90-ε)
黄极的时角坐标是(g+L-(-90),90-ε) = (g+L+90,90-ε)
黄极的正西起算的时角坐标是(90-(g+L+90),90-ε) = (-g-L,90-ε)
最后,把(-g-L,90-ε)代入黄道转赤道坐标的公式中,即得到黄极在地平坐标系中的坐标


参见:
tan(α) = ( sin(λ)*cos(ε) - tan(β)*sin(ε) ) / cos(λ)

sin(δ) = sin(β)*cos(ε) + cos(β)*sin(ε)*sin(λ)

把式中的λ用(-g-L)代入,β用90-ε代入即可。

当然(α,δ)变成了地平坐标

我就不化简了,你自己简吧。

 

注:黄极计算出来后,你要得答案易得。