阿丹如何出现在胡萝卜素配方中?

时间:2016-07-11 08:35:24

标签: trigonometry haversine

我对此有点新意。我最近要将数学方程式转换为代码。所以我开始练习简单的公式,比如Fibonacci数和hasrsine公式。

但是我对以下参考文献中的半身代码感到困惑;

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

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));

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

2 个答案:

答案 0 :(得分:3)

按照定义

  

甲肝(θ)= 2 (θ/ 2)

如果 hav (θ)= a,那么

  

θ= 2 arcsin sqrt (a))

expressing arcsine with arctangent之后,这变为:

  

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

更新澄清以回应OP的评论:

某些角度θ的半正函数 hav (θ)是 sin 2 (θ/ 2)的简写。给定球体上的两个点并且θ是将这些点与球体的中心连接的半径之间的平坦角度,则半正式公式表示具有这些点的晶格(φ)和经度(λ)值的半正弦函数。因此,您可以通过已知值φ和λ计算半正函数的值(在代码中由变量ProcessBuilder pb = new ProcessBuilder("./words", "amo", "amas", "amat"); 表示)。然后,您可以从a找到θ的值(通过变量a在代码中表示)。我上面的解释完全集中在那部分。然后使用已知值θ(和半径c),您可以计算大圆距离R

答案 1 :(得分:2)

这只是Haversine公式的另一种表述。

来自https://en.wikipedia.org/wiki/Inverse_trigonometric_functions#Relationships_among_the_inverse_trigonometric_functions

---- Connecting to ftp.example.com (xx.xxx.xx.xxx) port 21
**** Socket error (Connection timed out) - reconnecting
---- Closing control socket
---- Connecting to ftp.example.com (xx.xxx.xx.xxx) port 21
**** Socket error (Connection timed out) - reconnecting
---- Closing control socket
---- Connecting to ftp.example.com (xx.xxx.xx.xxx) port 21

使用arctan(x) = arcsin(x / sqrt(x^2 + 1)) ,您最终得到:

X = x / sqrt(x^2 + 1)

因此:

x = X / sqrt(1 - X^2)

然后在维基百科的Haversine公式中:

arcsin(X) = arctan(X / sqrt(1 - X^2))