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

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

主题最新回顾(发布时间:2014/6/17 23:27:00)
--  作者:paradise300
--  
不错的分享,留着慢慢研究研究,正好想了解一下JPL的星历表。

主题最新回顾(发布时间:2014/5/30 21:47:00)
--  作者:宇宙时钟
--  
瑞士星历表日心坐标几乎全部错误!

主题最新回顾(发布时间:2010/10/30 22:46:00)
--  作者:xuxiaowei
--  
谢谢,先下载,以后参考学习

主题最新回顾(发布时间:2010/8/25 11:24:00)
--  作者:hero_hacker
--  
以下是说明文件中的内容:
要用 SWISSEPH 计算一个星体, 你必须按以下步骤做(使用 swetest.c 作为例子). 函数细节将在以后章节解释。

1.
设置星历文件位置, 例如:

swe_set_ephe_path(”C:\\SWEPH\\EPHE”);

2.?
根据你要计算的日期算出其儒略日数:

jul_day_UT = swe_julday(year, month, day, hour, gregflag);

3?.
计算行星星体:

ret_flag = swe_calc_ut(jul_day_UT, planet_no, flag, lon_lat_rad, err_msg);

或恒星:

ret_flag = swe_fixstar_ut(star_nam, jul_day_UT, flag, lon_lat_rad, err_msg);

5.?
计算完后调用 swe_close() 来关闭所有文件并释放内存;

下面是一个最小的示例程序, 它就是源代码中的swemini.c

#include "swephexp.h"
/* 这也将包含  "sweodef.h" */
int main()
{
  char *sp, sdate[AS_MAXCH], snam[40], serr[AS_MAXCH]; 
  int jday = 1, jmon = 1, jyear = 2000;
  double jut = 0.0;
  double tjd_ut, te, x2[6];
  long iflag, iflgret;
  int p;
  iflag = SEFLG_SPEED;
  while (TRUE) {
    printf("\nDate (d.m.y) ?");
    gets(sdate);


/* 如果超过要计算的日期就停止计算*/
    if (*sdate == '.')
      return OK;
    if (sscanf (sdate, "%d%*c%d%*c%d", &jday,&jmon,&jyear) < 1) exit(1);

    /*

    * 我们用要计算的年月日转换成儒略日数

    */
    tjd_ut = swe_julday(jyear,jmon,jday,jut,SE_GREG_CAL);       

    /*

    * 从通用时来计算星历时:加上 delta_t

    */
      /* te = tjd_ut + swe_deltat(tjd_ut); */
    printf("日期: %02d.%02d.%d at 0:00 通用时\n", jday, jmon, jyear);
    printf("行星    \t经度\t纬度\t距离\t速度 long.\n");

    /*

    * a loop over all planets

    */
    for (p = SE_SUN; p <= SE_CHIRON; p++) {
      if (p == SE_EARTH) continue;


/*


* 计算此行星的座标


*/
iflgret = swe_calc_ut(tjd_ut, p, iflag, x2, serr);
        /* Swisseph versions older than 1.60 require the following
          * statement instead */
/* iflgret = swe_calc(te, p, iflag, x2, serr); */

      /*

      * if there is a problem, a negative value is returned and an

      * error message is in serr.

      */
      if (iflgret < 0)

printf("错误: %s\n", serr);

      /*

      * 得到行星编号

      */
      swe_get_planet_name(p, snam);

      /*

      * 显示座标

      */
      printf("%10s\t%11.7f\t%10.7f\t%10.7f\t%10.7f\n",

    snam, x2[0], x2[1], x2[2], x2[3]);
    }
  }
  return OK;
}

另外,原程序中定义了"婚神星"的编号如下:

#define SE_JUNO       
19

主题最新回顾(发布时间:2010/8/25 8:48:00)
--  作者:ymy111
--  
楼主说说怎么用呀  比如 计算婚神星的坐标

主题最新回顾(发布时间:2010/8/20 18:06:00)
--  作者:kmlch
--  
谢谢楼主。

主题最新回顾(发布时间:2010/8/14 13:31:00)
--  作者:春光
--  

谢谢楼主提供资料。


主题最新回顾(发布时间:2010/8/14 12:21:00)
--  作者:hero_hacker
--  Swiss 星历表编程接口
您没有浏览该精华帖子的权限