// 例三 木星合月的测试计算
int Conjunction()
{
char serr[AS_MAXCH];
int jday = 1, jmon = 1, jyear = 2016;
double jut = 0.0;
double tjd_ut, x[6],x1,x2,y;
long iflag, iflgret;
double d_timezone=-8;
char buf[8000];
char s[AS_MAXCH];
int direct=0;
double buffer=0;
int32 iyear_out, imonth_out, iday_out, ihour_out, imin_out;
double dsec_out;
int flag=0,j,k;
jyear = pd.year;
strcpy(buf,"");
swe_set_ephe_path(NULL);
iflag = SEFLG_SPEED;
// 年月日转换为儒略日数
tjd_ut = swe_julday(jyear,jmon,jday,d_timezone,SE_GREG_CAL);
tjd_ut--;
for (i = 0; i <= 365; i++)
{
iflgret = swe_calc_ut(tjd_ut, SE_JUPITER, iflag, x, serr);
x1 = swe_degnorm(x[0]);
iflgret = swe_calc_ut(tjd_ut, SE_MOON, iflag, x, serr);
x2 = swe_degnorm(x[0]);
y=fabs(x2-x1);
if(y>=buffer && buffer!=0) //当前值大于上一次的值。取用上一次的时间
{
tjd_ut-=1; //回退一天 0.412155
flag=0;
buffer=0;
for (j = 0; j <= 24; j++) // 小时计算
{
iflgret = swe_calc_ut(tjd_ut, SE_JUPITER, iflag, x, serr);
x1 = swe_degnorm(x[0]);
iflgret = swe_calc_ut(tjd_ut, SE_MOON, iflag, x, serr);
x2 = swe_degnorm(x[0]);
y=fabs(x2-x1);
if(y>=buffer && buffer!=0) //
{
buffer=0;
tjd_ut-=(double)2/24; //回退一小时 0.083471
flag=0;
for (k = 0; k <= 60; k++) // 分计算
{
iflgret = swe_calc_ut(tjd_ut, SE_JUPITER, iflag, x, serr);
x1 = swe_degnorm(x[0]);
iflgret = swe_calc_ut(tjd_ut, SE_MOON, iflag, x, serr);
x2 = swe_degnorm(x[0]);
y=fabs(x2-x1);
if(y>=buffer && buffer!=0) //上升
{
swe_revjul(tjd_ut, gregflag, &jyear, &jmon, &jday, &jut);
jut += 0.5 / 3600;
jhour = (int) jut;
jmin = (int) fmod(jut * 60, 60);
jsec = (int) fmod(jut * 3600, 60);
swe_utc_time_zone(
jyear, jmon, jday,
jhour, jmin, jsec,
d_timezone,
&iyear_out, &imonth_out, &iday_out,
&ihour_out, &imin_out, &dsec_out
);
sprintf(s, "木星合月 %d.%d.%d - %02d:%02d\r\n", iyear_out, imonth_out, iday_out,ihour_out, imin_out);
do_print(buf, s);
flag=0;
buffer=0;
direct=0;
i=i+27;
tjd_ut = swe_julday(jyear,jmon,jday+27,d_timezone,SE_GREG_CAL);
goto out;
}
tjd_ut=tjd_ut+(double)1/1440;
buffer = y;
}
}
tjd_ut+=(double)1/24;
buffer = y;
}
}
out:
tjd_ut+=1;
buffer = y;
}
MessageBox(0,buf,"",0);
return OK;
}
[此贴子已经被作者于2016-10-9 19:04:54编辑过]