Swiss 星历表编程接口
以下是说明文件中的内容:
要用 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
网址:Swiss 星历表编程接口 https://mxgxt.com/news/view/108419
相关内容
星路历程美女明星成长历程……
草根明星成名历程小说
明星私人行程接机算私生行为吗 明星私人行程接机是不是不能接
从童年到明星:回顾体育明星的初始时光与成长历程
明星简历表
星历表
体育明星的成长之路:从草根到巅峰的拼搏历程与心路历程
体育明星成长历程与成就探索:从青少年到巅峰的终极旅程
体育明星的传奇故事:从青涩少年到巅峰巨星的成长历程