繁体   English   中英

获取垂直轴(北轴)的两点(LatLng)之间的角度

[英]Get angle between two point(LatLng) with vertical axis (north axis)

目前,我在Google地图上有两个点(LatLng)A和B。 我以图像如下显示我的问题: 在此处输入图片说明

沿垂直轴旋转设备时,我想在点A和B之间获得角度@ 在此处输入图片说明

我想获得AB与北轴(y轴)之间的角度。我该怎么做。 我创建了一个获取角度的函数,但它返回null :(

    public double getAngleTwoPoint(LatLng point1,LatLng point2){
    double lat1=point1.latitude;
    double lat2=point2.latitude;
    double long1=point1.longitude;
    double long2=point2.longitude;
    double deltaLong=long2-long1;
    double angle = Math.atan2(Math.sin(deltaLong)*Math.cos(lat2), Math.cos(lat1)*Math.sin(lat2)-Math.sin(lat1)*Math.cos(lat2)*Math.cos(deltaLong));     
    return Math.toDegrees(angle);
}

您可以使用此公式来获取经纬度之间的夹角。

θ= atan2(sin(Δlong)* cos(lat2),cos(lat1)* sin(lat2)-sin(lat1)* cos(lat2)* cos(Δlong))

注意,在使用此公式和Δlong= long2-long1之前,应将角度(θ)转换为弧度。

atan2是几乎所有编程语言(大多数在Math软件包中)中发现的常见函数。 通常,还有用于度和弧度之间转换的函数(也在Math软件包中)。

请记住,atan2返回的值在-π... +π范围内,以将结果转换为罗盘方位,您需要将θ乘以180 /π然后使用(θ+ 360)%360,其中%是模数除法操作返回除法的其余部分。

以下链接是涉及纬度和经度的公式的一个很好的资源。 他们还提供公式的Javascript实现。 实际上,答案基于此页面上的信息:

http://www.yourhomenow.com/house/haversine.html

如果你有三角形

CB
A

那么AB与y轴之间的夹角等于CAB夹角。 tg(CAB)= BC / AC,您需要角度,所以实际上您想要的是arctg(BC / AC)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM