Algorithm 圆形扇区内的点

Algorithm 圆形扇区内的点,algorithm,geolocation,geometry,orientation,Algorithm,Geolocation,Geometry,Orientation,我正在开发一个移动应用程序。我的应用程序获取用户的位置和方向,然后在其位置附近显示一些感兴趣的点。 现在,我需要知道用户是否在兴趣点前面。我的想法是基于他的位置和方向,使用一个小半径(约5米)的圆形扇形,我想知道是否有公式,或者是否有人对如何实现这一点有建议。我假设你有Lat/Lon坐标和用户移动/查看方位角。 您可以计算对象的方向及其方位(方位角),并与您的限制进行比较 注:GPS/地理定位很难保证5米的精度 这包含了所有需要的公式。摘录: distance JavaScript: var

我正在开发一个移动应用程序。我的应用程序获取用户的位置和方向,然后在其位置附近显示一些感兴趣的点。
现在,我需要知道用户是否在兴趣点前面。我的想法是基于他的位置和方向,使用一个小半径(约5米)的圆形扇形,我想知道是否有公式,或者是否有人对如何实现这一点有建议。

我假设你有Lat/Lon坐标和用户移动/查看方位角。 您可以计算对象的方向及其方位(方位角),并与您的限制进行比较

注:GPS/地理定位很难保证5米的精度

这包含了所有需要的公式。摘录:

distance
JavaScript: 
var R = 6371000; // 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;

bearing
JavaScript:
(all angles in radians)
var y = Math.sin(λ2-λ1) * Math.cos(φ2);
var x = Math.cos(φ1)*Math.sin(φ2) -
        Math.sin(φ1)*Math.cos(φ2)*Math.cos(λ2-λ1);
var brng = Math.atan2(y, x).toDegrees();