以文本方式查看主题 - 中华农历论坛 (http://bbs.nongli.net/index.asp) -- 历法知识 (http://bbs.nongli.net/list.asp?boardid=2) ---- 求助?JavaScript转delphi (http://bbs.nongli.net/dispbbs.asp?boardid=2&id=27831) |
-- 作者:delcomp -- 发布时间:2010/5/22 22:44:00 -- 求助?JavaScript转delphi function CD2DP(z,L,fa,gst){ //赤道坐标转为地平坐标 var a=new Array(z[0]+Math.PI/2-gst-L, z[1], z[2]); //转到相对于地平赤道分点的赤道坐标 a = llrConv( a, Math.PI/2-fa ); a[0] = rad2mrad( Math.PI/2-a[0] ); return a; } delphi: function CD2DP(z:tcor;L,fa,gst:double):tcor; //赤道坐标转为地平坐标 var a:tcor; begin a[0]:=z[0]+ PI/2-gst-L;a[1]:=z[1];a[2]:=z[2]; //转到相对于地平赤道分点的赤道坐标 a:= llrConv( a, PI/2-fa ); a[0]:= rad2mrad( PI/2-a[0] ); result:=a; end; 编程验证JavaScript和delphi是否一致时发现问题。 用下面这个验证JavaScript: <html><br/><title>测试javascript函数</title><br/><head><br/><br/><br/><br/><br/></head><br/><br/><body><br/><br/><br/><br/>测试javascript函数<br/><br/><br/><br/><button>点击测试函数</button><br/><br/><br/><br/>p1:<input type="text" name="p1" id="p1"/> <br/>p2:<input type="text" name="p2" id="p2"/> <br/>p3:<input type="text" name="p3" id="p3"/> <br/>p4:<input type="text" name="p4" id="p4"/> <br/>p5:<input type="text" name="p5" id="p5"/> <br/>p6:<input type="text" name="p6" id="p6"/> <br/><br/><br/><br/>result1: <input type="text" name="r1" id="result1"/> <br/>result2: <input type="text" name="r2" id="result2"/> <br/>result3: <input type="text" name="r3" id="result3"/> <br/><br/></body><br/></html> 当p1=2.3,p2=2.1时r1,r2均为NaN,取其他数值时,r1,r2有数值了,但和delphi的程序不一样。 下面这些函数验证都已通过,没发现问题 function rad2mrad(v:double):double; //对超过0-2PI的角度转为0-2PI function rad2rrad(v:double):double; //对超过-PI到PI的角度转为-PI到PI function mod2(a,b:double):double; //临界余数(a与最近的整倍数b相差的距离) function llr2xyz(JW:tcor):tcor; //球面转直角坐标 function xyz2llr(xyz:tcor):tcor; //直角坐标转球 function llrConv(JW:tcor;E:double):tcor; //球面坐标旋转 |