中华农历论坛知识讨论区历法知识 → 寿星万年历5.08(测试版)


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

主题:寿星万年历5.08(测试版)

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


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

/返回农历日数及日月食信息的函数,如-324.57923415,负号表示闰月,百位3表示月偏食(2为月全食,1为日食0为无食),百位及十位表示日数,小数部分是朔望时刻(单位为天,若该天不朔或望则小数部分为零)

function lunDate(y,m,d){
  var t=(y-1899.5)/100;
  var ms=floor((y-1900)*12.3685);
  var rpi=180/PI();
  var zone=8;  //时区
  var f0=ang(ms,t,0,0.75933,2.172e-4,1.55e-7)+0.53058868*ms-8.37e-4*t+zone/24+0.5;
  var fc=0.1734-3.93e-4*t;
  var j0=693595+29*ms;
  var aa0=ang(ms,t,0.08084821133,359.2242/rpi,0.0000333/rpi,0.00000347/rpi);
  var ab0=ang(ms,t,7.171366127999999e-2,306.0253/rpi,-0.0107306/rpi,-0.00001236/rpi);
  var ac0=ang(ms,t,0.08519585128,21.2964/rpi,0.0016528/rpi,0.00000239/rpi);
  var leap=0;  //闰月数,0则不闰
  var ecli=0;  //日月食
  var lunD=-1;  //农历日数
  var shuoD=0;  //本阴历月的阴历朔日数
  var shuoT=0;  //本阴历月的朔时刻
  var wangD=0;  //本阴历月的望时刻
  var wangT=0;  //本阴历月的阴历望日数

  for(var k=-1;k<=13;k+=0.5){  //k=整数为朔,k=半整数为望
    var aa=aa0+0.507984293*k;
    var ab=ab0+6.73377553*k;
    var ac=ac0+6.818486628*k;
    var f1=f0+1.53058868*k+fc*sin(aa)-0.4068*sin(ab)+0.0021*sin(2*aa)+0.0161*sin(2*ab)+0.0104*sin(2*ac)-0.0074*sin(aa-ab)-0.0051*sin(aa+ab);
    var j=j0+28*k+f1;  //朔或望的等效标准天数及时刻

    //记录当前日期的j值
    var lunD0=erD(y,m,d)-floor(j);  //当前日距朔日的差值
    if(k==floor(k)&&lunD0>=0&&lunD0<=29){
      var k1=k;  //记录当前时间对应的k值
      shuoT=tail(j);
      lunD=lunD0+1;
    }
    if(k==(k1+0.5)){
      wangT=tail(j); 
      wangD=floor(j)-(erD(y,m,d)-lunD+1)+1;
    }
   
    //判断日月食
    if((lunD==1&&k==k1)||(lunD==wangD&&k==(k1+0.5))){
      if(abs(sin(ac))<=0.36){
        var s=5.19595-0.0048*cos(aa)+0.002*cos(2*aa)-0.3283*cos(ab)-0.006*cos(aa+ab)+0.0041*cos(aa-ab);
        var r=0.207*sin(aa)+0.0024*sin(2*aa)-0.039*sin(ab)+0.0115*sin(2*ab)-0.0073*sin(aa+ab)-0.0067*sin(aa-ab)+0.0117*sin(2*ac);
        var p=abs(s*sin(ac)+r*cos(ac));
        var q=0.0059+0.0046*cos(aa)-0.0182*cos(ab)+0.0004*cos(2*ab)-0.0005*cos(aa+ab);
        if(p-q<=1.5572){
          ecli=1;  //日食
          if(k!=floor(k)){
            if(p+q>=1.0129)
              ecli=3;  //月偏食
            else
              ecli=2;  //月全食
          }
        }
      }
     }
  }
//k循环结束


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
总数 1270 1 2 3 4 5 6 7 8 9 10 下一页 ..127

返回版面帖子列表

寿星万年历5.08(测试版)








签名