我需要使用Javascript找到两个坐标的球形距离。我为这个项目使用了很多Wolfram,并且发现这个公式d = cos ^( - 1)(P·Q)[参考:http://mathworld.wolfram.com/SphericalDistance.html]。所以我知道P·Q是所讨论的两个坐标的点积。这导致找到我发现的Dot产品=(x1 * x2 + y1 * y2 + z1 * z2)[参考:http://en.wikipedia.org/wiki/Dot_product]。所以我把下面的方法放在一起,每次都得到NaN(不是数字)。JavaScript中的球形距离
function ThreeDimensionalDistance(x1,y1,z1,x2,y2,z2){
return Math.acos(x1*x2 + y1*y2 + z1*z2);
}
这里有两组样本数据的我用,我想不通为什么我得到NaN的。我是否缺少一些小的东西,我是否需要将我的数字转换为某些东西,以便与arc cos一起使用?预先感谢您的任何帮助。
样品1 X:-1.7769265970284516,Y:-5.129885707200497,Z:-2.554761143401265 X:-0.8336414256732807,Y:-1.9876462173033347,Z:5.599491449072957 距离:NaN的 样品2 X:-0.8336414256732807,Y: -1.9876462173033347,Z:5.599491449072957 X:0.8447772905770565,Y:4.252407300473133,Z:4.147696165367961 距离:NaN的
这个问题实际上并不属于这里(它实际上是一个数学问题),但问题在于:您尚未将向量归一化为**单位**球体(也就是说,您的点P和Q不在单位上领域)。 – mc10