android计算距离顶部的距离,(lua版)计算距离的逻辑是从Android的提供的接口(Location.distanceBetween)中拔来的,应该是最精确的方法了...
---coding by yuangu(lifulinghan@aol.com)
--用于计算2个pgs之间的距离
function computeDistance(lat1, lon1,
lat2, lon2)
-- Based on http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf
-- using the "Inverse Formula" (section 4)
local MAXITERS = 20;
-- Convert lat/long to radians
lat1 = math.rad(lat1); -- lat1 * math.pi / 180.0;
lat2 = math.rad(lat2); --lat2 * math.pi / 180.0;
lon1 = math.rad(lon1); --lon1 * math.pi / 180.0;
lon2 = math.rad(lon2); --lon2 * math.pi / 180.0;
local a = 6378137.0; -- WGS84 major axis
local b = 6356752.3142; -- WGS84 semi-major axis
local f = (a - b) / a;
local aSqMinusBSqOverBSq = (a * a - b * b) / (b * b);
local L = lon2 - lon1;
local A = 0.0;
local U1 = math.atan((1.0 - f) * math.tan(lat1));
local U2 = math.atan((1.0 - f) * math.tan(lat2));
local cosU1 = math.cos(U1);
local cosU2 = math.cos(U2);
local sinU1 = math.sin(U1);
local sinU2 = math.sin(U2);
local cosU1cosU2 = cosU1 * cosU2;
local sinU1sinU2 = sinU1 * sinU2;
local sigma = 0.0;
local deltaSigma = 0.0;
local cosSqAlpha = 0.0;
local cos2SM = 0.0;
local cosSigma = 0.0;
local sinSigma = 0.0;
local cosLambda = 0.0;
local sinLambda = 0.0;
local lambda = L; -- initial guess
for iter = 0, MAXITERS - 1 do
local lambdaOrig = lambda;
cosLambda = math.cos(lambda);
sinLambda = math.sin(lambda);
local t1 = cosU2 * sinLambda;
local t2 = cosU1 * sinU2 - sinU1 * cosU2 * cosLambda;
local sinSqSigma = t1 * t1 + t2 * t2;
sinSigma = math.sqrt(sinSqSigma);
cosSigma = sinU1sinU2 + cosU1cosU2 * cosLambda;
sigma = math.atan2(sinSigma, cosSigma);
local sinAlpha = 0.0
if (sinSigma ~= 0) then
sinAlpha = cosU1cosU2 * sinLambda / sinSigma
end
cosSqAlpha = 1.0 - sinAlpha * sinAlpha;
cos2SM = 0.0
if cosSqAlpha ~= 0 then
cos2SM = cosSigma - 2.0 * sinU1sinU2 / cosSqAlpha;
end
local uSquared = cosSqAlpha * aSqMinusBSqOverBSq;
A = 1 + (uSquared / 16384.0) *
(4096.0 + uSquared *
(-768 + uSquared * (320.0 - 175.0 * uSquared)));
local B = (uSquared / 1024.0) *
(256.0 + uSquared *
(-128.0 + uSquared * (74.0 - 47.0 * uSquared)));
local C = (f / 16.0) *
cosSqAlpha *
(4.0 + f * (4.0 - 3.0 * cosSqAlpha));
local cos2SMSq = cos2SM * cos2SM;
deltaSigma = B * sinSigma *
(cos2SM + (B / 4.0) *
(cosSigma * (-1.0 + 2.0 * cos2SMSq) -
(B / 6.0) * cos2SM *
(-3.0 + 4.0 * sinSigma * sinSigma) *
(-3.0 + 4.0 * cos2SMSq)));
lambda = L +
(1.0 - C) * f * sinAlpha *
(sigma + C * sinSigma *
(cos2SM + C * cosSigma *
(-1.0 + 2.0 * cos2SM * cos2SM)));
local delta = (lambda - lambdaOrig) / lambda;
if (math.abs(delta) < 1.0e-12) then
break;
end
end
return b * A * (sigma - deltaSigma);
end
--for test
print(computeDistance(34.8082342, 113.6125439, 34.8002478, 113.659779))
android计算距离顶部的距离,(lua版)计算距离的逻辑是从Android的提供的接口(Location.distanceBetween)中拔来的,应该是最精确的方法了...相关推荐
- 深入理解Android音视频同步机制(二)ExoPlayer的avsync逻辑
深入理解Android音视频同步机制(一)概述 深入理解Android音视频同步机制(二)ExoPlayer的avsync逻辑 深入理解Android音视频同步机制(三)NuPlayer的avsync ...
- matlab计算fft旋转因子表,一种用于FFT中旋转因子乘运算的操作数地址生成方法与流程...
本发明属于计算机技术领域,涉及一种用于FFT中旋转因子乘运算的操作数地址生成方法. 背景技术: 离散傅里叶变换(DFT)是数理方程.线性系统分析.信号处理与仿真等领域中的一种常见方法,特别是快速傅里叶 ...
- vue获取元素距离页面顶部的距离_VUE实时监听元素距离顶部高度的操作
效果图如下所示 .html 今日热门 今日热销 .js mounted(){ window.addEventListener('scroll',this.handleScrollx,true) }, ...
- javascript 计算两个坐标的距离 米_土方全面应用计算
各种土方量的计算方法汇总 8.2.1 DTM法土方计算 由DTM模型来计算土方量是根据实地测定的地面点坐标(X,Y,Z)和设计高程,通过生成三角网来计算每一个三棱锥的填挖方量,最后累计得到指定范围内 ...
- DialogFragment 顶部弹出 设置距离顶部的距离
自定义dialog 默认的显示位置是window 的位置 我们可以通过dialog或者窗口对象 window 然后通过window 去设置dialog的上下中的位置 例如 dialog.getWi ...
- EXCEL中批量计算“已知一点坐标、方位角、距离,求坐标点”
前言 日常工作中有时需要计算已知点.正本方位角.距离计算坐标点.如下图 已知:蓝点坐标.正本方向夹角为方位角,蓝点与未知点(红色)之间的距离,求红色点坐标. 小O地图Excel插件版提供在excel表 ...
- 图片头顶距离顶部百分比怎么修改_「推荐」绘画中的头部怎么画?超详细教你如何正确绘画头部技巧...
头部怎么画?怎样才能画好头部?如何最正确绘画头部?学习绘画难吗?绘画初学者怎么学习?想必这些都是绘画初学者们经常在想的问题,人物的头部无疑是身体最关键的一个部位,在绘画中也是非常重要,他可以用来确定人 ...
- gps两点距离 php,PHP应用:PHP计算百度地图两个GPS坐标之间距离的方法
<PHP应用:PHP计算百度地图两个GPS坐标之间距离的方法>要点: 本文介绍了PHP应用:PHP计算百度地图两个GPS坐标之间距离的方法,希望对您有用.如果有疑问,可以联系我们. 本文实 ...
- R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离、dist函数计算矩阵中两两元素的曼哈顿距离
R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离.dist函数计算矩阵中两两元素的曼哈顿距离 目录 R语言计算曼哈顿距离(Manhattan Distance ...
最新文章
- 太任性!17 岁少年买不到回国机票,因“泄愤”攻击航司系统,被判刑 4 年
- 全程360°4K!CNN将VR直播美国超级日全食
- Winform中实现将照片剪贴到系统剪切板中(附代码下载)
- Sqlserver2014怎样配置远程连接
- 解决vs2005打开vs2008应用程序方法
- 2019-5-30-websocket下readyState常量
- 本地更新github项目_GitHub开源项目2019-03-29更新精选
- 算法之路——插入排序篇3:希尔排序
- Listener监听器已经Listener的小案例
- vscode 下载加速方法
- 通过js脚本处理剪切板(简单而强大的效率工具)
- 消除input标签的自动填充 白色背景,及更改字体颜色
- 410c 上安装中文版本的答题器游戏demo
- foxmail怎么群发邮件
- 按关键词搜索淘宝商品接口调用展示
- 抖音域名防封,抖音网址免拦截提示,抖音网站防红,域名报毒解决处理生成方法
- C++编写布尔表达式
- 1.2命题公式及其赋值
- 最牛掰得冒泡排序,不接受任何反驳
- Linux系列——自动化批量安装软件
热门文章
- python自动汇总excel_RPA手把手:Python轻松实现EXCEL自动化
- Navicat连接mysql8.0.1版本出现1251--Client
- Apache JMeter 背景颜色修改
- IDEA Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/public/)
- linux 动态传参执行shell脚本
- maven打包时跳过测试
- asp.net + ajax + sqlserver 自动补全功能,asp.net+ajax+sqlserver自动补全功能实现解析
- C语言 文件读写 fseek 函数 - C语言零基础入门教程
- Linux java 生效不了,linux jdk 不生效怎么办
- 蓝牙小电池图标_提高MacBook电池寿命的15个技巧