首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阿坦在哈沃辛公式中是怎么出现的?

阿坦在哈沃辛公式中是怎么出现的?
EN

Stack Overflow用户
提问于 2016-07-11 08:35:23
回答 1查看 2.5K关注 0票数 2

我对这件事有点陌生。我最近要把数学方程式转换成代码。所以我开始练习一些简单的公式,比如斐波纳契数和哈弗辛公式。

但是我有点困惑于下面的引用中的haversine代码;

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

代码语言:javascript
复制
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;

并且我有原始哈弗森公式从这里开始的参考资料。

然后,注意这条线,

代码语言:javascript
复制
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

其中哪一部分来源于维基百科中原始的哈弗森公式?在这些图上我根本没有找到任何切线。我是不是漏掉了什么?如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-07-11 09:02:26

这只是Haversine公式的另一个公式。

来自函数

代码语言:javascript
复制
arctan(x) = arcsin(x / sqrt(x^2 + 1))

使用X = x / sqrt(x^2 + 1),您将得到以下结果:

代码语言:javascript
复制
x = X / sqrt(1 - X^2)

因此:

代码语言:javascript
复制
arcsin(X) = arctan(X / sqrt(1 - X^2))

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

代码语言:javascript
复制
d = 2R * arcsin(sqrt(a))
  = 2R * arctan(sqrt(a) / sqrt(1 - a))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38302476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档