中华农历论坛知识讨论区历法知识 → Swiss 星历表编程接口


  共有25167人关注过本帖树形打印

主题:Swiss 星历表编程接口

帅哥哟,离线,有人找我吗?
hero_hacker
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:56 积分:682 威望:0 精华:1 注册:2010/8/12 21:56:00
Swiss 星历表编程接口  发帖心情 Post By:2010/8/14 12:21:00

您无权查看精华帖子

[本帖被加为精华]
支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
春光
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:917 积分:7577 威望:10 精华:1 注册:2005/3/17 11:37:00
  发帖心情 Post By:2010/8/14 13:31:00

谢谢楼主提供资料。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
kmlch
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:58 积分:3673 威望:0 精华:0 注册:2008/8/6 9:17:00
  发帖心情 Post By:2010/8/20 18:06:00

谢谢楼主。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
ymy111
  4楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:190 积分:1585 威望:0 精华:1 注册:2008/7/6 15:34:00
  发帖心情 Post By:2010/8/25 8:48:00

楼主说说怎么用呀  比如 计算婚神星的坐标

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
hero_hacker
  5楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:56 积分:682 威望:0 精华:1 注册:2010/8/12 21:56:00
  发帖心情 Post By:2010/8/25 11:24:00

以下是说明文件中的内容:
要用 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

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
xuxiaowei
  6楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:26 积分:667 威望:0 精华:0 注册:2008/7/18 14:10:00
  发帖心情 Post By:2010/10/30 22:46:00

谢谢,先下载,以后参考学习

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
宇宙时钟
  7楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:1 积分:201 威望:0 精华:0 注册:2014/5/30 21:20:00
  发帖心情 Post By:2014/5/30 21:47:00

瑞士星历表日心坐标几乎全部错误!

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
paradise300
  8楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:68 积分:1279 威望:0 精华:0 注册:2013/3/28 14:53:00
  发帖心情 Post By:2014/6/17 23:27:00

不错的分享,留着慢慢研究研究,正好想了解一下JPL的星历表。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

Swiss 星历表编程接口








签名