电子围栏的实现原理

序言

整理下电子围栏的算法.

先看下经纬度的含义(^_^),与地球的关联.这个会在算法中有影响,你在考虑算法的过程中应该会联想到相关的问题.cuiyaonan2000@163.com

  1. 经线(英文:longitude,简写long): 连接南北极的圆
  2. 纬线(英文:latitude,简写lat): 以赤道为中心的圆

另外关于地理坐标的值(算法会考虑这些):

  • 经度:东经为正数,西经为负数。
  • 纬度:北纬为正数,南纬为负数。

规则的多边形

这种的处理比较简单具体思路如下.

在坐标系中需要计算在规则多边形中T点是是否在范围内只需要满足如下的2点需求(这里算法需要考虑坐标横跨北纬南纬以及东经西经的问题cuiyaonan2000@163.com):

  1. C-lat <= T-lat <= B-lat
  2. C-Long <= T-Long <= B-Long

如上的是以BC为对角线的判断,当然我们可以同时增加AD的对角线的判断,来使结果更加正确. 

规则的圆形

圆形电子围栏的实现有种简单的方式,就是根据半径来计算目标点与中心原点的直径是否超过了它的半径.这里介绍的是稍微复杂的一种算法.

算法太复杂研究中

不规则的区域

不规则计算规则也是比较简单的.

如下图所示:红色的点是目标点. 以红色的点为中心点画一条垂直于Longitude的线.

如果该红色的点左右两侧的交点数量是奇数,则表示该红色的点在电子围栏之内.

如果该红色的点左右两侧的交点数量是偶数,则表示该红色的点不在电子围栏之内.

其实如上的规则利用了现实的情况,我们的电子围栏边界都是直线,且都是一个封闭的区域.必然会产生奇数或者偶数的交点cuiyaonan2000@163.com

 交点的生成规则

结合上图所示.我们需要知道 交点只能跟一条边线产生.

如下图所示最右边有一个交点 正好在A边线和B边线的合并处.

该交点属于B边线,因为(同时也是交点产生的必要条件cuiyaonan2000@163.com):

  • 边线必须有一端在交点的上方,可以覆盖
  • 边线必须有一端在交点的下方,不可以覆盖,即交点不能跟边线低点重合

 

 更复杂的一个情况

可以看到如下图所示: 横线直接与B边线重合

但是这里只有C边线有交点,因为只有C边线满足如上的规则,

因为:有一点在水平线上有一点在点在水平线下.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiyaonan2000

给包烟抽吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值