主题最新回顾(发布时间: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-ε) 所以: 化简得最后公式: 当(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-ε)
sin(δ) = sin(β)*cos(ε) + cos(β)*sin(ε)*sin(λ) 把式中的λ用(-g-L)代入,β用90-ε代入即可。 当然(α,δ)变成了地平坐标 我就不化简了,你自己简吧。
注:黄极计算出来后,你要得答案易得。 |