中华农历论坛知识讨论区历法知识 → 天文算法讨论


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

主题:天文算法讨论

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


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2011/3/4 17:58:00

以下是引用秦汉昌在2011-2-24 12:52:00的发言:

求助:  许老师

你寿星万年历源码 eph0.js源码文件中“摩尔威特投影touY类”的方法toxy0 中用到的属性E0(this.sinE0  this.cosE0)  是在哪里定义的呢?

呵呵,也许是我对JAVASCRIPT不熟悉,是不是不经定义的变量,第一次使用,其值为0呢?

 

 toxy0:function(J,W,a){ //平面正投
  J -= this.J0+pi_2; //图中的经度自西向东测量
  var x=Math.cos(W)*Math.cos(J), y=Math.cos(W)*Math.sin(J), z=Math.sin(W);
  a.x = x;
  a.y = this.cosE0*y + this.sinE0*z;
  a.z =-this.sinE0*y + this.cosE0*z;
 },

呵呵,是不是JavaScript的类属性可以在编程时先用“this.E0”的形式引用,在使用时添加属性E0呢?

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


加好友 发短信
等级:新手上路 帖子:16 积分:258 威望:0 精华:0 注册:2011/3/9 16:42:00
  发帖心情 Post By:2011/3/9 16:53:00

来学习了,谢谢楼主的分享

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


加好友 发短信
等级:蝙蝠侠 帖子:866 积分:3804 威望:3 精华:20 注册:2008/3/20 22:14:00
  发帖心情 Post By:2011/3/9 20:10:00

以下是引用秦汉昌在2011-3-4 17:58:00的发言:
呵呵,是不是JavaScript的类属性可以在编程时先用“this.E0”的形式引用,在使用时添加属性E0呢?

学习过“面向对象编程”,这类东西就会比较好理解一些。

 

JavaScript是“基于对象”的编程。

实际上与“面向对象”编程,好像区别也不太大。主要是一些继承、重载等东西不太一样,造成创建一些特殊对象不太容易。不过,编写天文历,也不太需要面向对象。面向函数更好用,它与数学更接近。

 


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


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2011/3/21 14:15:00

if(!A.f2) A.f2=0;

 

这条指令好像没意义呢?

 

源自寿星万年历日食计算程序 rsGS  之 mQie  方法:

 

mQie:function(M,vx0,vy0, h, r,I, A){ //vx0,vy0为影足速度(也是整个影子速度),h=1计算北界,h=-1计算南界
   var p=this.nanbei(M,vx0,vy0,h,r,I);
   if(!A.f2) A.f2=0;   A.f = p[1]==100?0:1; //记录有无解
   if(A.f2!=A.f){ //补线头线尾
     var g=lineOvl(p[2],p[3],vx0,vy0,1,this.bba), dj, F;
     if(g.n){
      if(A.f) dj=g.R2, F=g.B;
      else    dj=g.R1, F=g.A;
      F[2]=0;
      var I2 = new Array( I[0], I[1], I[2] - dj/Math.sqrt(vx0*vx0+vy0*vy0)*6.28 );  //也可以不重算计算恒星时,直接用I[2]代替,但线头不会严格落在日出日没食甚线上
      this.push( this.bse2db(F,I2,1), A);//有解补线头
     }
   }
   A.f2 = A.f; //记录上次有无解

   if(p[1]!=100) this.push(p,A);
 },


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


加好友 发短信
等级:蝙蝠侠 帖子:866 积分:3804 威望:3 精华:20 注册:2008/3/20 22:14:00
  发帖心情 Post By:2011/3/22 16:10:00

if(!A.f2) A.f2=0;

 

如果A.f2为假,则对A.f2赋于0值。

指的就是这个意思。

 

A.f2这个成员可能未定义,其实可能是undefined或其它空值,今赋于它一个明确的值,即0值。


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


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2011/3/29 22:23:00

以下是引用xjw01在2011-3-22 16:10:00的发言:

if(!A.f2) A.f2=0;

 

如果A.f2为假,则对A.f2赋于0值。

指的就是这个意思。  

A.f2这个成员可能未定义,其实可能是undefined或其它空值,今赋于它一个明确的值,即0值。

呵呵,原来是这样呵,是我理解错了

我理解:当A.f2 为假时  就赋 A.f2 为假(A.f2 在当前程序中的作用只是逻辑标志)


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


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2011/3/29 22:25:00

装载 D:\汉编\万年历设计\中\夏历核心模块.CHP ★
夏历基础模板 中 ★
编 显示明朝年号
1644 1368
循环 内环数 取年号: 中  印字串 回车
回环
。 ★
显示明朝年号 [元]惠宗 孛儿只斤·妥镤贴睦尔 至正28年;[明]太祖 朱元璋 洪武1年
[明]太祖 朱元璋 洪武2年
[明]太祖 朱元璋 洪武3年
[明]太祖 朱元璋 洪武4年
[明]太祖 朱元璋 洪武5年
[明]太祖 朱元璋 洪武6年
[明]太祖 朱元璋 洪武7年
[明]太祖 朱元璋 洪武8年
[明]太祖 朱元璋 洪武9年
[明]太祖 朱元璋 洪武10年
[明]太祖 朱元璋 洪武11年
[明]太祖 朱元璋 洪武12年
[明]太祖 朱元璋 洪武13年
[明]太祖 朱元璋 洪武14年
[明]太祖 朱元璋 洪武15年
[明]太祖 朱元璋 洪武16年
[明]太祖 朱元璋 洪武17年
[明]太祖 朱元璋 洪武18年
[明]太祖 朱元璋 洪武19年
[明]太祖 朱元璋 洪武20年
[明]太祖 朱元璋 洪武21年
[明]太祖 朱元璋 洪武22年
[明]太祖 朱元璋 洪武23年
[明]太祖 朱元璋 洪武24年
[明]太祖 朱元璋 洪武25年
[明]太祖 朱元璋 洪武26年
[明]太祖 朱元璋 洪武27年
[明]太祖 朱元璋 洪武28年
[明]太祖 朱元璋 洪武29年
[明]太祖 朱元璋 洪武30年
[明]太祖 朱元璋 洪武31年
[明]惠帝 朱允溫 建文1年
[明]惠帝 朱允溫 建文2年
[明]惠帝 朱允溫 建文3年
[明]惠帝 朱允溫 建文4年
[明]成祖 朱棣 永乐1年
[明]成祖 朱棣 永乐2年
[明]成祖 朱棣 永乐3年
[明]成祖 朱棣 永乐4年
[明]成祖 朱棣 永乐5年
[明]成祖 朱棣 永乐6年
[明]成祖 朱棣 永乐7年
[明]成祖 朱棣 永乐8年
[明]成祖 朱棣 永乐9年
[明]成祖 朱棣 永乐10年
[明]成祖 朱棣 永乐11年
[明]成祖 朱棣 永乐12年
[明]成祖 朱棣 永乐13年
[明]成祖 朱棣 永乐14年
[明]成祖 朱棣 永乐15年
[明]成祖 朱棣 永乐16年
[明]成祖 朱棣 永乐17年
[明]成祖 朱棣 永乐18年
[明]成祖 朱棣 永乐19年
[明]成祖 朱棣 永乐20年
[明]成祖 朱棣 永乐21年
[明]成祖 朱棣 永乐22年
[明]仁宗 朱高炽 洪熙1年
[明]宣宗 朱瞻基 宣德1年
[明]宣宗 朱瞻基 宣德2年
[明]宣宗 朱瞻基 宣德3年
[明]宣宗 朱瞻基 宣德4年
[明]宣宗 朱瞻基 宣德5年
[明]宣宗 朱瞻基 宣德6年
[明]宣宗 朱瞻基 宣德7年
[明]宣宗 朱瞻基 宣德8年
[明]宣宗 朱瞻基 宣德9年
[明]宣宗 朱瞻基 宣德10年
[明]英宗 朱祁镇 正统1年
[明]英宗 朱祁镇 正统2年
[明]英宗 朱祁镇 正统3年
[明]英宗 朱祁镇 正统4年
[明]英宗 朱祁镇 正统5年
[明]英宗 朱祁镇 正统6年
[明]英宗 朱祁镇 正统7年
[明]英宗 朱祁镇 正统8年
[明]英宗 朱祁镇 正统9年
[明]英宗 朱祁镇 正统10年
[明]英宗 朱祁镇 正统11年
[明]英宗 朱祁镇 正统12年
[明]英宗 朱祁镇 正统13年
[明]英宗 朱祁镇 正统14年
[明]代宗 朱祁钰 景泰1年
[明]代宗 朱祁钰 景泰2年
[明]代宗 朱祁钰 景泰3年
[明]代宗 朱祁钰 景泰4年
[明]代宗 朱祁钰 景泰5年
[明]代宗 朱祁钰 景泰6年
[明]代宗 朱祁钰 景泰7年
[明]英宗 朱祁镇 天顺1年
[明]英宗 朱祁镇 天顺2年
[明]英宗 朱祁镇 天顺3年
[明]英宗 朱祁镇 天顺4年
[明]英宗 朱祁镇 天顺5年
[明]英宗 朱祁镇 天顺6年
[明]英宗 朱祁镇 天顺7年
[明]英宗 朱祁镇 天顺8年
[明]宪宗 朱见深 成化1年
[明]宪宗 朱见深 成化2年
[明]宪宗 朱见深 成化3年
[明]宪宗 朱见深 成化4年
[明]宪宗 朱见深 成化5年
[明]宪宗 朱见深 成化6年
[明]宪宗 朱见深 成化7年
[明]宪宗 朱见深 成化8年
[明]宪宗 朱见深 成化9年
[明]宪宗 朱见深 成化10年
[明]宪宗 朱见深 成化11年
[明]宪宗 朱见深 成化12年
[明]宪宗 朱见深 成化13年
[明]宪宗 朱见深 成化14年
[明]宪宗 朱见深 成化15年
[明]宪宗 朱见深 成化16年
[明]宪宗 朱见深 成化17年
[明]宪宗 朱见深 成化18年
[明]宪宗 朱见深 成化19年
[明]宪宗 朱见深 成化20年
[明]宪宗 朱见深 成化21年
[明]宪宗 朱见深 成化22年
[明]宪宗 朱见深 成化23年
[明]孝宗 朱祐樘 弘治1年
[明]孝宗 朱祐樘 弘治2年
[明]孝宗 朱祐樘 弘治3年
[明]孝宗 朱祐樘 弘治4年
[明]孝宗 朱祐樘 弘治5年
[明]孝宗 朱祐樘 弘治6年
[明]孝宗 朱祐樘 弘治7年
[明]孝宗 朱祐樘 弘治8年
[明]孝宗 朱祐樘 弘治9年
[明]孝宗 朱祐樘 弘治10年
[明]孝宗 朱祐樘 弘治11年
[明]孝宗 朱祐樘 弘治12年
[明]孝宗 朱祐樘 弘治13年
[明]孝宗 朱祐樘 弘治14年
[明]孝宗 朱祐樘 弘治15年
[明]孝宗 朱祐樘 弘治16年
[明]孝宗 朱祐樘 弘治17年
[明]孝宗 朱祐樘 弘治18年
[明]武宗 朱厚照 正德1年
[明]武宗 朱厚照 正德2年
[明]武宗 朱厚照 正德3年
[明]武宗 朱厚照 正德4年
[明]武宗 朱厚照 正德5年
[明]武宗 朱厚照 正德6年
[明]武宗 朱厚照 正德7年
[明]武宗 朱厚照 正德8年
[明]武宗 朱厚照 正德9年
[明]武宗 朱厚照 正德10年
[明]武宗 朱厚照 正德11年
[明]武宗 朱厚照 正德12年
[明]武宗 朱厚照 正德13年
[明]武宗 朱厚照 正德14年
[明]武宗 朱厚照 正德15年
[明]武宗 朱厚照 正德16年
[明]世宗 朱厚熜 嘉靖1年
[明]世宗 朱厚熜 嘉靖2年
[明]世宗 朱厚熜 嘉靖3年
[明]世宗 朱厚熜 嘉靖4年
[明]世宗 朱厚熜 嘉靖5年
[明]世宗 朱厚熜 嘉靖6年
[明]世宗 朱厚熜 嘉靖7年
[明]世宗 朱厚熜 嘉靖8年
[明]世宗 朱厚熜 嘉靖9年
[明]世宗 朱厚熜 嘉靖10年
[明]世宗 朱厚熜 嘉靖11年
[明]世宗 朱厚熜 嘉靖12年
[明]世宗 朱厚熜 嘉靖13年
[明]世宗 朱厚熜 嘉靖14年
[明]世宗 朱厚熜 嘉靖15年
[明]世宗 朱厚熜 嘉靖16年
[明]世宗 朱厚熜 嘉靖17年
[明]世宗 朱厚熜 嘉靖18年
[明]世宗 朱厚熜 嘉靖19年
[明]世宗 朱厚熜 嘉靖20年
[明]世宗 朱厚熜 嘉靖21年
[明]世宗 朱厚熜 嘉靖22年
[明]世宗 朱厚熜 嘉靖23年
[明]世宗 朱厚熜 嘉靖24年
[明]世宗 朱厚熜 嘉靖25年
[明]世宗 朱厚熜 嘉靖26年
[明]世宗 朱厚熜 嘉靖27年
[明]世宗 朱厚熜 嘉靖28年
[明]世宗 朱厚熜 嘉靖29年
[明]世宗 朱厚熜 嘉靖30年
[明]世宗 朱厚熜 嘉靖31年
[明]世宗 朱厚熜 嘉靖32年
[明]世宗 朱厚熜 嘉靖33年
[明]世宗 朱厚熜 嘉靖34年
[明]世宗 朱厚熜 嘉靖35年
[明]世宗 朱厚熜 嘉靖36年
[明]世宗 朱厚熜 嘉靖37年
[明]世宗 朱厚熜 嘉靖38年
[明]世宗 朱厚熜 嘉靖39年
[明]世宗 朱厚熜 嘉靖40年
[明]世宗 朱厚熜 嘉靖41年
[明]世宗 朱厚熜 嘉靖42年
[明]世宗 朱厚熜 嘉靖43年
[明]世宗 朱厚熜 嘉靖44年
[明]世宗 朱厚熜 嘉靖45年
[明]穆宗 朱载贺 隆庆1年
[明]穆宗 朱载贺 隆庆2年
[明]穆宗 朱载贺 隆庆3年
[明]穆宗 朱载贺 隆庆4年
[明]穆宗 朱载贺 隆庆5年
[明]穆宗 朱载贺 隆庆6年
[明]神宗 朱翊钧 万历1年
[明]神宗 朱翊钧 万历2年
[明]神宗 朱翊钧 万历3年
[明]神宗 朱翊钧 万历4年
[明]神宗 朱翊钧 万历5年
[明]神宗 朱翊钧 万历6年
[明]神宗 朱翊钧 万历7年
[明]神宗 朱翊钧 万历8年
[明]神宗 朱翊钧 万历9年
[明]神宗 朱翊钧 万历10年
[明]神宗 朱翊钧 万历11年
[明]神宗 朱翊钧 万历12年
[明]神宗 朱翊钧 万历13年
[明]神宗 朱翊钧 万历14年
[明]神宗 朱翊钧 万历15年
[明]神宗 朱翊钧 万历16年
[明]神宗 朱翊钧 万历17年
[明]神宗 朱翊钧 万历18年
[明]神宗 朱翊钧 万历19年
[明]神宗 朱翊钧 万历20年
[明]神宗 朱翊钧 万历21年
[明]神宗 朱翊钧 万历22年
[明]神宗 朱翊钧 万历23年
[明]神宗 朱翊钧 万历24年
[明]神宗 朱翊钧 万历25年
[明]神宗 朱翊钧 万历26年
[明]神宗 朱翊钧 万历27年
[明]神宗 朱翊钧 万历28年
[明]神宗 朱翊钧 万历29年
[明]神宗 朱翊钧 万历30年
[明]神宗 朱翊钧 万历31年
[明]神宗 朱翊钧 万历32年
[明]神宗 朱翊钧 万历33年
[明]神宗 朱翊钧 万历34年
[明]神宗 朱翊钧 万历35年
[明]神宗 朱翊钧 万历36年
[明]神宗 朱翊钧 万历37年
[明]神宗 朱翊钧 万历38年
[明]神宗 朱翊钧 万历39年
[明]神宗 朱翊钧 万历40年
[明]神宗 朱翊钧 万历41年
[明]神宗 朱翊钧 万历42年
[明]神宗 朱翊钧 万历43年
[明]神宗 朱翊钧 万历44年
[明]神宗 朱翊钧 万历45年
[明]神宗 朱翊钧 万历46年
[明]神宗 朱翊钧 万历47年
[明]神宗 朱翊钧 万历48年;[明]光宗 朱常洛 泰昌1年
[明]熹宗 朱同校 天启1年
[明]熹宗 朱同校 天启2年
[明]熹宗 朱同校 天启3年
[明]熹宗 朱同校 天启4年
[明]熹宗 朱同校 天启5年
[明]熹宗 朱同校 天启6年
[明]熹宗 朱同校 天启7年
[明]毅宗 朱由检 崇祯1年
[明]毅宗 朱由检 崇祯2年
[明]毅宗 朱由检 崇祯3年
[明]毅宗 朱由检 崇祯4年
[明]毅宗 朱由检 崇祯5年
[明]毅宗 朱由检 崇祯6年
[明]毅宗 朱由检 崇祯7年
[明]毅宗 朱由检 崇祯8年
[明]毅宗 朱由检 崇祯9年
[明]毅宗 朱由检 崇祯10年
[明]毅宗 朱由检 崇祯11年
[明]毅宗 朱由检 崇祯12年
[明]毅宗 朱由检 崇祯13年
[明]毅宗 朱由检 崇祯14年
[明]毅宗 朱由检 崇祯15年
[明]毅宗 朱由检 崇祯16年


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


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2011/4/2 18:09:00

摞初始 ★
73.8274273594 高精度定气计算 显 2576419.0804581790 ★

 

这个结果不 知正确否

我在排月历时,发现定气定朔的计算结果与  月历所需的 参数相甚远,如果,返回的是J2000起算的儒略日,那么,这个结果应该不正确。

 

注:高精度定气计算  这个词系 寿星历源码   qi_high:function(W){ //较高精度气  二次编写,方面利用寿星源码测试的朋友,烦请指点迷津,呵呵

 

 寿星历源码:

 

qi_high:function(W){ //较高精度气
  var t = XL.S_aLon_t2(W)*36525;
  t = t - dt_T(t)+8/24;
  var v = ( (t+0.5) %1 ) * 86400;
  if(v<1200 || v >86400-1200) t = XL.S_aLon_t(W)*36525 - dt_T(t)+8/24;
  return  t;
 },

 

汉编源码:

 

编 高精度定气计算       ( W --- )
  \ 较高精度气 qi_high
  ♂  太阳视黄经时2  36525.0  *                        \  t
  ♂  dt_T  -  8.0 24.0  /  + 
  ♂  0.5  +  1.0  求浮点余数  86400.0  *             \  v
  ♂  1200.0  < 
  ↑↓   86400.0  1200.0  -  >  或
  就   ↑↓   太阳视黄经时  36525.0  *  
       ↑↓   dt_T  -  8.0  24.0  /  + 
  否则  ↑↓♀  
  然后
  。 

[此贴子已经被作者于2011-4-3 23:43:32编辑过]

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


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2011/4/2 18:18:00

由于高精度气朔计算  由于在计算中需要使用星历计算模块的相关词汇,为了排除星历计算模块词汇对结果计算的影响,于是我改由低精度气朔计算来测试相同参数 :

 

摞初始 ★
73.8274273594 高精度定气计算 显 2576419.0804581790 ★
编 低精度定气计算       ( W --- )
  \ 最大误差小于30分钟,平均5分  qi_low
  628.3319653318                            \ v
  ∽  4.895062166  -   ∽  /                 \ t  第一次估算,误差2天以内
  53.0  ∽  ♂  *   *
  ∽  628.307585  *  4.67   +  cos  334116.0  *  +
  ∽  628.3076    *  2.678  +  cos  2061.0    *  2 §  *  +
  ∴  /  10000000.0  /  -                                         \ 第二次估算,误差2小时以内

  48950621.66  ∽  6283319653.318  *  +   ∽  ♂  *  53.0  *  +    \ 平黄经
  ∽  628.307585  *  4.669257  +  cos  334166.0  *  +             \ 地球椭圆轨道级数展开
  ∽  1256.61517  *  4.6261    +  cos  3489.0    *  +             \ 地球椭圆轨道级数展开
  ∽  628.307585  *  2.67823   +  cos  2060.6    *  2 §  *  +     \ 一次泊松项
  994.0  -
  ∽  -33.75705   *  2.1824    +  sin  -834.0    *  +              \ 光行差与章动修正

  10000000.0  /  ∴  -  628.332  /
  ∽  1.8  +   ♂  *  32.0  *  20.0  -
  86400.0  /  36525.0  /  +  -
  36525.0  *  8.0  24.0  /  +
  。 ★
 ★
看数摞 数摞已空! ★
73.8274273594 低精度定气计算 显 4007.8138116196 ★


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


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2011/4/2 18:18:00

呵呵,问题发现了,是高精度计算词出了问题

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

返回版面帖子列表

天文算法讨论








签名