【发布时间】:2014-01-29 20:09:00
【问题描述】:
我需要使用 Javascript 找到两个坐标的球面距离。我在这个项目中经常使用 Wolfram,并找到了这个公式 d=cos^(-1)(P·Q) [参考:http://mathworld.wolfram.com/SphericalDistance.html]。所以我知道 P·Q 是两个坐标的点积。这导致找到点积,我发现它为 DotProduct = (x1*x2 + y1*y2 + z1*z2) [参考:http://en.wikipedia.org/wiki/Dot_product]。所以我把下面的方法放在一起,每次都得到NaN(Not a Number)。
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 距离:南 样品 2 X:-0.8336414256732807,Y:-1.9876462173033347,Z:5.599491449072957 X:0.8447772905770565,Y:4.252407300473133,Z:4.147696165367961 距离:NaN
【问题讨论】:
-
这个问题实际上不属于这里(它实际上是一个数学问题),但问题是:你没有将你的向量标准化到 unit 球体(也就是你的观点P 和 Q 不在单位球面上)。
标签: javascript geometry computer-science