/// <summary> /// 章动同时影响恒星时和天体坐标,所以不计算章动。返回时角及赤经纬 /// </summary> /// <param name="jd"></param> /// <param name="H0"></param> /// <param name="z"></param> public static void Mcoord(double jd, double H0, LunarInfoListT <double> z) { XL.M_coord((jd + SZJ.dt) / 36525, z, 30, 20, 8); //低精度月亮赤经纬 ZB.llrConv(z, SZJ.E); //转为赤道坐标 z.H = LunarHelper.rad2mrad(ZB.gst(jd, SZJ.dt) - SZJ.L - z[0]); if (z.H > Math.PI) { z.H -= LunarHelper.pi2; //得到此刻天体时角 } if (H0 != 0) { z.H0 = SZJ.getH(0.7275 * LunarHelper.cs_rEar / z[2] - 34 * 60 / LunarHelper.rad, z[1]); //升起对应的时角 } }
/// <summary> /// 章动同时影响恒星时和天体坐标,所以不计算章动。返回时角及赤经纬 /// </summary> /// <param name="jd"></param> /// <param name="H0"></param> /// <param name="H1"></param> /// <param name="z"></param> public static void Scoord(double jd, double H0, double H1, LunarInfoListT <double> z) { z[0] = XL.E_Lon((jd + SZJ.dt) / 36525, 5) + Math.PI - 20.5 / LunarHelper.rad; //太阳坐标(修正了光行差) z[1] = 0d; z[2] = 1d; // C#: 添加 d, 强制为 double 类型, 否则在把该元素显式转换为 double 时会出错 ZB.llrConv(z, SZJ.E); // 转为赤道坐标 z.H = LunarHelper.rad2rrad(ZB.gst(jd, SZJ.dt) - SZJ.L - z[0]); //得到此刻天体时角 if (H0 != 0) { z.H0 = SZJ.getH(-50 * 60 / LunarHelper.rad, z[1]); //地平以下50分 } if (H1 != 0) { z.H1 = SZJ.getH(-Math.PI / 30, z[1]); // 地平以下6度 } }