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; //球面坐标旋转
|