gpt4 book ai didi

javascript - JavaScript 中的球面距离

转载 作者:行者123 更新时间:2023-12-02 17:50:06 25 4
gpt4 key购买 nike

我需要使用 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(不是数字)。

        function ThreeDimensionalDistance(x1,y1,z1,x2,y2,z2){

return Math.acos(x1*x2 + y1*y2 + z1*z2);

}

这是我使用的两组示例数据,我不明白为什么我得到 NaN。我是否遗漏了一些小东西,我是否需要将我的数字转换为某种东西以便他们可以使用 arc cos?预先感谢您的任何帮助。

样本1X:-1.7769265970284516,Y:-5.129885707200497,Z:-2.554761143401265X:-0.8336414256732807,Y:-1.9876462173033347,Z:5.599491449072957距离:NaN sample 2X:-0.8336414256732807,Y:-1.9876462173033347,Z:5.599491449072957X:0.8447772905770565,Y:4.252407300473133,Z:4.147696165367961距离:NaN

最佳答案

我做了一些数学计算,所以请尝试以下操作:

function threeDimensionalDistance(x1, y1, z1, x2, y2, z2) {
// Assume that the points are on the same sphere
var radius = Math.sqrt(x1 * x1 + y1 * y1 + z1 * z1);

// Calculate normalized spherical distance
var dotProduct = x1 * x2 + y1 * y2 + z1 * z2;
var normalizedDistance = Math.acos(dotProduct / (radius * radius));

// Calculate actual distance
var distance = normalizedDistance * radius;

return distance;
}

我所做的一个小更改是将您的方法重命名为以小写字母开头,以遵循标准 JavaScript 样式指南。

关于javascript - JavaScript 中的球面距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21441547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com