中华农历论坛知识讨论区历法知识 → 就JPL星历表文件结构再度请教xjw01老师


  共有28849人关注过本帖平板打印

主题:就JPL星历表文件结构再度请教xjw01老师

美女呀,离线,留言给我吧!
蔡越
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:46 积分:535 威望:0 精华:0 注册:2009/4/27 13:24:00
就JPL星历表文件结构再度请教xjw01老师  发帖心情 Post By:2009/5/10 18:41:00

xjw01老师您好!

  我想请教有关您写的程序 DE405/406星历表算法 其中的2个问题, 如果您有时间可否百忙指点一二, 感谢感谢!

1. 在调试您的程序的时候, 发现:

比如在计算水星轨道的时候
double testjd=2444208.55
然后
cd.getCoordOne(DE_mercury, DE_SSBARY, r2);
这时候发现

    1  1018                                                                   
  0.244420850000000000D+07  0.244424050000000000D+07 -0.399530505986556709D+08 
-0.128233975334908292D+08  0.120336360588081973D+07  0.250943620144140441D+05 
-0.531482357268504802D+04  0.249470403150736502D+03  0.560640239484045910D+01 
-0.173195792463098552D+01  0.109235362514551099D+00  0.108598532966162008D-02 
-0.762930481634479249D-03  0.588936556536435332D-04 -0.147038968266065450D-06

只用了  -0.399530505986556709D+08 这一个, 后面的-0.128233975334908292D+08  0.120336360588081973D+07  ....... 根本不需要用到.

我想请教, 究竟是我调试出错呢还是 计算水星轨道的xyz坐标根本用不到后面这些-0.128233975334908292D+08  0.120336360588081973D+07? 究竟第4个开始的数据 -0.128233975334908292D+08 是什么呢?

第二个问题就是:

在 int DE_coord::calc(double jd, int center) 这个函数中的最后有这么一段我有点不明白:

// 如果必要,以下将太阳系质心坐标改为其它中心坐标(如日心或地心)
if (center!=DE_SSBARY) {
  for (i=0; i<13; i++) {
    if="if"  (i == center) i++; // 中心天体跳过
    if="if"  (i >= 13) continue;
    for (j=0; j<6; j++)
      pv[i][j] -= pv[center][j];
  }
  for(i=0;i<6;i++) pv[center][i] = 0; // 中心天体位置及速度置0
}


请问 如果 center 不等于 DE_SSBARY , 那么这最后一段执行下去究竟得到的是什么? 是地心的坐标吗?
因为在debugPro()过程中您是这么使用的:

  cd.getCoordOne(DE_sun,  DE_earth, r1); //取太阳地心坐标
  cd.getCoordOne(DE_venus, DE_earth, r2); //取金星地心坐标

因为
const DE_earth  = 2;
const DE_SSBARY  = 11; //太阳系质心

所以这段程序的意思就是说, 如果center 不等于 DE_SSBARY, 那么就继续执行, 不管center等于2还是其他.
所以我实在有点理会不了, 是否就是指地心坐标呢?

最后有个请求,  xjw01老师可否完善您的代码, 在最后加上日心坐标呢?

致谢!






支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
总数 11 1 2 下一页

返回版面帖子列表

就JPL星历表文件结构再度请教xjw01老师








签名