【发布时间】:2022-05-07 07:20:13
【问题描述】:
我正在将一个 javascript 函数转换为 java,并且不明白下面代码中按位或的目的:
-
(Math.tan(PHId)) ^ 2)- 这是确保数字始终以 2 结尾吗? -
(Et ^ 6)该代码是用于将爱尔兰网格参考转换为纬度和经度的库的一部分:http://www.nearby.org.uk/tests/geotools2.js
GT_Math.E_N_to_Lat = function(East, North, a, b, e0, n0, f0, PHI0, LAM0) { //Un-project Transverse Mercator eastings and northings back to latitude. //Input: - _ //eastings (East) and northings (North) in meters; _ //ellipsoid axis dimensions (a & b) in meters; _ //eastings (e0) and northings (n0) of false origin in meters; _ //central meridian scale factor (f0) and _ //latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees. //\'REQUIRES THE \"Marc\" AND \"InitialLat\" FUNCTIONS //Convert angle measures to radians var Pi = 3.14159265358979; var RadPHI0 = PHI0 * (Pi / 180); var RadLAM0 = LAM0 * (Pi / 180); //Compute af0, bf0, e squared (e2), n and Et var af0 = a * f0; var bf0 = b * f0; var e2 = (Math.pow(af0,2) - Math.pow(bf0,2)) / Math.pow(af0,2); var n = (af0 - bf0) / (af0 + bf0); var Et = East - e0; //Compute initial value for latitude (PHI) in radians var PHId = GT_Math.InitialLat(North, n0, af0, RadPHI0, n, bf0); //Compute nu, rho and eta2 using value for PHId var nu = af0 / (Math.sqrt(1 - (e2 * ( Math.pow(Math.sin(PHId),2))))); var rho = (nu * (1 - e2)) / (1 - (e2 * Math.pow(Math.sin(PHId),2))); var eta2 = (nu / rho) - 1; //Compute Latitude var VII = (Math.tan(PHId)) / (2 * rho * nu); var VIII = ((Math.tan(PHId)) / (24 * rho * Math.pow(nu,3))) * (5 + (3 * (Math.pow(Math.tan(PHId),2))) + eta2 - (9 * eta2 * (Math.pow(Math.tan(PHId),2)))); var IX = ((Math.tan(PHId)) / (720 * rho * Math.pow(nu,5))) * (61 + (90 * ((Math.tan(PHId)) ^ 2)) + (45 * (Math.pow(Math.tan(PHId),4)))); var E_N_to_Lat = (180 / Pi) * (PHId - (Math.pow(Et,2) * VII) + (Math.pow(Et,4) * VIII) - ((Et ^ 6) * IX)); return (E_N_to_Lat); }
-
您能否进一步解释一下您不完全了解的内容?
^is bitwise XOR。 -
我不确定javascript中 (Math.tan(PHId)) 的结果是什么类型?我想这是某种算术捷径,但如果结果是双精度/浮点数,我看不出它是如何工作的。谢谢,马克。
-
好的,我发现了这一点:在执行按位运算之前,JavaScript 将数字转换为 32 位有符号整数。执行按位运算后,结果将转换回 64 位 JavaScript 数字。
-
你有这个算法的描述吗?
-
不抱歉,只有 javascript 函数中的注释。
标签: javascript bitwise-operators