我试图查看给定的一对(lat,long)是否属于圆形区域。圆的中心是已知的(纬度,长值)以及半径。我用过的approcah是:
公式:
a = ( sin(delta_lat/2) )^2 + cos (vp_Current.v_Latitude) *
cos(vp_CentreOfCircle.v_Latitude) * ( sin(delta_long/2) )^2;
c = 2 * atan2( sqrt(a), sqrt(1-a) );
d = R * c;
其中:R = 6371 Km.
,delta_lat = lat2 - lat1
,delta_long = long2 - long1
我已经在C中编写了代码,但是当我输入以下数据时,输出显示该点在外面而不是在圆圈内(该点在我在谷歌地图上检查的位置内)。
Centre(lat/long) = (19.228177, 72.685547)
Given point = (18.959999, 72.819999)
Radius = 30 miles (about 49 Km but entered as 50 in the program).
奇怪的是,如果我输入半径为5000,输出就在里面说,但不是500.我不知道问题出在哪里......如果有人能分享一些指示,真的很感激......谢谢
答案 0 :(得分:4)
(我在这一切方面都不是专家,但环顾四周寻找教育很有趣)
由于Harvesin函数的参数是弧度,纬度和经度是否应该从度数转换为弧度?
答案 1 :(得分:0)
首先,我要检查两点(中心和给定)之间的距离最终是什么。然后我会确保你使用所有正确的单位(米v。英里,弧度v。度)。
如果你没有在那里发现错误,我会开始查看你的Haversine实施与wikipedia上发布的实施之一。
希望有所帮助。