已知两点坐标,计算两点的方向角度

在已知两点坐标的情况,我们如果去计算两点的角度呢?

在计算角度之前,先了解下会用到的函数Math.atan2 

Math.atan2()

概述

Math.atan2() 返回从原点(0,0)到(x,y)点的线段与x轴正方向之间的平面角度(弧度值),也就是Math.atan2(y,x)

语法

Math.atan2(y, x) 

参数

y, x

数值

描述

atan2 方法返回一个 -pi 到 pi 之间的数值,表示点 (x, y) 对应的偏移角度。这是一个逆时针角度,以弧度为单位,正X轴和点 (x, y) 与原点连线 之间。注意此函数接受的参数:先传递 y 坐标,然后是 x 坐标。

atan2 接受单独的 x 和 y 参数,而 atan 接受两个参数的比值。

由于 atan2 是 Math 的静态方法,所以应该像这样使用:Math.atan2(),而不是作为你创建的 Math 实例的方法。

还用到leaflet的转换方式latLngToContainerPoint把地理坐标转换成容器相应的像素坐标

/**
 * 求两点坐标角度
 * @param startLatlng  坐标
 * @param endLatlng  坐标
 *   */ 
function getAngle(startLatlng, endLatlng){
    // 转换容器的相应像素坐标
    let start = map.latLngToContainerPoint(startLatlng),
        end = map.latLngToContainerPoint(endLatlng)
    let y = end.y - start.y,
        x = end.x - start.x
    var angle = Math.atan2(y, x) * ( 180 / Math.PI) + 90
    
    return angle
}

其他计算方式:

var angle = 360*Math.atan(y/x)/(2*Math.PI);

 这里得注意每个象限的不同情况了

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值