以文本方式查看主题

-  中华农历论坛  (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;  //球面坐标旋转