我对这件事有点陌生。我最近要把数学方程式转换成代码。所以我开始练习一些简单的公式,比如斐波纳契数和哈弗辛公式。
但是我有点困惑于下面的引用中的haversine代码;
一般来说,他们所做的是,
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;并且我有原始哈弗森公式从这里开始的参考资料。
然后,注意这条线,
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));其中哪一部分来源于维基百科中原始的哈弗森公式?在这些图上我根本没有找到任何切线。我是不是漏掉了什么?如有任何建议,将不胜感激。
发布于 2016-07-11 09:02:26
这只是Haversine公式的另一个公式。
来自函数
arctan(x) = arcsin(x / sqrt(x^2 + 1))使用X = x / sqrt(x^2 + 1),您将得到以下结果:
x = X / sqrt(1 - X^2)因此:
arcsin(X) = arctan(X / sqrt(1 - X^2))然后在维基百科的Haversine公式中:
d = 2R * arcsin(sqrt(a))
= 2R * arctan(sqrt(a) / sqrt(1 - a))https://stackoverflow.com/questions/38302476
复制相似问题