中华农历论坛知识讨论区历法知识 → Swiss Ephemeris 应用程序编程接口(1)


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

主题:Swiss Ephemeris 应用程序编程接口(1)

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


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

例二 水星大距计算
void greatest_elongation()
{

double dret[20];

double jut,tjd_ut;

int i=0,j,k;

int direct=0;

double buffer=0;

char buf[8000];

char s[AS_MAXCH];

double d_timezone=-8;
    int32 iyear_out, imonth_out, iday_out, ihour_out, imin_out;

double dsec_out;

int flag=0;



strcpy(buf,"");



jday = 1;

jmon = 1;//pd.mon;

jyear = pd.year;

jhour = (int)d_timezone;

jmin = 0;

jsec = 0;

jut = jhour + jmin / 60.0 + jsec / 3600.0;



if ((long) pd.year * 10000L + (long) pd.mon * 100L + (long) pd.mday < 15821015L)


gregflag = FALSE;

else


gregflag = TRUE;



tjd_ut = swe_julday(jyear,jmon,jday,jut,gregflag);

tjd = tjd_ut;

//  SE_MERCURY      2  水星

for(i=0;i<365;i++)

{


swe_pheno(tjd, SE_MERCURY, iflag, dret, serr);


if(buffer!=0)


{



flag=0;



if(dret[2]>=buffer) //上升



{




if(direct==-1)




{





flag=1;




}




direct=1;



}



else if(dret[2]


{




if(direct==1)




{





flag=2;




}




direct=-1;



}







if(dret[2]>15 && flag>=1)



{




tjd=tjd-1;        //回退一天




buffer=0;




for(j=0;j<24;j++) 




{





tjd=tjd+(double)1/24;





swe_pheno(tjd, SE_MERCURY, iflag, dret, serr);





if(dret[2]




{






buffer = dret[2];






break;





}





buffer = dret[2];




}









tjd=tjd-(double)1/24;




for(k=0;k<60;k++)




{





tjd=tjd+(double)1/1440;





swe_pheno(tjd, SE_MERCURY, iflag, dret, serr);





if(dret[2]




{






buffer = dret[2];






break;





}





buffer = dret[2];




}









swe_revjul(tjd, 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);




buffer=0;




direct=0;




tjd = swe_julday(jyear,jmon,jday,jut,gregflag);



}














}


buffer = dret[2];


tjd++;

}



MessageBox(0,buf,"",0);
}
[此贴子已经被作者于2016-10-6 22:16:53编辑过]

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

返回版面帖子列表

Swiss Ephemeris 应用程序编程接口(1)








签名