gpt4 book ai didi

trigonometry - atan怎么出现在haversine公式中?

转载 作者:行者123 更新时间:2023-12-04 19:14:01 32 4
gpt4 key购买 nike

我对此有点陌生。我最近要将数学方程式转换为代码。因此,我开始练习简单的公式,例如斐波那契数列和半正弦公式。

但我对以下引用资料中的半正弦代码有点困惑;

一般来说,他们所做的是,

var R = 6371e3; // metres
var φ1 = lat1.toRadians();
var φ2 = lat2.toRadians();
var Δφ = (lat2-lat1).toRadians();
var Δλ = (lon2-lon1).toRadians();

var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
Math.cos(φ1) * Math.cos(φ2) *
Math.sin(Δλ/2) * Math.sin(Δλ/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

var d = R * c;

我有原始 haversine formula from here 的引用。

然后,注意这一行,

var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

它的哪一部分来自维基百科中的原始 haversine 公式?我在这些图表上根本没有发现任何切线。我在这里错过了什么吗?任何建议表示赞赏。

最佳答案

根据定义

hav(θ)=sin2(θ/2)

如果(θ)=a,则

θ = 2 arcsin(sqrt(a))

expressing arcsine with arctangent 之后,这就变成了:

θ = 2 arctan(sqrt(a)/(sqrt(1-a)))


更新 针对 OP 评论的澄清:

某个角度 θ 的半正弦函数 hav(θ) 是 sin2(θ/2) 的简写。给定球体上的两个点,θ 是连接这些点与球体中心的半径之间的平角,半正弦公式用这些点的纬度 (φ) 和经度 (λ) 值表示半正弦函数。因此,您可以通过已知值 φ 和 λ 计算 haversine 函数的值(在您的代码中用变量 a 表示)。然后您可以从 a 中找到 θ 的值(在您的代码中用变量 c 表示)。我上面的解释正是集中在那个部分。然后使用已知的 θ 值(和半径 R),您可以计算大圆距离 d

关于trigonometry - atan怎么出现在haversine公式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38302476/

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