星历坐标计算
function xingX(xt,jd,L,fa){ //行星计算,jd力学时
//基本参数计算
var T=jd/36525;
var zd = nutation2(T);
var dL = zd[0], dE = zd[1]; //章动
var E = hcjj(T) + dE; //真黄赤交角
var gstPing = pGST2(jd); //平恒星时
var gst= gstPing + dL*Math.cos(E); //真恒星时(不考虑非多项式部分)
var z,a,z2,a2,s='';
var ra,rb,rc,rfn=8;
if(xt==10){ //月亮
rfn = 2;
//求光行时并精确求出地月距
a = e_coord(T,15,15,15); //地球
z = m_coord(T,1,1,-1); ra = z[2]; //月亮
T -= ra*cs_Agx/cs_AU; //光行时计算
//求视坐标
a2 = e_coord(T,15,15,15);//地球
z = m_coord(T,-1,-1,-1); rc = z[2]; //月亮
//求光行距
a2 = h2g(a,a2); a2[2] *= cs_AU;
z2 = h2g(z,a2); rb = z2[2];
//地心黄道及地心赤道
z[0] = rad2mrad(z[0]+dL);
s += '视黄经 ' +rad2str(z[0],0) +' 视黄纬 ' +rad2str(z[1],0) +' 地心距 ' +ra.toFixed(rfn)+'\r\n';
z = llrConv(z,E); //转到赤道坐标
s += '视赤经 ' +rad2str(z[0],1) +' 视赤纬 ' +rad2str(z[1],0) +' 光行距 ' +rb.toFixed(rfn)+'\r\n';
}
if(xt<10){ //行星和太阳
a = p_coord(0, T,-1,-1,-1); //地球
z = p_coord(xt,T,-1,-1,-1); //行星
z[0] = rad2mrad(z[0]);
s += '黄经一 ' +rad2str(z[0],0) +' 黄纬一 ' +rad2str(z[1],0) +' 向径一 ' +z[2].toFixed(rfn)+'\r\n';
//地心黄道
z = h2g(z,a); ra = z[2]; //ra地心距
T -= ra*cs_Agx; //光行时
//重算坐标
a2 = p_coord(0, T,-1,-1,-1); //地球
z2 = p_coord(xt,T,-1,-1,-1); //行星
z = h2g(z2,a); rb = z[2]; //rb光行距(在惯性系中看)
z = h2g(z2,a2); rc = z[2]; //rc视距
z[0] = rad2mrad(z[0]+dL); //补章动
s += '视黄经 ' +rad2str(z[0],0) +' 视黄纬 ' +rad2str(z[1],0) +' 地心距 ' +ra.toFixed(rfn)+'\r\n';
z = llrConv(z,E); //转到赤道坐标
s += '视赤经 ' +rad2str(z[0],1) +' 视赤纬 ' +rad2str(z[1],0) +' 光行距 ' +rb.toFixed(rfn)+'\r\n';
}
var sj = rad2rrad(gst + L - z[0]); //得到天体时角
parallax(z, sj,fa, 0); //视差修正
s += '站赤经 ' +rad2str(z[0],1) +' 站赤纬 ' +rad2str(z[1],0) +' 视距离 ' +rc.toFixed(rfn)+'\r\n';
z[0] += Math.PI/2-gst-L; //修正了视差的赤道坐标
z = llrConv( z, Math.PI/2-fa ); //转到时角坐标转到地平坐标
z[0] = rad2mrad( Math.PI/2-z[0] );
if(z[1]>0) z[1] += MQC(z[1]); //大气折射修正
s += '方位角 ' +rad2str(z[0],0) +' 高度角 ' +rad2str(z[1],0)+'\r\n';
s += '恒星时 ' +rad2str(rad2mrad(gstPing),1) +'(平) ' +rad2str(rad2mrad(gst),1)+'(真)\r\n';
return s;
}